|
@@ -7,11 +7,13 @@ import com.ylx.common.exception.ServiceException;
|
|
|
import com.ylx.common.utils.SecurityUtils;
|
|
import com.ylx.common.utils.SecurityUtils;
|
|
|
import com.ylx.common.utils.StringUtils;
|
|
import com.ylx.common.utils.StringUtils;
|
|
|
import com.ylx.massage.domain.TFareFreeRule;
|
|
import com.ylx.massage.domain.TFareFreeRule;
|
|
|
|
|
+import com.ylx.massage.domain.TJs;
|
|
|
import com.ylx.massage.domain.TXiangmu;
|
|
import com.ylx.massage.domain.TXiangmu;
|
|
|
import com.ylx.massage.domain.vo.FareFreeRuleVo;
|
|
import com.ylx.massage.domain.vo.FareFreeRuleVo;
|
|
|
import com.ylx.massage.domain.vo.TimeRangeVo;
|
|
import com.ylx.massage.domain.vo.TimeRangeVo;
|
|
|
import com.ylx.massage.mapper.TFareFreeRuleMapper;
|
|
import com.ylx.massage.mapper.TFareFreeRuleMapper;
|
|
|
import com.ylx.massage.service.TFareFreeRuleService;
|
|
import com.ylx.massage.service.TFareFreeRuleService;
|
|
|
|
|
+import com.ylx.massage.service.TJsService;
|
|
|
import com.ylx.massage.service.TXiangmuService;
|
|
import com.ylx.massage.service.TXiangmuService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -22,6 +24,7 @@ import javax.annotation.Resource;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Optional;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -32,12 +35,14 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
*/
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
@Service
|
|
@Service
|
|
|
-public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, TFareFreeRule>
|
|
|
|
|
- implements TFareFreeRuleService {
|
|
|
|
|
|
|
+public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, TFareFreeRule> implements TFareFreeRuleService {
|
|
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
private TXiangmuService xiangmuService;
|
|
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 免车费规则
|
|
* @param fareFreeRule 免车费规则
|
|
|
- * @return 是否成功
|
|
|
|
|
|
|
+ * @return boolean 是否成功
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean updateFareFreeRule(TFareFreeRule fareFreeRule) {
|
|
|
|
|
|
|
+ public boolean saveFareFreeRule(TFareFreeRule fareFreeRule) {
|
|
|
// 1. 参数校验
|
|
// 1. 参数校验
|
|
|
- if (StringUtils.isBlank(fareFreeRule.getId())) {
|
|
|
|
|
- throw new ServiceException("规则ID不能为空");
|
|
|
|
|
- }
|
|
|
|
|
validateFareFreeRule(fareFreeRule);
|
|
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列表
|
|
* @return List<FareFreeRuleVo> 免车费规则VO列表
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@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. 查询规则列表
|
|
// 1. 查询规则列表
|
|
|
LambdaQueryWrapper<TFareFreeRule> wrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<TFareFreeRule> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(TFareFreeRule::getTechId, techId).eq(TFareFreeRule::getEnable, 1)
|
|
wrapper.eq(TFareFreeRule::getTechId, techId).eq(TFareFreeRule::getEnable, 1)
|
|
|
.orderByDesc(TFareFreeRule::getCreateTime);
|
|
.orderByDesc(TFareFreeRule::getCreateTime);
|
|
|
- List<TFareFreeRule> ruleList = this.list(wrapper);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ TFareFreeRule fareFreeRule = this.getOne(wrapper);
|
|
|
// 2. 转换为VO
|
|
// 2. 转换为VO
|
|
|
- return ruleList.stream().map(rule -> {
|
|
|
|
|
|
|
+ return Optional.ofNullable(fareFreeRule).map(rule -> {
|
|
|
FareFreeRuleVo vo = new FareFreeRuleVo();
|
|
FareFreeRuleVo vo = new FareFreeRuleVo();
|
|
|
BeanUtils.copyProperties(rule, vo);
|
|
BeanUtils.copyProperties(rule, vo);
|
|
|
|
|
|
|
@@ -138,7 +215,7 @@ public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, T
|
|
|
vo.setProjectNames(projectNames.isEmpty() ? null : projectNames);
|
|
vo.setProjectNames(projectNames.isEmpty() ? null : projectNames);
|
|
|
}
|
|
}
|
|
|
return vo;
|
|
return vo;
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
|
|
+ }).orElse(null);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -194,6 +271,10 @@ public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, T
|
|
|
* @param fareFreeRule 免车费规则
|
|
* @param fareFreeRule 免车费规则
|
|
|
*/
|
|
*/
|
|
|
private void validateFareFreeRule(TFareFreeRule fareFreeRule) {
|
|
private void validateFareFreeRule(TFareFreeRule fareFreeRule) {
|
|
|
|
|
+ // 校验openID
|
|
|
|
|
+ if(StringUtils.isBlank(fareFreeRule.getOpenId())){
|
|
|
|
|
+ throw new ServiceException("openID不能为空");
|
|
|
|
|
+ }
|
|
|
// 1. 校验服务项目
|
|
// 1. 校验服务项目
|
|
|
if (StringUtils.isBlank(fareFreeRule.getProjectId())) {
|
|
if (StringUtils.isBlank(fareFreeRule.getProjectId())) {
|
|
|
throw new ServiceException("请至少选择一个服务项目");
|
|
throw new ServiceException("请至少选择一个服务项目");
|
|
@@ -224,7 +305,7 @@ public class TFareFreeRuleServiceImpl extends ServiceImpl<TFareFreeRuleMapper, T
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 5. 校验是否启用
|
|
// 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("是否启用参数错误");
|
|
throw new ServiceException("是否启用参数错误");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|