瀏覽代碼

修改bug

jinshihui 1 天之前
父節點
當前提交
362144b264

+ 38 - 17
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TFareSettingController.java

@@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.common.core.controller.BaseController;
 import com.ylx.common.core.domain.R;
+import com.ylx.common.utils.StringUtils;
 import com.ylx.massage.domain.TFareSetting;
 import com.ylx.massage.domain.TFareFreeRule;
+import com.ylx.massage.domain.vo.DisableFareFreeRuleVo;
 import com.ylx.massage.domain.vo.FareFreeRuleVo;
 import com.ylx.massage.service.TFareSettingService;
 import com.ylx.massage.service.TFareFreeRuleService;
@@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import java.io.Serializable;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 车费设置表(TFareSetting)控制层
@@ -101,51 +104,67 @@ public class TFareSettingController extends BaseController {
     }
 
     /**
-     * 新增免车费规则
+     * 保存免车费规则(H5 技师端)
+     * 支持新增和修改操作
+     * - 如果传入id则修改
+     * - 如果不传id则新增
      *
-     * @param fareFreeRule 免车费规则
+     * 业务流程:
+     * 1. 接收前端传递的免车费规则参数
+     * 2. 调用服务层保存方法(自动判断新增或修改)
+     * 3. 返回操作结果
+     *
+     * @param fareFreeRule 免车费规则(包含id则为修改,不包含则为新增)
      * @return R
      */
     @PostMapping("fareFreeRule/add")
-    @ApiOperation("新增免车费规则")
-    public R addFareFreeRule(@RequestBody TFareFreeRule fareFreeRule) {
+    @ApiOperation("保存免车费规则(支持新增和修改)")
+    public R saveFareFreeRule(@RequestBody TFareFreeRule fareFreeRule) {
         try {
-            logger.info("新增免车费规则:,前端传递的参数:{}", JSON.toJSONString(fareFreeRule));
-            boolean success = fareFreeRuleService.addFareFreeRule(fareFreeRule);
-            return success ? R.ok("新增成功") : R.fail("新增失败");
+            logger.info("保存免车费规则,前端传递的参数:{}", JSON.toJSONString(fareFreeRule));
+            boolean success = fareFreeRuleService.saveFareFreeRule(fareFreeRule);
+
+            // 根据是否包含id判断是新增还是修改
+            String message = StringUtils.isNotBlank(fareFreeRule.getId()) ? "修改成功" : "新增成功";
+            return success ? R.ok(message) : R.fail("操作失败");
         } catch (Exception e) {
+            logger.error("保存免车费规则失败", e);
             return R.fail(e.getMessage());
         }
     }
 
+
     /**
-     * 修改免车费规则
+     * 禁用(启用)免车费规则(H5 技师端)
      *
-     * @param fareFreeRule 免车费规则
+     * @param disableFareFreeRuleVo
      * @return R
      */
-    @PostMapping("fareFreeRule/update")
-    @ApiOperation("修改免车费规则")
-    public R updateFareFreeRule(@RequestBody TFareFreeRule fareFreeRule) {
+    @PostMapping("fareFreeRule/disable")
+    @ApiOperation("禁用免车费规则")
+    public R disableFareFreeRule(@RequestBody DisableFareFreeRuleVo disableFareFreeRuleVo) {
         try {
-            boolean success = fareFreeRuleService.updateFareFreeRule(fareFreeRule);
-            return success ? R.ok("修改成功") : R.fail("修改失败");
+            boolean success = fareFreeRuleService.disableFareFreeRule(disableFareFreeRuleVo.getOpenId(),disableFareFreeRuleVo.getEnable());
+            return success ? R.ok("操作成功") : R.fail("操作失败");
         } catch (Exception e) {
+            e.printStackTrace();
             return R.fail(e.getMessage());
         }
     }
 
+
     /**
      * 查询免车费规则列表
      *
+     * @param openId 技师OpenID
      * @return R
      */
     @GetMapping("fareFreeRule/list")
     @ApiOperation("查询免车费规则列表")
-    public R listFareFreeRules(@RequestParam String techId) {
+    public R listFareFreeRules(@RequestParam String openId) {
         try {
-            List<FareFreeRuleVo> list = fareFreeRuleService.listFareFreeRules(techId);
-            return R.ok(list);
+            FareFreeRuleVo fareFreeRuleVo = fareFreeRuleService.listFareFreeRules(openId);
+            return R.ok(fareFreeRuleVo);
         } catch (Exception e) {
             e.printStackTrace();
             return R.fail(e.getMessage());
@@ -168,5 +187,7 @@ public class TFareSettingController extends BaseController {
             return R.fail(e.getMessage());
         }
     }
+
+
 }
 

+ 1 - 0
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/WeSqController.java

@@ -72,6 +72,7 @@ public class WeSqController extends BaseController {
      * @return R<WxLoginUser> 访问令牌
      */
     @GetMapping("/getAccessToken")
+    @ResponseBody
     //@Log(title = "公众号网页登录", businessType = BusinessType.OTHER)
     public R<WxLoginUser> getAccessToken(@RequestParam String code) {
         // 发送get请求获取 AccessToken

+ 2 - 2
nightFragrance-common/src/main/java/com/ylx/common/core/controller/BaseController.java

@@ -36,7 +36,7 @@ public class BaseController {
     /**
      * 将前台传递过来的日期格式的字符串,自动转化为Date类型
      */
-    @InitBinder
+    /*@InitBinder
     public void initBinder(WebDataBinder binder) {
         // Date 类型转换
         binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
@@ -45,7 +45,7 @@ public class BaseController {
                 setValue(DateUtils.parseDate(text));
             }
         });
-    }
+    }*/
 
     /**
      * 设置请求分页数据

+ 8 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/domain/TFareFreeRule.java

@@ -47,6 +47,13 @@ public class TFareFreeRule implements Serializable {
     @TableField(value = "tech_id")
     private String techId;
 
+    /**
+     * 微信OpenID
+     */
+    @ApiModelProperty("微信OpenID")
+    @TableField(exist = false)
+    private String openId;
+
     /**
      * 服务项目ID
      */
@@ -79,7 +86,7 @@ public class TFareFreeRule implements Serializable {
      * 是否启用(0否 1是)
      */
     @ApiModelProperty("是否启用(0否 1是)")
-    private Integer enable;
+    private String enable;
 
 
     /**

+ 19 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/DisableFareFreeRuleVo.java

@@ -0,0 +1,19 @@
+package com.ylx.massage.domain.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+@Data
+public class DisableFareFreeRuleVo implements Serializable {
+
+    private static final long serialVersionUID = -2529697435273205568L;
+
+    /**
+     * 技师的openId
+     */
+    private String openId;
+
+    /**
+     * 是否启用免车费规则(0:禁用,1:启用)
+     */
+    private String enable;
+}

+ 3 - 3
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/FareFreeRuleVo.java

@@ -47,13 +47,13 @@ public class FareFreeRuleVo implements Serializable {
      * 服务时间段1
      */
     @ApiModelProperty("服务时间段1")
-    private String timeRanges1;
+    private String timeRange1;
 
     /**
      * 服务时间段2
      */
     @ApiModelProperty("服务时间段2")
-    private String timeRanges2;
+    private String timeRange2;
 
     /**
      * 最小距离(公里)
@@ -65,5 +65,5 @@ public class FareFreeRuleVo implements Serializable {
      * 是否启用(0否 1是)
      */
     @ApiModelProperty("是否启用(0否 1是)")
-    private Integer enable;
+    private String enable;
 }

+ 15 - 4
nightFragrance-massage/src/main/java/com/ylx/massage/service/TFareFreeRuleService.java

@@ -15,7 +15,7 @@ import java.util.List;
 public interface TFareFreeRuleService extends IService<TFareFreeRule> {
 
     /**
-     * 新增免车费规则
+     * 新增免车费规则(H5 技师端)
      *
      * @param fareFreeRule 免车费规则
      * @return 是否成功
@@ -23,12 +23,23 @@ public interface TFareFreeRuleService extends IService<TFareFreeRule> {
     boolean addFareFreeRule(TFareFreeRule fareFreeRule);
 
     /**
-     * 修改免车费规则
+     * 保存免车费规则(支持新增和修改)
+     * 如果传入id则更新,否则新增
      *
      * @param fareFreeRule 免车费规则
      * @return 是否成功
      */
-    boolean updateFareFreeRule(TFareFreeRule fareFreeRule);
+    boolean saveFareFreeRule(TFareFreeRule fareFreeRule);
+
+     /**
+     * 禁用免车费规则(H5 技师端)
+     *
+     * @param openId
+     * @return 是否成功
+     */
+    boolean disableFareFreeRule(String openId,String enable);
+
+
 
     /**
      * 查询免车费规则列表
@@ -36,7 +47,7 @@ public interface TFareFreeRuleService extends IService<TFareFreeRule> {
      * @param techId 技师ID
      * @return List<FareFreeRuleVo> 免车费规则VO列表
      */
-    List<FareFreeRuleVo> listFareFreeRules(String techId);
+    FareFreeRuleVo listFareFreeRules(String openId);
 
     /**
      * 判断订单是否满足免车费条件

+ 114 - 33
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TFareFreeRuleServiceImpl.java

@@ -7,11 +7,13 @@ import com.ylx.common.exception.ServiceException;
 import com.ylx.common.utils.SecurityUtils;
 import com.ylx.common.utils.StringUtils;
 import com.ylx.massage.domain.TFareFreeRule;
+import com.ylx.massage.domain.TJs;
 import com.ylx.massage.domain.TXiangmu;
 import com.ylx.massage.domain.vo.FareFreeRuleVo;
 import com.ylx.massage.domain.vo.TimeRangeVo;
 import com.ylx.massage.mapper.TFareFreeRuleMapper;
 import com.ylx.massage.service.TFareFreeRuleService;
+import com.ylx.massage.service.TJsService;
 import com.ylx.massage.service.TXiangmuService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -22,6 +24,7 @@ import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -32,12 +35,14 @@ import java.util.stream.Collectors;
  */
 @Slf4j
 @Service
-public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, TFareFreeRule>
-        implements TFareFreeRuleService {
+public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, TFareFreeRule> implements TFareFreeRuleService {
 
     @Resource
     private TXiangmuService xiangmuService;
 
+    @Resource
+    private TJsService jsService;
+
     /**
      * 新增免车费规则
      *
@@ -68,44 +73,111 @@ public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, T
     }
 
     /**
-     * 修改免车费规则
+     * 保存免车费规则(支持新增和修改)
+     * 如果传入id则更新,否则新增
+     *
+     * 业务流程:
+     * 1. 参数校验
+     * 2. 判断是新增还是修改(根据id是否为空)
+     * 3. 新增:检查是否存在启用的规则,不允许重复添加
+     * 4. 修改:更新规则信息
+     * 5. 设置时间并保存
      *
      * @param fareFreeRule 免车费规则
-     * @return 是否成功
+     * @return boolean 是否成功
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean updateFareFreeRule(TFareFreeRule fareFreeRule) {
+    public boolean saveFareFreeRule(TFareFreeRule fareFreeRule) {
         // 1. 参数校验
-        if (StringUtils.isBlank(fareFreeRule.getId())) {
-            throw new ServiceException("规则ID不能为空");
-        }
         validateFareFreeRule(fareFreeRule);
 
-        // 2. 查询原规则
-        TFareFreeRule existingRule = this.getById(fareFreeRule.getId());
-        if (existingRule == null) {
-            throw new ServiceException("免车费规则不存在");
-        }
+        // 2. 判断是新增还是修改
+        if (StringUtils.isNotBlank(fareFreeRule.getId())) {
+            // ========== 修改场景 ==========
+            log.info("修改免车费规则,规则ID:{}", fareFreeRule.getId());
 
+            // 2.1 查询原规则是否存在
+            TFareFreeRule existingRule = this.getById(fareFreeRule.getId());
+            if (existingRule == null) {
+                throw new ServiceException("免车费规则不存在");
+            }
 
-        // 4. 如果启用规则,检查是否存在其他启用的规则
-        if (fareFreeRule.getEnable() == 1 && !existingRule.getEnable().equals(fareFreeRule.getEnable())) {
-            LambdaQueryWrapper<TFareFreeRule> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(TFareFreeRule::getTechId, fareFreeRule.getTechId())
-                    .eq(TFareFreeRule::getEnable, 1)
-                    .ne(TFareFreeRule::getId, fareFreeRule.getId());
-            long count = this.count(wrapper);
-            if (count > 0) {
-                throw new ServiceException("已存在启用的免车费规则,请先禁用后再启用");
+            // 2.2 如果修改的是启用状态,需要检查是否与其他启用的规则冲突
+            if ("1".equals(fareFreeRule.getEnable())) {
+                LambdaQueryWrapper<TFareFreeRule> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(TFareFreeRule::getTechId, fareFreeRule.getTechId())
+                        .eq(TFareFreeRule::getProjectId, fareFreeRule.getProjectId())
+                        .eq(TFareFreeRule::getTimeRange1, fareFreeRule.getTimeRange1())
+                        .eq(TFareFreeRule::getTimeRange2, fareFreeRule.getTimeRange2())
+                        .eq(TFareFreeRule::getEnable, 1)
+                        .ne(TFareFreeRule::getId, fareFreeRule.getId()); // 排除当前规则
+                long count = this.count(wrapper);
+                if (count > 0) {
+                    throw new ServiceException("已存在启用的免车费规则,请先禁用后再启用");
+                }
             }
-        }
 
-        // 5. 更新时间
-        fareFreeRule.setUpdateTime(LocalDateTime.now());
+            // 2.3 设置更新时间
+            fareFreeRule.setUpdateTime(LocalDateTime.now());
+            // 2.4 更新
+            return this.updateById(fareFreeRule);
+        } else {
+            // ========== 新增场景 ==========
+            //根据openID获取技师的信息
+            TJs js = jsService.getOne(new LambdaQueryWrapper<TJs>().eq(TJs::getcOpenId, fareFreeRule.getOpenId()));
+            if (js == null) {
+                throw new ServiceException("技师不存在");
+            }
+            fareFreeRule.setTechId(js.getId());
+
+            // 2.5 检查是否存在启用的规则(同一技师、同一项目)
+            if ("1".equals(fareFreeRule.getEnable())) {
+                LambdaQueryWrapper<TFareFreeRule> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(TFareFreeRule::getTechId, fareFreeRule.getTechId())
+                        .eq(TFareFreeRule::getEnable, 1)
+                        .eq(TFareFreeRule::getProjectId, fareFreeRule.getProjectId());
+                long count = this.count(wrapper);
+                if (count > 0) {
+                    throw new ServiceException("已存在启用的免车费规则,请先禁用后再添加");
+                }
+            }
 
-        // 6. 更新
-        return this.updateById(fareFreeRule);
+            // 2.6 设置时间
+            fareFreeRule.setCreateTime(LocalDateTime.now());
+            fareFreeRule.setUpdateTime(LocalDateTime.now());
+            // 2.7 保存
+            return this.save(fareFreeRule);
+        }
+    }
+
+     /**
+     * 禁用免车费规则(H5 技师端)
+     *
+     * @param id 主键ID
+     * @return 是否成功
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean disableFareFreeRule(String openId,String enable) {
+        //  参数校验
+        if (StringUtils.isBlank(openId)) {
+            throw new ServiceException("openId不能为空");
+        }
+        //根据openId查询技师信息
+        TJs js = jsService.getOne(new LambdaQueryWrapper<TJs>().eq(TJs::getcOpenId, openId));
+        if (js == null) {
+            throw new ServiceException("技师不存在");
+        }
+        String techId = js.getId();
+        TFareFreeRule existingRule = this.getOne(new LambdaQueryWrapper<TFareFreeRule>().eq(TFareFreeRule::getTechId, techId));
+        if (existingRule == null) {
+            throw new ServiceException("免车费规则不存在");
+        }
+        //设置状态
+        existingRule.setEnable(enable);
+        existingRule.setUpdateTime(LocalDateTime.now());
+        return this.updateById(existingRule);
     }
 
     /**
@@ -115,15 +187,20 @@ public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, T
      * @return List<FareFreeRuleVo> 免车费规则VO列表
      */
     @Override
-    public List<FareFreeRuleVo> listFareFreeRules(String techId) {
+    public FareFreeRuleVo listFareFreeRules(String openId) {
+        //根据openId查询技师信息
+        TJs js = jsService.getOne(new LambdaQueryWrapper<TJs>().eq(TJs::getcOpenId, openId));
+        if (js == null) {
+            throw new ServiceException("技师不存在");
+        }
+        String techId = js.getId();
         // 1. 查询规则列表
         LambdaQueryWrapper<TFareFreeRule> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(TFareFreeRule::getTechId, techId).eq(TFareFreeRule::getEnable, 1)
                 .orderByDesc(TFareFreeRule::getCreateTime);
-        List<TFareFreeRule> ruleList = this.list(wrapper);
-
+        TFareFreeRule fareFreeRule = this.getOne(wrapper);
         // 2. 转换为VO
-        return ruleList.stream().map(rule -> {
+        return Optional.ofNullable(fareFreeRule).map(rule -> {
             FareFreeRuleVo vo = new FareFreeRuleVo();
             BeanUtils.copyProperties(rule, vo);
 
@@ -138,7 +215,7 @@ public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, T
                 vo.setProjectNames(projectNames.isEmpty() ? null : projectNames);
             }
             return vo;
-        }).collect(Collectors.toList());
+        }).orElse(null);
     }
 
     /**
@@ -194,6 +271,10 @@ public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, T
      * @param fareFreeRule 免车费规则
      */
     private void validateFareFreeRule(TFareFreeRule fareFreeRule) {
+        // 校验openID
+        if(StringUtils.isBlank(fareFreeRule.getOpenId())){
+            throw new ServiceException("openID不能为空");
+        }
         // 1. 校验服务项目
         if (StringUtils.isBlank(fareFreeRule.getProjectId())) {
             throw new ServiceException("请至少选择一个服务项目");
@@ -224,7 +305,7 @@ public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, T
         }
 
         // 5. 校验是否启用
-        if (fareFreeRule.getEnable() == null || (fareFreeRule.getEnable() != 0 && fareFreeRule.getEnable() != 1)) {
+        if (fareFreeRule.getEnable() == null || (!"0".equals(fareFreeRule.getEnable()) && !"1".equals(fareFreeRule.getEnable()))) {
             throw new ServiceException("是否启用参数错误");
         }
     }