增加openApi 以及会员接口支持手机号/会员卡号二合一查询
This commit is contained in:
parent
7bc7523ad5
commit
d6e6f57786
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -33,4 +33,30 @@ mybatis-plus:
|
||||||
refresh-mapper: true
|
refresh-mapper: true
|
||||||
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
|
||||||
|
|
|
||||||
|
|
@ -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?,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue