From 67f416634f95c81e618123b826e18a57ae08220d Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 22 四月 2025 17:55:30 +0800 Subject: [PATCH] 11.6 --- ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java | 87 +++++++++++++++++++++++++++++++++---------- 1 files changed, 67 insertions(+), 20 deletions(-) diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java index 9d190b4..fbd0dba 100644 --- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java +++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/MasterWorkerController.java @@ -4,25 +4,30 @@ 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.Evaluate; import com.ruoyi.admin.entity.MasterWorker; -import com.ruoyi.admin.service.EvaluateService; import com.ruoyi.admin.service.MasterWorkerService; import com.ruoyi.admin.vo.MasterWorkerDetailVO; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.order.api.entity.Evaluate; +import com.ruoyi.order.api.feignClient.EvaluateClient; +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.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -43,28 +48,53 @@ @Resource private MasterWorkerService masterWorkerService; @Resource - private EvaluateService evaluateService; + private EvaluateClient evaluateClient; + @Resource + private TokenService tokenService; /** * 师傅列表分页查询 (添加订单-选择师傅列表) */ + @RequiresPermissions("master_worker_list") @ApiOperation(value = "师傅列表", tags = {"后台-师傅管理"}) @GetMapping(value = "/selectServe") @ApiImplicitParams({ - @ApiImplicitParam(value = "师傅姓名", name = "name", dataType = "String"), + @ApiImplicitParam(value = "师傅姓名", name = "workerName", dataType = "String"), @ApiImplicitParam(value = "师傅电话", name = "phone", dataType = "String"), @ApiImplicitParam(value = "服务城市", name = "city", 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<IPage<MasterWorker>> selectServe(String name, String phone, String city, + public R<IPage<MasterWorker>> selectServe(String workerName, String phone, String city, Integer state, @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<String> cityList = new ArrayList<>(); + if (loginUser.getIsFranchisee()) { + cityList = loginUser.getCityList(); + } LambdaQueryChainWrapper<MasterWorker> wrapper = masterWorkerService.lambdaQuery(); - wrapper = StringUtils.isNotBlank(name) ? wrapper.like(MasterWorker::getRealName, name) : wrapper; + wrapper = StringUtils.isNotBlank(workerName) ? wrapper.like(MasterWorker::getRealName, workerName) : wrapper; wrapper = StringUtils.isNotBlank(phone) ? wrapper.like(MasterWorker::getPhone, phone) : wrapper; wrapper = StringUtils.isNotBlank(city) ? wrapper.like(MasterWorker::getCity, city) : wrapper; - return R.ok(wrapper.eq(MasterWorker::getIsDelete, 0) + if (null != state) { + wrapper.eq(MasterWorker::getIsEnable, Constants.ONE); + } + wrapper.in(!cityList.isEmpty(),MasterWorker::getCityCode,cityList); +// for (int i = 0; i < cityList.size(); i++) { +// // 最后一跳城市不匹配or条件 +// String s = cityList.get(i); +// if (cityList.size() - 1 == i) { +// wrapper.like(MasterWorker::getCityCode, s); +// } else { +// wrapper.like(MasterWorker::getCityCode, s).or(); +// } +// } + return R.ok(wrapper.eq(MasterWorker::getIsDelete, Constants.ZERO) .orderByDesc(MasterWorker::getCreateTime).page(Page.of(pageNum, pageSize))); } @@ -73,14 +103,20 @@ * * @param masterWorker 师傅详细信息 */ + @RequiresPermissions("worker_save") @ApiOperation(value = "新增师傅信息", tags = {"后台-师傅管理-师傅列表管理"}) @PostMapping(value = "/save") public R<String> save(@RequestBody MasterWorker masterWorker) { - // MD5加密登录密码(新) - BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); - String md5Password = passwordEncoder.encode(Constants.DEFAULT_PASSWORD); - masterWorker.setPassword(md5Password); - return masterWorkerService.save(masterWorker) ? R.ok() : R.fail(); + boolean check = masterWorkerService.checkOnlyPhone(masterWorker.getPhone(), null); + if (check) { + // MD5加密登录密码(新) + BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + String md5Password = passwordEncoder.encode(Constants.DEFAULT_PASSWORD); + masterWorker.setPassword(md5Password); + return masterWorkerService.save(masterWorker) ? R.ok() : R.fail(); + } else { + return R.fail("该手机号已注册账号!"); + } } /** @@ -88,6 +124,7 @@ * * @param ids 账号id拼接 */ + @RequiresPermissions("worker_delete") @ApiOperation(value = "删除师傅信息", tags = {"后台-师傅管理-师傅列表管理"}) @GetMapping(value = "/batchDelete") @ApiImplicitParams({ @@ -105,10 +142,16 @@ * * @param masterWorker 师傅信息 */ + @RequiresPermissions("worker_update") @ApiOperation(value = "修改师傅信息", tags = {"后台-师傅管理-师傅列表管理"}) @PostMapping(value = "/update") - public R<String> update(@RequestBody MasterWorker masterWorker) { - return masterWorkerService.updateById(masterWorker) ? R.ok() : R.fail(); + public R<String> update(@RequestBody @Validated MasterWorker masterWorker) { + boolean check = masterWorkerService.checkOnlyPhone(masterWorker.getPhone(), masterWorker.getId()); + if (check) { + return masterWorkerService.updateById(masterWorker) ? R.ok() : R.fail(); + } else { + return R.fail("该手机号已注册账号!"); + } } /** @@ -117,6 +160,7 @@ * @param id 师傅信息id * @param enable 启用/关闭 */ + @RequiresPermissions("worker_enable") @ApiOperation(value = "启用/关闭师傅账号", tags = {"后台-师傅管理-师傅列表管理"}) @GetMapping(value = "/enable") @ApiImplicitParams({ @@ -134,6 +178,7 @@ * * @param workerId 师傅id */ + @RequiresPermissions("worker_detail") @ApiOperation(value = "师傅详细信息", tags = {"后台-师傅管理-师傅列表管理"}) @GetMapping(value = "/detail") @ApiImplicitParams({ @@ -148,15 +193,17 @@ MasterWorkerDetailVO workerDetail = new MasterWorkerDetailVO(); BeanUtils.copyProperties(worker, workerDetail); // 计算服务星级 - List<Evaluate> evaluateList = evaluateService.lambdaQuery().eq(Evaluate::getWorkerId, workerId) - .eq(Evaluate::getIsDelete, 0).list(); - List<BigDecimal> star = evaluateList.stream().map(Evaluate::getStarRating).collect(Collectors.toList()); + List<Evaluate> evaluateList = evaluateClient.evaluateByWorkerId(worker.getId()).getData(); + List<Double> star = evaluateList.stream().map(Evaluate::getStarRating).collect(Collectors.toList()); if (!star.isEmpty()) { // 总评分 / 评价数量 - BigDecimal starRating = star.stream().reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal result = starRating.divide(new BigDecimal(star.size()), 1, RoundingMode.HALF_UP); - workerDetail.setStarRating(result); + double sum = star.stream().mapToDouble(Double::doubleValue).sum(); + BigDecimal average = new BigDecimal(sum / star.size()).setScale(1, RoundingMode.HALF_UP); + workerDetail.setStarRating(average); + } else { + workerDetail.setStarRating(new BigDecimal("0.0")); } + return R.ok(workerDetail); } -- Gitblit v1.7.1