|
@@ -1,20 +1,32 @@
|
|
|
package com.zhongzheng.modules.top.goods.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.lang.Validator;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.zhongzheng.common.exception.CustomException;
|
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
|
import com.zhongzheng.modules.top.goods.bo.TopOldOrderCheckLogAddBo;
|
|
|
import com.zhongzheng.modules.top.goods.bo.TopOldOrderCheckLogEditBo;
|
|
|
import com.zhongzheng.modules.top.goods.bo.TopOldOrderCheckLogQueryBo;
|
|
|
+import com.zhongzheng.modules.top.goods.bo.TopRefundOrderCheckBo;
|
|
|
+import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
|
|
|
import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheckLog;
|
|
|
import com.zhongzheng.modules.top.goods.mapper.TopOldOrderCheckLogMapper;
|
|
|
import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckLogService;
|
|
|
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
|
|
|
import com.zhongzheng.modules.top.goods.vo.TopOldOrderCheckLogVo;
|
|
|
+import com.zhongzheng.modules.top.user.domain.TopSysUserRole;
|
|
|
+import com.zhongzheng.modules.top.user.service.ITopSysUserRoleService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.pagehelper.Page;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.Collection;
|
|
|
import java.util.Collections;
|
|
@@ -30,6 +42,12 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class TopOldOrderCheckLogServiceImpl extends ServiceImpl<TopOldOrderCheckLogMapper, TopOldOrderCheckLog> implements ITopOldOrderCheckLogService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ITopSysUserRoleService topSysUserRoleService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITopOldOrderService iTopOldOrderService;
|
|
|
+
|
|
|
@Override
|
|
|
public TopOldOrderCheckLogVo queryById(Long id){
|
|
|
TopOldOrderCheckLog db = this.baseMapper.selectById(id);
|
|
@@ -91,6 +109,122 @@ public class TopOldOrderCheckLogServiceImpl extends ServiceImpl<TopOldOrderCheck
|
|
|
return this.updateById(update);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean updateDivideByEditBo(TopOldOrderCheckLogEditBo bo) {
|
|
|
+ if(Validator.isEmpty(bo.getOrderSn())||Validator.isEmpty(bo.getCheckFrom())||Validator.isEmpty(bo.getCheckResult())){
|
|
|
+ throw new CustomException("参数缺失");
|
|
|
+ }
|
|
|
+ //校验当前角色审核权限
|
|
|
+ List<TopSysUserRole> userRoleList = topSysUserRoleService.list(new LambdaQueryWrapper<TopSysUserRole>().eq(TopSysUserRole::getUserId, bo.getLoginId()));
|
|
|
+ if (CollectionUtils.isEmpty(userRoleList) && !bo.getLoginName().equals("admin")) {
|
|
|
+ throw new CustomException("当前账号没有审核权限");
|
|
|
+ }
|
|
|
+ List<Long> roleIds = userRoleList.stream().map(TopSysUserRole::getRoleId).collect(Collectors.toList());
|
|
|
+ TopOldOrderCheckLog checkLog = getOne(new LambdaQueryWrapper<TopOldOrderCheckLog>()
|
|
|
+ .eq(TopOldOrderCheckLog::getOrderSn, bo.getOrderSn()).eq(TopOldOrderCheckLog::getStatus, 1)
|
|
|
+ .eq(TopOldOrderCheckLog::getCheckSign, 1)
|
|
|
+ .eq(TopOldOrderCheckLog::getCheckFrom, bo.getCheckFrom()).last("limit 1"));
|
|
|
+ if(Validator.isEmpty(checkLog)){
|
|
|
+ throw new CustomException("审核数据错误");
|
|
|
+ }
|
|
|
+ if (!roleIds.contains(checkLog.getRoleId()) && !bo.getLoginName().equals("admin") ) {
|
|
|
+ throw new CustomException("当前账号没有审核权限");
|
|
|
+ }
|
|
|
+ switch (bo.getCheckResult()) {
|
|
|
+ case 1://同意
|
|
|
+ consentCheck(checkLog, bo);
|
|
|
+ break;
|
|
|
+ case -1://拒绝
|
|
|
+ refuseCheck(checkLog, bo);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void consentCheck(TopOldOrderCheckLog checkLog, TopOldOrderCheckLogEditBo bo) {
|
|
|
+ List<TopOldOrderCheckLog> checkLogList = list(new LambdaQueryWrapper<TopOldOrderCheckLog>()
|
|
|
+ .eq(TopOldOrderCheckLog::getOrderSn, checkLog.getOrderSn())
|
|
|
+ .eq(TopOldOrderCheckLog::getType, 1)//审核
|
|
|
+ .eq(TopOldOrderCheckLog::getStatus, 1)
|
|
|
+ .eq(TopOldOrderCheckLog::getCheckFrom, checkLog.getCheckFrom()));
|
|
|
+ checkLog.setCheckTime(DateUtils.getNowTime());
|
|
|
+ checkLog.setCheckUsername(bo.getLoginName());
|
|
|
+ checkLog.setCheckReason(bo.getCheckReason());
|
|
|
+ checkLog.setCheckStatus(bo.getCheckResult());
|
|
|
+ checkLog.setCheckSign(0);
|
|
|
+ updateById(checkLog);
|
|
|
+
|
|
|
+ Integer maxSort = checkLogList.stream().mapToInt(TopOldOrderCheckLog::getCheckSort).max().getAsInt();
|
|
|
+ Integer periodStatus = 0;
|
|
|
+ Integer refundStatus = 0;
|
|
|
+ if (checkLog.getCheckSort() < maxSort) {
|
|
|
+ //下个审核进入默认
|
|
|
+ update(new LambdaUpdateWrapper<TopOldOrderCheckLog>()
|
|
|
+ .set(TopOldOrderCheckLog::getCheckSign, 1)
|
|
|
+ .set(TopOldOrderCheckLog::getCheckStatus, 0)
|
|
|
+ .eq(TopOldOrderCheckLog::getOrderSn, checkLog.getOrderSn())
|
|
|
+ .eq(TopOldOrderCheckLog::getType, 1)//审核
|
|
|
+ .eq(TopOldOrderCheckLog::getCheckSort, checkLog.getCheckSort() + 1)
|
|
|
+ .eq(TopOldOrderCheckLog::getCheckFrom, checkLog.getCheckFrom()));
|
|
|
+ refundStatus = 1;//退款中
|
|
|
+ periodStatus = 1;//审核中
|
|
|
+ } else {
|
|
|
+ //最后一个审核
|
|
|
+ periodStatus = 2;//待退款
|
|
|
+ //进入支付流程
|
|
|
+ TopOldOrderCheckLog check = getOne(new LambdaQueryWrapper<TopOldOrderCheckLog>()
|
|
|
+ .eq(TopOldOrderCheckLog::getRefundSn, checkLog.getRefundSn())
|
|
|
+ .eq(TopOldOrderCheckLog::getType, 2)//支付
|
|
|
+ .eq(TopOldOrderCheckLog::getStatus, 1)
|
|
|
+ .eq(TopOldOrderCheckLog::getCheckFrom, checkLog.getCheckFrom())
|
|
|
+ .orderByAsc(TopOldOrderCheckLog::getCheckSort)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (ObjectUtils.isNotNull(check)) {
|
|
|
+ check.setCheckSign(1);//开启当前流程
|
|
|
+ updateById(check);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ iTopOldOrderService.update(new LambdaUpdateWrapper<TopOldOrder>()
|
|
|
+ .set(TopOldOrder::getDivideStatus, 5)
|
|
|
+ .eq(TopOldOrder::getOrderSn, bo.getOrderSn()));
|
|
|
+ }
|
|
|
+
|
|
|
+ public void refuseCheck(TopOldOrderCheckLog checkLog, TopOldOrderCheckLogEditBo bo) {
|
|
|
+ List<TopOldOrderCheckLog> checkLogList = list(new LambdaQueryWrapper<TopOldOrderCheckLog>()
|
|
|
+ .eq(TopOldOrderCheckLog::getOrderSn, bo.getOrderSn())
|
|
|
+ .eq(TopOldOrderCheckLog::getType, 1)//审核
|
|
|
+ .eq(TopOldOrderCheckLog::getStatus, 1)
|
|
|
+ .eq(TopOldOrderCheckLog::getCheckFrom, checkLog.getCheckFrom()));
|
|
|
+
|
|
|
+ checkLog.setCheckTime(DateUtils.getNowTime());
|
|
|
+ checkLog.setCheckUsername(bo.getLoginName());
|
|
|
+ checkLog.setCheckReason(bo.getCheckReason());
|
|
|
+ checkLog.setCheckStatus(bo.getCheckResult());
|
|
|
+ checkLog.setCheckSign(0);
|
|
|
+ updateById(checkLog);
|
|
|
+ Integer minSort = checkLogList.stream().mapToInt(TopOldOrderCheckLog::getCheckSort).min().getAsInt();
|
|
|
+ if (checkLog.getCheckSort() > minSort) {
|
|
|
+ //上个审核进入默认
|
|
|
+ update(new LambdaUpdateWrapper<TopOldOrderCheckLog>()
|
|
|
+ .set(TopOldOrderCheckLog::getCheckSign, 1)
|
|
|
+ .set(TopOldOrderCheckLog::getCheckStatus, 0)
|
|
|
+ .eq(TopOldOrderCheckLog::getOrderSn, checkLog.getOrderSn())
|
|
|
+ .eq(TopOldOrderCheckLog::getType, 1)//审核
|
|
|
+ .eq(TopOldOrderCheckLog::getCheckSort, checkLog.getCheckSort() - 1)
|
|
|
+ .eq(TopOldOrderCheckLog::getCheckFrom, checkLog.getCheckFrom()));
|
|
|
+ } else {
|
|
|
+ //初审拒绝
|
|
|
+ //处理订单状态
|
|
|
+ iTopOldOrderService.update(new LambdaUpdateWrapper<TopOldOrder>()
|
|
|
+ .set(TopOldOrder::getDivideStatus, 4) //未通过
|
|
|
+ .eq(TopOldOrder::getOrderSn, bo.getOrderSn()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 保存前的数据校验
|
|
|
*
|