增加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.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.PathVariable; 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; import java.util.List;
@Tag(name = "收支项目管理", description = "收支项目相关的所有接口")
@RestController @RestController
@RequestMapping("/basic/incomeExpense") @RequestMapping("/basic/incomeExpense")
public class IncomeExpenseController { public class IncomeExpenseController {
@ -39,28 +43,36 @@ public class IncomeExpenseController {
this.incomeExpenseService = incomeExpenseService; this.incomeExpenseService = incomeExpenseService;
} }
@Operation(summary = "获取收支项目列表", description = "分页获取收支项目信息")
@PostMapping("pageList") @PostMapping("pageList")
public Response<Page<IncomeExpenseVO>> getIncomeExpensePageList(@RequestBody QueryIncomeExpenseDTO queryIncomeExpenseDTO) { public Response<Page<IncomeExpenseVO>> getIncomeExpensePageList(@RequestBody QueryIncomeExpenseDTO queryIncomeExpenseDTO) {
return incomeExpenseService.getIncomeExpensePageList(queryIncomeExpenseDTO); return incomeExpenseService.getIncomeExpensePageList(queryIncomeExpenseDTO);
} }
@Operation(summary = "新增或更新收支项目", description = "新增或更新收支项目信息")
@PostMapping("addOrUpdate") @PostMapping("addOrUpdate")
public Response<String> addOrUpdateIncomeExpense(@RequestBody AddOrUpdateIncomeExpenseDTO addOrUpdateIncomeExpenseDTO) { public Response<String> addOrUpdateIncomeExpense(@RequestBody AddOrUpdateIncomeExpenseDTO addOrUpdateIncomeExpenseDTO) {
return incomeExpenseService.addOrUpdateIncomeExpense(addOrUpdateIncomeExpenseDTO); return incomeExpenseService.addOrUpdateIncomeExpense(addOrUpdateIncomeExpenseDTO);
} }
@Operation(summary = "批量删除收支项目", description = "根据ID批量删除收支项目")
@DeleteMapping("deleteBatch") @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); return incomeExpenseService.deleteBatchIncomeExpense(ids);
} }
@Operation(summary = "更新收支项目状态", description = "批量更新收支项目状态")
@PostMapping("updateStatus") @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); return incomeExpenseService.updateIncomeExpenseStatus(ids, status);
} }
@Operation(summary = "获取收支项目列表", description = "根据类型获取收支项目列表")
@GetMapping("list/{type}") @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); 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.utils.response.Response;
import com.wansenai.vo.basic.OperatorVO; import com.wansenai.vo.basic.OperatorVO;
import org.springframework.web.bind.annotation.*; 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; import java.util.List;
@Tag(name = "操作员管理", description = "操作员相关的所有接口")
@RestController @RestController
@RequestMapping("/basic/operator") @RequestMapping("/basic/operator")
public class OperatorController { public class OperatorController {
@ -32,28 +36,36 @@ public class OperatorController {
this.operatorService = operatorService; this.operatorService = operatorService;
} }
@Operation(summary = "获取操作员列表", description = "分页获取操作员信息")
@PostMapping("pageList") @PostMapping("pageList")
public Response<Page<OperatorVO>> getOperatorPageList(@RequestBody QueryOperatorDTO queryOperatorDTO) { public Response<Page<OperatorVO>> getOperatorPageList(@RequestBody QueryOperatorDTO queryOperatorDTO) {
return operatorService.getOperatorPageList(queryOperatorDTO); return operatorService.getOperatorPageList(queryOperatorDTO);
} }
@Operation(summary = "新增或更新操作员", description = "新增或更新操作员信息")
@PostMapping("addOrUpdate") @PostMapping("addOrUpdate")
public Response<String> addOrUpdateOperator(@RequestBody AddOrUpdateOperatorDTO addOrUpdateOperatorDTO) { public Response<String> addOrUpdateOperator(@RequestBody AddOrUpdateOperatorDTO addOrUpdateOperatorDTO) {
return operatorService.addOrUpdateOperator(addOrUpdateOperatorDTO); return operatorService.addOrUpdateOperator(addOrUpdateOperatorDTO);
} }
@Operation(summary = "删除操作员", description = "批量删除操作员")
@DeleteMapping("delete") @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); return operatorService.deleteBatchOperator(ids);
} }
@Operation(summary = "更新操作员状态", description = "批量更新操作员状态")
@PostMapping("updateStatus") @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); return operatorService.updateOperatorStatus(ids, status);
} }
@Operation(summary = "获取操作员列表", description = "根据类型获取操作员列表")
@GetMapping("list/{type}") @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); return operatorService.getOperatorListByType(type);
} }
} }

View File

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

View File

@ -34,3 +34,29 @@ mybatis-plus:
configuration: configuration:
# log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl # log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 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 package com.wansenai.dto.basic
import io.swagger.v3.oas.annotations.media.Schema
data class QueryMemberDTO( 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("/**") .addPathPatterns("/**")
// 路径不进行拦截 // 路径不进行拦截
.excludePathPatterns("/v2/common/captcha") .excludePathPatterns("/v2/common/captcha")
.excludePathPatterns("/swagger-ui/**")
.excludePathPatterns("/doc.html")
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/v3/**")
.excludePathPatterns("/v2/**")
.excludePathPatterns("/user/register") .excludePathPatterns("/user/register")
.excludePathPatterns("/user/login") .excludePathPatterns("/user/login")
.excludePathPatterns("/user/loginNoCode") .excludePathPatterns("/user/loginNoCode")

View File

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

View File

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