增加openApi 以及会员接口支持手机号/会员卡号二合一查询

This commit is contained in:
Yifei Kuang 2024-12-26 15:37:59 +08:00
parent 7bc7523ad5
commit d6e6f57786
9 changed files with 211 additions and 106 deletions

View File

@ -26,9 +26,13 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.PathVariable;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import java.util.List;
@Tag(name = "收支项目管理", description = "收支项目相关的所有接口")
@RestController
@RequestMapping("/basic/incomeExpense")
public class IncomeExpenseController {
@ -39,28 +43,36 @@ public class IncomeExpenseController {
this.incomeExpenseService = incomeExpenseService;
}
@Operation(summary = "获取收支项目列表", description = "分页获取收支项目信息")
@PostMapping("pageList")
public Response<Page<IncomeExpenseVO>> getIncomeExpensePageList(@RequestBody QueryIncomeExpenseDTO queryIncomeExpenseDTO) {
return incomeExpenseService.getIncomeExpensePageList(queryIncomeExpenseDTO);
}
@Operation(summary = "新增或更新收支项目", description = "新增或更新收支项目信息")
@PostMapping("addOrUpdate")
public Response<String> addOrUpdateIncomeExpense(@RequestBody AddOrUpdateIncomeExpenseDTO addOrUpdateIncomeExpenseDTO) {
return incomeExpenseService.addOrUpdateIncomeExpense(addOrUpdateIncomeExpenseDTO);
}
@Operation(summary = "批量删除收支项目", description = "根据ID批量删除收支项目")
@DeleteMapping("deleteBatch")
public Response<String> deleteIncomeExpense(@RequestParam("ids") List<Long> ids) {
public Response<String> deleteIncomeExpense(@Parameter(description = "收支项目ID列表") @RequestParam("ids") List<Long> ids) {
return incomeExpenseService.deleteBatchIncomeExpense(ids);
}
@Operation(summary = "更新收支项目状态", description = "批量更新收支项目状态")
@PostMapping("updateStatus")
public Response<String> updateIncomeExpenseStatus(@RequestParam("ids") List<Long> ids, @RequestParam("status") Integer status) {
public Response<String> updateIncomeExpenseStatus(
@Parameter(description = "收支项目ID列表") @RequestParam("ids") List<Long> ids,
@Parameter(description = "状态值") @RequestParam("status") Integer status) {
return incomeExpenseService.updateIncomeExpenseStatus(ids, status);
}
@Operation(summary = "获取收支项目列表", description = "根据类型获取收支项目列表")
@GetMapping("list/{type}")
public Response<List<IncomeExpenseVO>> getIncomeExpenseList(@PathVariable("type") String type) {
public Response<List<IncomeExpenseVO>> getIncomeExpenseList(
@Parameter(description = "收支类型") @PathVariable("type") String type) {
return incomeExpenseService.getIncomeExpenseListByType(type);
}
}

View File

@ -19,9 +19,13 @@ import com.wansenai.service.basic.IOperatorService;
import com.wansenai.utils.response.Response;
import com.wansenai.vo.basic.OperatorVO;
import org.springframework.web.bind.annotation.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;
@Tag(name = "操作员管理", description = "操作员相关的所有接口")
@RestController
@RequestMapping("/basic/operator")
public class OperatorController {
@ -32,28 +36,36 @@ public class OperatorController {
this.operatorService = operatorService;
}
@Operation(summary = "获取操作员列表", description = "分页获取操作员信息")
@PostMapping("pageList")
public Response<Page<OperatorVO>> getOperatorPageList(@RequestBody QueryOperatorDTO queryOperatorDTO) {
return operatorService.getOperatorPageList(queryOperatorDTO);
}
@Operation(summary = "新增或更新操作员", description = "新增或更新操作员信息")
@PostMapping("addOrUpdate")
public Response<String> addOrUpdateOperator(@RequestBody AddOrUpdateOperatorDTO addOrUpdateOperatorDTO) {
return operatorService.addOrUpdateOperator(addOrUpdateOperatorDTO);
}
@Operation(summary = "删除操作员", description = "批量删除操作员")
@DeleteMapping("delete")
public Response<String> deleteOperator(@RequestParam("ids") List<Long> ids) {
public Response<String> deleteOperator(@Parameter(description = "操作员ID列表") @RequestParam("ids") List<Long> ids) {
return operatorService.deleteBatchOperator(ids);
}
@Operation(summary = "更新操作员状态", description = "批量更新操作员状态")
@PostMapping("updateStatus")
public Response<String> updateOperatorStatus(@RequestParam("ids") List<Long> ids, @RequestParam("status") Integer status) {
public Response<String> updateOperatorStatus(
@Parameter(description = "操作员ID列表") @RequestParam("ids") List<Long> ids,
@Parameter(description = "状态值") @RequestParam("status") Integer status) {
return operatorService.updateOperatorStatus(ids, status);
}
@Operation(summary = "获取操作员列表", description = "根据类型获取操作员列表")
@GetMapping("list/{type}")
public Response<List<OperatorVO>> getOperatorList(@PathVariable("type") String type) {
public Response<List<OperatorVO>> getOperatorList(
@Parameter(description = "操作员类型") @PathVariable("type") String type) {
return operatorService.getOperatorListByType(type);
}
}

View File

@ -22,7 +22,12 @@ import com.wansenai.vo.UserListVO;
import com.wansenai.vo.UserRoleVO;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import java.util.List;
@ -34,6 +39,7 @@ import java.util.List;
* @author James Zow
* @since 2023-09-05
*/
@Tag(name = "用户管理", description = "用户账户相关的所有接口")
@RestController
@RequestMapping("/user")
public class SysUserController {
@ -44,111 +50,136 @@ public class SysUserController {
this.userService = userService;
}
@Operation(summary = "用户注册", description = "新用户注册接口")
@PostMapping("register")
public Response<String> accountRegister(@RequestBody AccountRegisterDTO accountRegisterDto) {
return userService.accountRegister(accountRegisterDto);
}
@Operation(summary = "用户登录", description = "用户账号密码登录")
@PostMapping(value = "login")
public Response<UserInfoVO> accountLogin(@RequestBody AccountLoginDTO accountLoginDto) {
return userService.accountLogin(accountLoginDto);
}
@Operation(summary = "免验证码登录", description = "无需验证码的用户登录接口")
@PostMapping(value = "loginNoCode")
public Response<UserInfoVO> loginNoCode(@RequestBody AccountLoginDTO accountLoginDto) {
return userService.loginNoCode(accountLoginDto);
}
@Operation(summary = "手机号登录", description = "使用手机号进行登录")
@PostMapping(value = "mobileLogin")
public Response<UserInfoVO> mobileLogin(@RequestBody MobileLoginDTO mobileLoginDto) {
return userService.mobileLogin(mobileLoginDto);
}
@Operation(summary = "邮箱登录", description = "使用邮箱进行登录")
@PostMapping(value = "emailLogin")
public Response<UserInfoVO> emailLogin(@RequestBody EmailLoginDTO emailLoginDTO) {
return userService.emailLogin(emailLoginDTO);
}
@Operation(summary = "通过手机号修改密码", description = "使用手机号验证来修改密码")
@PostMapping(value = "updatePassword")
public Response<String> updatePasswordByPhone(@RequestBody UpdatePasswordDto updatePasswordDto) {
return userService.updatePassword(updatePasswordDto);
}
@Operation(summary = "通过邮箱修改密码", description = "使用邮箱验证来修改密码")
@PostMapping(value = "updatePasswordByEmail")
public Response<String> updatePasswordByEmail(@RequestBody UpdatePasswordByEmailDto updatePasswordByEmailDto) {
return userService.updatePasswordByEmail(updatePasswordByEmailDto);
}
@Operation(summary = "用户修改密码", description = "已登录用户修改密码")
@PutMapping(value = "userUpdatePassword")
public Response<String> userUpdatePassword(@RequestBody ResetPasswordDTO resetPasswordDTO) {
return userService.resetPassword(resetPasswordDTO);
}
@Operation(summary = "获取操作员列表", description = "获取系统操作员列表")
@GetMapping(value = "operator")
public Response<List<UserInfoVO>> operator() {
return userService.operator();
}
@Operation(summary = "获取用户信息", description = "获取当前登录用户的详细信息")
@GetMapping(value = "info")
public Response<UserInfoVO> info() {
return userService.userInfo();
}
@Operation(summary = "获取用户权限", description = "获取当前用户的角色权限信息")
@GetMapping(value = "perm")
public Response<List<UserRoleVO>> permission() {
return userService.userRole();
}
@Operation(summary = "用户登出", description = "用户退出登录")
@GetMapping(value = "logout")
public Response<String> logout() {
return userService.userLogout();
}
@Operation(summary = "分页获取用户列表", description = "分页查询用户信息列表")
@PostMapping(value = "list")
public Response<Page<UserListVO>> list(@RequestBody UserListDTO userListDto) {
return userService.userList(userListDto);
}
@Operation(summary = "获取所有用户", description = "获取所有用户信息列表")
@GetMapping(value = "listAll")
public Response<List<UserListVO>> listAll() {
return userService.userListAll();
}
@Operation(summary = "更新用户信息", description = "更新用户基本信息")
@PostMapping(value = "update")
public Response<String> update(@RequestBody UpdateUserDTO updateUserDTO) {
return userService.updateUser(updateUserDTO);
}
@Operation(summary = "更新用户状态", description = "更新用户启用/禁用状态")
@PostMapping(value = "updateStatus")
public Response<String> updateStatus(@RequestBody UpdateUserDTO updateUserDTO) {
return userService.updateStatus(updateUserDTO);
}
@Operation(summary = "上传用户头像", description = "上传并更新用户头像")
@PostMapping("uploadAvatar")
public Response<String> uploadAvatar(@RequestParam("file") MultipartFile file, @RequestParam("userId") Long userId, @RequestParam("name") String name) {
public Response<String> uploadAvatar(
@Parameter(description = "头像文件") @RequestParam("file") MultipartFile file,
@Parameter(description = "用户ID") @RequestParam("userId") Long userId,
@Parameter(description = "文件名") @RequestParam("name") String name) {
return userService.uploadAvatar(file, userId, name);
}
@Operation(summary = "新增或更新用户", description = "新增用户或更新用户信息")
@PostMapping(value = "addOrUpdate")
public Response<String> addOrUpdate(@RequestBody AddOrUpdateUserDTO addOrUpdateUserDTO) {
return userService.addOrUpdate(addOrUpdateUserDTO);
}
@Operation(summary = "删除用户", description = "批量删除用户")
@PostMapping(value = "delete")
public Response<String> deleteUser(@RequestParam(value = "ids") List<Long> ids) {
public Response<String> deleteUser(@Parameter(description = "用户ID列表") @RequestParam(value = "ids") List<Long> ids) {
return userService.deleteUser(ids);
}
@Operation(summary = "重置用户密码", description = "将用户密码重置为默认密码")
@PostMapping(value = "resetPassword")
public Response<String> resetPassword(@RequestParam(value = "id") Long id) {
public Response<String> resetPassword(@Parameter(description = "用户ID") @RequestParam(value = "id") Long id) {
return userService.resetPassword(id);
}
@Operation(summary = "重置手机号", description = "更新用户手机号")
@PutMapping(value = "resetPhoneNumber")
public Response<String> resetPhoneNumber(@RequestBody ResetPhoneDTO resetPhoneDTO) {
return userService.resetPhoneNumber(resetPhoneDTO);
}
@Operation(summary = "重置邮箱", description = "更新用户邮箱")
@PutMapping(value = "resetEmail")
public Response<String> resetEmail(@RequestBody ResetEmailDTO resetEmailDTO) {
return userService.resetEmail(resetEmailDTO);

View File

@ -18,16 +18,12 @@ import com.wansenai.dto.basic.QueryMemberDTO
import com.wansenai.service.basic.MemberService
import com.wansenai.utils.response.Response
import com.wansenai.vo.basic.MemberVO
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import jakarta.servlet.http.HttpServletResponse
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.DeleteMapping
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.ModelAttribute
import org.springframework.web.bind.annotation.*
@Tag(name = "会员模块", description = "会员模块")
@RestController
@RequestMapping("/basic/member")
class MemberController (private val memberService: MemberService){
@ -52,9 +48,10 @@ class MemberController (private val memberService: MemberService){
return memberService.updateMemberStatus(ids, status)
}
@Operation(summary = "会员列表查询")
@GetMapping("/list")
fun getMemberList() : Response<List<MemberVO>> {
return memberService.getMemberList(null)
fun getMemberList(@RequestBody memberDTO: QueryMemberDTO) : Response<List<MemberVO>> {
return memberService.getMemberList(memberDTO)
}
@GetMapping("export")

View File

@ -34,3 +34,29 @@ mybatis-plus:
configuration:
# log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# doc
knife4j:
enable: true
basic:
enable: true
username: admin
password: admin
setting:
language: zh_cn
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs
group-configs:
- group: '用户模块'
paths-to-match: '/**'
packages-to-scan: com.wansenai.api.user
- group: '会员模块'
paths-to-match: '/**'
packages-to-scan: com.wansenai.api.basic

View File

@ -12,17 +12,24 @@
*/
package com.wansenai.dto.basic
import io.swagger.v3.oas.annotations.media.Schema
data class QueryMemberDTO(
var memberNumber: String?,
@Schema(description = "会员卡号 or 手机号")
var keyWords: String?,
var phoneNumber: String?,
@Schema(description = "会员卡号")
var memberNumber: String?,
val page: Long?,
var phoneNumber: String?,
val pageSize: Long?,
val page: Long?,
val startDate: String?,
val pageSize: Long?,
val endDate: String?,
val startDate: String?,
val endDate: String?,
)

View File

@ -31,6 +31,11 @@ public class JWTConfig implements WebMvcConfigurer {
.addPathPatterns("/**")
// 路径不进行拦截
.excludePathPatterns("/v2/common/captcha")
.excludePathPatterns("/swagger-ui/**")
.excludePathPatterns("/doc.html")
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/v3/**")
.excludePathPatterns("/v2/**")
.excludePathPatterns("/user/register")
.excludePathPatterns("/user/login")
.excludePathPatterns("/user/loginNoCode")

View File

@ -74,6 +74,13 @@
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!-- openapi3 doc相关配置 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
</dependencies>
<build>

View File

@ -41,8 +41,8 @@ import java.time.LocalDateTime
@Slf4j
@Service
open class MemberServiceImpl(
private val baseService: BaseService,
private val memberMapper: MemberMapper
private val baseService: BaseService,
private val memberMapper: MemberMapper
) : ServiceImpl<MemberMapper, Member>(), MemberService {
override fun getMemberPageList(memberDTO: QueryMemberDTO?): Response<Page<MemberVO>> {
@ -60,16 +60,16 @@ open class MemberServiceImpl(
memberMapper.selectPage(this, wrapper)
val listVo = records.map { member ->
MemberVO(
id = member.id,
memberNumber = member.memberNumber,
memberName = member.memberName,
phoneNumber = member.phoneNumber,
email = member.email,
advancePayment = member.advancePayment,
status = member.status,
remark = member.remark,
sort = member.sort,
createTime = member.createTime
id = member.id,
memberNumber = member.memberNumber,
memberName = member.memberName,
phoneNumber = member.phoneNumber,
email = member.email,
advancePayment = member.advancePayment,
status = member.status,
remark = member.remark,
sort = member.sort,
createTime = member.createTime
)
}
Page<MemberVO>().apply {
@ -80,7 +80,7 @@ open class MemberServiceImpl(
}
}
return result.let { Response.responseData(it) } ?: Response.responseMsg(
BaseCodeEnum.QUERY_DATA_EMPTY)
BaseCodeEnum.QUERY_DATA_EMPTY)
}
@Transactional
@ -124,22 +124,22 @@ open class MemberServiceImpl(
override fun deleteBatchMember(ids: List<Long>): Response<String> {
return ids.takeIf { it.isNotEmpty() }
?.let {
val updateResult = memberMapper.deleteBatchIds(it)
val systemLanguage = baseService.currentUserSystemLanguage
if (updateResult > 0) {
if (systemLanguage == "zh_CN") {
return Response.responseMsg(MemberCodeEnum.DELETE_MEMBER_SUCCESS)
?.let {
val updateResult = memberMapper.deleteBatchIds(it)
val systemLanguage = baseService.currentUserSystemLanguage
if (updateResult > 0) {
if (systemLanguage == "zh_CN") {
return Response.responseMsg(MemberCodeEnum.DELETE_MEMBER_SUCCESS)
}
return Response.responseMsg(MemberCodeEnum.DELETE_MEMBER_SUCCESS_EN)
} else {
if (systemLanguage == "zh_CN") {
return Response.responseMsg(MemberCodeEnum.DELETE_MEMBER_ERROR)
}
Response.responseMsg(MemberCodeEnum.DELETE_MEMBER_ERROR_EN)
}
return Response.responseMsg(MemberCodeEnum.DELETE_MEMBER_SUCCESS_EN)
} else {
if (systemLanguage == "zh_CN") {
return Response.responseMsg(MemberCodeEnum.DELETE_MEMBER_ERROR)
}
Response.responseMsg(MemberCodeEnum.DELETE_MEMBER_ERROR_EN)
}
}
?: Response.responseMsg(BaseCodeEnum.PARAMETER_NULL)
?: Response.responseMsg(BaseCodeEnum.PARAMETER_NULL)
}
override fun updateMemberStatus(ids: List<Long>, status: Int): Response<String> {
@ -148,9 +148,9 @@ open class MemberServiceImpl(
}
val updateResult = lambdaUpdate()
.`in`(Member::getId, ids)
.set(Member::getStatus, status)
.update()
.`in`(Member::getId, ids)
.set(Member::getStatus, status)
.update()
val systemLanguage = baseService.currentUserSystemLanguage
return if (!updateResult) {
if (systemLanguage == "zh_CN") {
@ -176,9 +176,9 @@ open class MemberServiceImpl(
val memberKey = Pair(member.memberNumber, member.memberName)
if (!existingMembers.contains(memberKey)) {
val memberEntity = memberMapper.selectOne(
LambdaQueryWrapper<Member>()
.eq(Member::getMemberName, member.memberName)
.eq(Member::getMemberNumber, member.memberNumber)
LambdaQueryWrapper<Member>()
.eq(Member::getMemberName, member.memberName)
.eq(Member::getMemberNumber, member.memberNumber)
)
if (memberEntity == null) {
val newMemberEntity = Member().apply {
@ -195,28 +195,36 @@ open class MemberServiceImpl(
}
override fun getMemberList(memberDTO: QueryMemberDTO?): Response<List<MemberVO>> {
val memberList = list(
LambdaQueryWrapper<Member>()
.eq(StringUtils.hasLength(memberDTO?.memberNumber), Member::getMemberNumber, memberDTO?.memberNumber)
.eq(StringUtils.hasLength(memberDTO?.phoneNumber), Member::getPhoneNumber, memberDTO?.phoneNumber)
.ge(StringUtils.hasLength(memberDTO?.startDate), Member::getCreateTime, memberDTO?.startDate)
.le(StringUtils.hasLength(memberDTO?.endDate), Member::getCreateTime, memberDTO?.endDate)
.eq(Member::getStatus, CommonConstants.STATUS_NORMAL)
.eq(Member::getDeleteFlag, CommonConstants.NOT_DELETED)
.orderByAsc(Member::getSort)
)
val wrapper = LambdaQueryWrapper<Member>().apply {
if (!memberDTO?.keyWords.isNullOrEmpty()) {
eq(Member::getPhoneNumber, memberDTO?.keyWords)
.or()
.eq(Member::getMemberNumber, memberDTO?.keyWords)
} else {
eq(StringUtils.hasLength(memberDTO?.memberNumber), Member::getMemberNumber, memberDTO?.memberNumber)
eq(StringUtils.hasLength(memberDTO?.phoneNumber), Member::getPhoneNumber, memberDTO?.phoneNumber)
}
// 其他查询条件保持不变
ge(StringUtils.hasLength(memberDTO?.startDate), Member::getCreateTime, memberDTO?.startDate)
le(StringUtils.hasLength(memberDTO?.endDate), Member::getCreateTime, memberDTO?.endDate)
eq(Member::getStatus, CommonConstants.STATUS_NORMAL)
eq(Member::getDeleteFlag, CommonConstants.NOT_DELETED)
orderByAsc(Member::getSort)
}
val memberList = list(wrapper)
val memberVOList = memberList.map { member ->
MemberVO(
id = member.id,
memberNumber = member.memberNumber,
memberName = member.memberName,
phoneNumber = member.phoneNumber,
email = member.email,
advancePayment = member.advancePayment,
status = member.status,
remark = member.remark,
sort = member.sort,
createTime = member.createTime
id = member.id,
memberNumber = member.memberNumber,
memberName = member.memberName,
phoneNumber = member.phoneNumber,
email = member.email,
advancePayment = member.advancePayment,
status = member.status,
remark = member.remark,
sort = member.sort,
createTime = member.createTime
)
}
return Response.responseData(memberVOList)
@ -232,9 +240,9 @@ open class MemberServiceImpl(
return false
}
return lambdaUpdate()
.eq(Member::getId, memberId)
.set(Member::getAdvancePayment, member.advancePayment.add(amount))
.update()
.eq(Member::getId, memberId)
.set(Member::getAdvancePayment, member.advancePayment.add(amount))
.update()
}
override fun getMemberById(memberId: Long?): Member? {
@ -250,22 +258,22 @@ open class MemberServiceImpl(
override fun exportMemberData(memberDTO: QueryMemberDTO?, response: HttpServletResponse) {
val members = getMemberList(memberDTO)
if(members.data.isNotEmpty()) {
if (members.data.isNotEmpty()) {
val systemLanguage = baseService.currentUserSystemLanguage
if (systemLanguage == "zh_CN") {
val exportData = ArrayList<MemberExportBO>()
members.data.forEach { member ->
val memberExportBO = MemberExportBO(
id = member.id,
memberNumber = member.memberNumber,
memberName = member.memberName,
phoneNumber = member.phoneNumber,
email = member.email,
advancePayment = member.advancePayment,
status = member.status,
remark = member.remark,
sort = member.sort,
createTime = member.createTime
val memberExportBO = MemberExportBO(
id = member.id,
memberNumber = member.memberNumber,
memberName = member.memberName,
phoneNumber = member.phoneNumber,
email = member.email,
advancePayment = member.advancePayment,
status = member.status,
remark = member.remark,
sort = member.sort,
createTime = member.createTime
)
exportData.add(memberExportBO)
}
@ -273,17 +281,17 @@ open class MemberServiceImpl(
} else {
val exportEnData = ArrayList<MemberExportEnBO>()
members.data.forEach { member ->
val memberExportEnBO = MemberExportEnBO(
id = member.id,
memberNumber = member.memberNumber,
memberName = member.memberName,
phoneNumber = member.phoneNumber,
email = member.email,
advancePayment = member.advancePayment,
status = member.status,
remark = member.remark,
sort = member.sort,
createTime = member.createTime
val memberExportEnBO = MemberExportEnBO(
id = member.id,
memberNumber = member.memberNumber,
memberName = member.memberName,
phoneNumber = member.phoneNumber,
email = member.email,
advancePayment = member.advancePayment,
status = member.status,
remark = member.remark,
sort = member.sort,
createTime = member.createTime
)
exportEnData.add(memberExportEnBO)
}