package com.ruoyi.admin.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.admin.entity.User; import com.ruoyi.admin.service.UserService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.GlobalException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.entity.EvaluatePageVO; import com.ruoyi.order.api.entity.Order; import com.ruoyi.order.api.entity.UserWithdrawRecordVO; import com.ruoyi.order.api.entity.WithdrawalSetting; import com.ruoyi.order.api.feignClient.EvaluateClient; import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.order.api.feignClient.WithdrawClient; import com.ruoyi.system.api.model.LoginUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * @author HJL * @version 1.0 * @since 2024-05-29 17:51 */ @RestController @RequestMapping("/userManage") @Api(tags = {"后台-用户管理-用户列表"}) public class UserManageController { @Resource private UserService userService; @Resource private OrderClient orderClient; @Resource private EvaluateClient evaluateClient; @Resource private WithdrawClient withdrawClient; @Resource private TokenService tokenService; /** * 用户信息分页列表 * * @param pageNum 页码 * @param pageSize 每页显示条数 */ @RequiresPermissions("user_list") @ApiOperation(value = "用户管理-用户分页列表", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/page") @ApiImplicitParams({ @ApiImplicitParam(value = "用户昵称", name = "nickname", dataType = "String"), @ApiImplicitParam(value = "手机号", name = "phone", dataType = "String"), @ApiImplicitParam(value = "状态", name = "state", dataType = "Integer"), @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) }) public R> queryPageList(String nickname, String phone, Integer state, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LambdaQueryChainWrapper query = userService.lambdaQuery(); // 穆湖匹配规则 query = StringUtils.isNotBlank(nickname) ? query.like(User::getNickname, nickname) : query; query = StringUtils.isNotBlank(phone) ? query.like(User::getPhone, phone) : query; // 账号是否启用 query = null != state ? query.eq(User::getState, state) : query; return R.ok(query.orderByDesc(User::getCreateTime).eq(User::getIsDelete, 0) .orderByDesc(User::getCreateTime).page(Page.of(pageNum, pageSize))); } /** * 前台用户详情 * * @param id 前台用户id */ @RequiresPermissions("user_detail") @ApiOperation(value = "用户管理-用户详情", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/detail") @ApiImplicitParams({ @ApiImplicitParam(value = "前台用户id", name = "id", dataType = "Integer", required = true) }) public R detail(@RequestParam Integer id) { return R.ok(userService.getById(id)); } /** * 根据id批量删除前台用户 * * @param ids 前台用户多条id拼接 */ @RequiresPermissions("user_delete") @ApiOperation(value = "用户管理-批量删除用户", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/batchDelete") @ApiImplicitParams({ @ApiImplicitParam(value = "多条前台用户id ',' 拼接", name = "ids", dataType = "String", required = true) }) public R batchDelete(@RequestParam String ids) { List idList = Arrays.stream(ids.split(",")).collect(Collectors.toList()); List list = userService.lambdaQuery().in(User::getId, idList).list(); list.forEach(data -> data.setIsDelete(1)); return userService.updateBatchById(list) ? R.ok() : R.fail(); } /** * 用户所关联订单记录分页列表 * * @param userId 手机号 * @param pageNum 页码 * @param pageSize 每页显示条数 * @return 分页列表 */ @RequiresPermissions("user_detail") @ApiOperation(value = "用户详情-订单记录分页列表", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/orderList") @ApiImplicitParams({ @ApiImplicitParam(value = "用户id", name = "userId", dataType = "Integer", required = true), @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) }) public R> orderList(@RequestParam("userId") Integer userId, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LoginUser loginUser = tokenService.getLoginUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } List cityList= new ArrayList<>(); if (loginUser.getCityList()!=null) { cityList = loginUser.getCityList(); } R> iPageR = orderClient.orderList1(userId,cityList, pageNum, pageSize); Page data = iPageR.getData(); List records = data.getRecords(); if (!records.isEmpty()) { for (Order record : records) { if (record.getAddress() != null) { record.setReservationAddress(record.getReservationAddress() + record.getAddress()); } } } return R.ok(data); } @ApiOperation(value = "师傅订单详情", tags = {"后台-师傅管理-师傅列表管理"}) @GetMapping(value = "/workOrderList") @ApiImplicitParams({ @ApiImplicitParam(value = "用户id", name = "workId", dataType = "Integer", required = true), @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) }) public R> workOrderList(@RequestParam("workId") Integer workId, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LoginUser loginUser = tokenService.getLoginUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } R> iPageR = orderClient.workOrderList(workId, pageNum, pageSize); Page data = iPageR.getData(); List records = data.getRecords(); for (Order record : records) { if (record.getAddress()!=null) { record.setReservationAddress(record.getReservationAddress() + record.getAddress()); } } return R.ok(data); } /** * 用户所关联评价记录分页列表 * * @param userId 用户id * @param pageNum 页码 * @param pageSize 每页显示条数 * @return 分页列表 */ @RequiresPermissions("user_detail") @ApiOperation(value = "用户详情-评价记录分页列表", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/evaluateList") @ApiImplicitParams({ @ApiImplicitParam(value = "用户id", name = "userId", dataType = "Integer"), @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) }) public R> evaluateList(Integer userId, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LoginUser loginUser = tokenService.getLoginUser(); List cityList = loginUser.getCityList(); return evaluateClient.evaluateList1(cityList,userId, pageNum, pageSize); } /** * 删除评价记录 * * @param id 评价记录id */ @RequiresPermissions("user_detail") @ApiOperation(value = "用户详情-删除评价记录", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/deleteEvaluateRecord") @ApiImplicitParams({ @ApiImplicitParam(value = "评价记录id", name = "id", dataType = "Integer", required = true) }) public R deleteEvaluateRecord(@RequestParam Long id) { return evaluateClient.batchDelete(String.valueOf(id)); } /** * 修改系统设置-关闭/开启审核 * * @return 操作结果 */ @RequiresPermissions("user_withdrawal_setting") @ApiOperation(value = "关闭/开启审核", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/enableProcess") @ApiImplicitParams({ @ApiImplicitParam(value = "审核状态(0:未开启,1:已开启)", name = "enableProcess", dataType = "Integer", required = true) }) public R enableProcess(@RequestParam("enableProcess") Integer enableProcess) { return withdrawClient.enableProcess(enableProcess); } /** * 获取系统设置-审核设置 * --远程调用 * * @return 操作结果 */ @GetMapping(value = "/withdrawProcess") public R withdrawProcess() { return withdrawClient.withdrawProcess(); } /** * 全局审核状态 */ @ApiOperation(value = "全局审核状态", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/withdrawState") public R withdrawState() { return withdrawClient.withdrawProcess(); } /** * 用户所关联提现记录分页列表 * * @param userId 用户id * @param pageNum 页码 * @param pageSize 每页显示条数 * @return 分页列表 */ @RequiresPermissions("user_detail") @ApiOperation(value = "用户详情-提现记录分页列表", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/withdrawList") @ApiImplicitParams({ @ApiImplicitParam(value = "用户id", name = "userId", dataType = "Integer", required = true), @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) }) public R> withdrawList(@RequestParam Integer userId, @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LoginUser loginUser = tokenService.getLoginUser(); List cityList = new ArrayList<>(); if (loginUser.getCityList()!=null) { cityList = loginUser.getCityList(); } return withdrawClient.withdrawList1(cityList,userId, pageNum, pageSize); } /** * 删除提现记录 * * @param id 提现记录id */ @RequiresPermissions(value = {"user_detail", "user_withdrawal_delete"}, logical = Logical.OR) @ApiOperation(value = "用户详情/用户提现管理-删除提现记录", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/deleteWithdrawRecord") @ApiImplicitParams({ @ApiImplicitParam(value = "提现记录id", name = "id", dataType = "Integer", required = true) }) public R deleteWithdrawRecord(@RequestParam Long id) { return withdrawClient.batchDelete(String.valueOf(id)); } /** * 用户所关联提现记录分页列表 * * @param id 提现记录id * @param state 审批结果 * @param opinion 审批意见 */ @RequiresPermissions(value = {"user_detail", "user_withdrawal_audit"}, logical = Logical.OR) @ApiOperation(value = "用户详情/用户提现管理-提现审批", tags = {"后台-用户管理-用户列表"}) @GetMapping(value = "/withdrawExamine") @ApiImplicitParams({ @ApiImplicitParam(value = "提现记录id", name = "id", dataType = "Integer", required = true), @ApiImplicitParam(value = "审批意见", name = "opinion", dataType = "String"), @ApiImplicitParam(value = "审批同意/不同意(1同意;2驳回)", name = "state", dataType = "Integer", required = true) }) public R withdrawExamine(@RequestParam Long id, @RequestParam Integer state, String opinion) { com.ruoyi.order.api.entity.Withdraw withdraw = withdrawClient.withdrawRecordDetail(id).getData(); if (null == withdraw) { throw new GlobalException("提现记录不存在或已删除!"); } User user = userService.lambdaQuery() .eq(User::getId, withdraw.getUserId()) .eq(User::getIsDelete, 0).one(); if (null == user) { throw new GlobalException("提交申请的用户信息不存在!"); } Boolean data = withdrawClient.withdrawExamine(id, state, opinion, user.getOpenId(), user.getId()).getData(); if (null != data) { return data ? R.ok(null, "审批成功!") : R.fail("审批失败!"); } else { return R.fail("审批失败!"); } } }