From e5f4cb6e5e19b09ca62ebc6160720858c58f24c1 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期二, 15 七月 2025 17:57:23 +0800 Subject: [PATCH] 111 --- server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 184 +++++++++++++++++++++++++++++++++++---------- 1 files changed, 142 insertions(+), 42 deletions(-) diff --git a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java index 8a3f607..6ad3885 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java @@ -27,7 +27,9 @@ import com.wechat.pay.java.service.partnerpayments.jsapi.model.Payer; import com.wechat.pay.java.service.partnerpayments.jsapi.model.PrepayRequest; import com.wechat.pay.java.service.partnerpayments.jsapi.model.PrepayWithRequestPaymentResponse; +import com.wechat.pay.java.service.refund.model.RefundNotification; import jodd.util.StringUtil; +import lombok.With; import nonapi.io.github.classgraph.json.Id; import org.apache.poi.sl.image.ImageHeaderEMF; import org.checkerframework.checker.units.qual.A; @@ -38,11 +40,13 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.UUID; +import java.util.concurrent.TimeUnit; /** * 璁㈠崟淇℃伅璁板綍Service瀹炵幇 @@ -77,7 +81,13 @@ private IdentityInfoMapper identityInfoMapper; @Autowired + private WithdrawalOrdersMapper withdrawalOrdersMapper; + + @Autowired private WxMiniUtilService wxMiniUtilService; + + @Resource + private RedisTemplate<String,Object> redisTemplate; @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) @@ -98,11 +108,11 @@ } //鐢ㄩ璁㈠崟 if(Constants.equalsInteger(orders.getType(),Constants.TWO)){ - orders.setStatus(Constants.ZERO); + orders.setStatus(Constants.ordersStatus.waitPay.getKey()); //鍞よ捣鏀粯涓氬姟 objects = this.getWxPayResponse(orders,orders.getMember().getOpenid()); }else{ - orders.setStatus(Constants.ONE); + orders.setStatus(Constants.ordersStatus.wait.getKey()); } ordersMapper.insert(orders); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(orders.getMultifileList())){ @@ -449,11 +459,12 @@ queryWrapper.eq(Objects.nonNull(model.getType()),Orders::getType, model.getType()); queryWrapper.eq(Objects.nonNull(model.getStatus()),Orders::getStatus, model.getStatus()); queryWrapper.eq(Objects.nonNull(model.getAcceptType()),Orders::getAcceptType, model.getAcceptType()); - queryWrapper.like(org.apache.commons.lang3.StringUtils.isNotBlank(model.getReleaseName()),"m1.name", model.getReleaseName()); - queryWrapper.apply(org.apache.commons.lang3.StringUtils.isNotBlank(model.getAcceptName())," i.LINK_NAME like '%"+model.getAcceptName()+"%' or i.company_name like '%"+model.getAcceptName()+"%' "); + queryWrapper.apply(org.apache.commons.lang3.StringUtils.isNotBlank(model.getReleaseName()),"m1.name", model.getReleaseName()); + queryWrapper.apply(org.apache.commons.lang3.StringUtils.isNotBlank(model.getAcceptName()),"( i.LINK_NAME like '%"+model.getAcceptName()+"%' or i.company_name like '%"+model.getAcceptName()+"%' or i.TELEPHONE like '%"+model.getAcceptName()+"%' ) "); IPage<Orders> iPage = ordersMapper.selectJoinPage(page,Orders.class,queryWrapper); for (Orders orders:iPage.getRecords()) { this.getOrderContent(orders); + orders.setStatusName(Constants.ordersStatus.getName(orders.getStatus())); } return PageData.from(iPage); } @@ -516,7 +527,7 @@ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(!Constants.equalsInteger(orders.getStatus(),Constants.ONE)){ + if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.wait.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇ユ搷浣�"); } if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){ @@ -540,7 +551,7 @@ orders.setAcceptType(Constants.ZERO); orders.setAcceptTime(new Date()); orders.setAcceptMemberId(member.getId()); - orders.setStatus(Constants.TWO); + orders.setStatus(Constants.ordersStatus.accept.getKey()); ordersMapper.updateById(orders); //鏇存柊鎺ュ崟閲� memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getPublishNum," (publish_num + 1 )").eq(Member::getId,member.getId())); @@ -569,7 +580,7 @@ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(!Constants.equalsInteger(orders.getStatus(),Constants.TWO)){ + if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇ユ搷浣�"); } if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){ @@ -579,7 +590,7 @@ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟淇敼寰呯‘璁わ紝鏃犳硶杩涜璇ユ搷浣�"); } orders.setUpdateTime(new Date()); - orders.setStatus(Constants.THREE); + orders.setStatus(Constants.ordersStatus.doing.getKey()); orders.setWorkStartTime(new Date()); ordersMapper.updateById(orders); @@ -608,7 +619,7 @@ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(!Constants.equalsInteger(orders.getStatus(),Constants.TWO)){ + if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇ユ搷浣�"); } if(Constants.equalsInteger(orders.getReleaseMemberId(),updOrderDataDTO.getMember().getId())){ @@ -638,6 +649,7 @@ .set(Orders::getEndDate,updOrderDataDTO.getEndDate()) .set(Orders::getTotalDays,updOrderDataDTO.getTotalDays()) .set(Orders::getIsUpdate,Constants.ONE) + .set(Orders::getIsUpdateTime,"now()") .set(Orders::getUpdateTime,"now()") .set(Orders::getEstimatedAccount,total) .eq(Orders::getId,orders.getId()) @@ -683,7 +695,7 @@ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(!Constants.equalsInteger(orders.getStatus(),Constants.TWO)){ + if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇ユ搷浣�"); } if(!Constants.equalsInteger(orders.getIsUpdate(),Constants.ONE)){ @@ -706,7 +718,7 @@ ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getIsUpdate,Constants.TWO) .set(Orders::getUpdateTime,"now()") - .set(Orders::getStatus,Constants.ONE) + .set(Orders::getStatus,Constants.ordersStatus.wait.getKey()) .set(Orders::getAcceptMemberId,null) .set(Orders::getAcceptType,null) .eq(Orders::getId,orders.getId()) @@ -737,9 +749,9 @@ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(!(Constants.equalsInteger(orders.getStatus(),Constants.ONE) - ||Constants.equalsInteger(orders.getStatus(),Constants.ZERO) - || Constants.equalsInteger(orders.getStatus(),Constants.TWO))){ + if(!(Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.wait.getKey()) + ||Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.waitPay.getKey()) + || Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey()))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷"); } if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){ @@ -754,15 +766,14 @@ withdrawalOrders.setCreateTime(new Date()); withdrawalOrders.setMemberId(orders.getReleaseMemberId()); withdrawalOrders.setAmount(orders.getPayAccount()); - withdrawalOrders.setWxExternalNo("refund_"+orders.getCode()); - withdrawalOrders.setStatus(Constants.ONE); + withdrawalOrders.setStatus(Constants.ZERO); withdrawalOrders.setDoneTime(new Date()); withdrawalOrders.setType(Constants.ONE); withdrawalOrders.setObjId(orders.getId()); wxMiniUtilService.wxRefund(withdrawalOrders,orders); } ordersMapper.update(new UpdateWrapper<Orders>().lambda() - .set(Orders::getStatus,99) + .set(Orders::getStatus,Constants.ordersStatus.cancel.getKey()) .set(Orders::getUpdateTime,"now()") .set(Orders::getCancelTime,"now()") .set(Orders::getCancelType,Constants.ZERO) @@ -773,7 +784,7 @@ Integer totalCancelTimes = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RELEASE_CANCEL_TIMES).getCode()); Long cancelTimes = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda() .apply(" DATE(cancel_time) = DATE(NOW()) ") - .eq(Orders::getStatus,99) + .eq(Orders::getStatus,Constants.ordersStatus.cancel.getKey()) .eq(Orders::getReleaseMemberId,orders.getReleaseMemberId())); //鏌ヨ鍙栨秷娆℃暟 if(totalCancelTimes<=cancelTimes){ @@ -800,7 +811,7 @@ wxMiniUtilService.wxRefund(withdrawalOrders,orders); } ordersMapper.update(new UpdateWrapper<Orders>().lambda() - .set(Orders::getStatus,99) + .set(Orders::getStatus,Constants.ordersStatus.cancel.getKey()) .set(Orders::getUpdateTime,"now()") .set(Orders::getCancelTime,"now()") .set(Orders::getCancelType,Constants.ONE) @@ -833,7 +844,7 @@ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(!Constants.equalsInteger(orders.getStatus(),Constants.TWO)){ + if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷"); } if(Constants.equalsInteger(orders.getAcceptMemberId(),member.getId())){ @@ -857,7 +868,7 @@ } ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getUpdateTime,"now()") - .set(Orders::getStatus,Constants.ONE) + .set(Orders::getStatus,Constants.ordersStatus.wait.getKey()) .set(Orders::getAcceptMemberId,null) .set(Orders::getAcceptType,null) .eq(Orders::getId,orders.getId()) @@ -892,7 +903,7 @@ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(!Constants.equalsInteger(orders.getStatus(),Constants.THREE)){ + if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.doing.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷"); } if(Constants.equalsInteger(orders.getReleaseMemberId(),doneOrderDTO.getMember().getId())){ @@ -909,7 +920,7 @@ //鍞よ捣鏀粯涓氬姟 object = this.getWxPayResponse(orders,orders.getMember().getOpenid()); }else{ - orders.setStatus(Constants.FOUR); + orders.setStatus(Constants.ordersStatus.done.getKey()); //鏃ュ織瀛樺偍 Constants.OrdersLog ordersLog = Constants.OrdersLog.DONE; this.saveOrderLog(orders,ordersLog, @@ -928,8 +939,8 @@ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(!(Constants.equalsInteger(orders.getStatus(),Constants.ONE)||Constants.equalsInteger(orders.getStatus(),Constants.TWO) - ||Constants.equalsInteger(orders.getStatus(),Constants.THREE))){ + if(!(Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.wait.getKey())||Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey()) + ||Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.doing.getKey())||Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.waitPay.getKey()))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷"); } //濡傛灉宸叉敮浠� 鍒欓渶瑕佽繘琛岄��娆� @@ -955,7 +966,7 @@ } ordersMapper.update(new UpdateWrapper<Orders>().lambda() - .set(Orders::getStatus,99) + .set(Orders::getStatus,Constants.ordersStatus.cancel.getKey()) .set(Orders::getUpdateTime,"now()") .set(Orders::getCancelTime,"now()") .set(Orders::getCancelType,Constants.TWO) @@ -984,7 +995,7 @@ ||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(!Constants.equalsInteger(orders.getStatus(),Constants.FOUR)){ + if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.done.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇勪环"); } if(Constants.equalsInteger(orders.getCommentStatus(),Constants.ONE)){ @@ -1033,7 +1044,7 @@ //澶勭悊鏀粯瀹屾垚閫昏緫 ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getUpdateTime,"now()") - .set(Orders::getStatus,Constants.ONE) + .set(Orders::getStatus,Constants.ordersStatus.wait) .set(Orders::getPayStatus,Constants.ONE) .set(Orders::getWxExternalNo,paymentNo) .eq(Orders::getId,orders.getId()) @@ -1253,22 +1264,111 @@ } - - public synchronized String getNextCode(Integer type){ -// String prefix = "YG"; -// if(!Constants.equalsInteger(type,Constants.ZERO)){ -// prefix = (Constants.equalsInteger(type,Constants.ONE)?"YC-":"SC-"); -// } -// prefix = DateUtil.getDate(new Date(),"yyyyMMdd") +"-"; -// Integer countNum = RedisUtil.getObject(redisTemplate, Constants.RedisKeys.ORDER_CODE, Integer.class); -// countNum = Constants.formatIntegerNum(countNum)+1; -// //鏇存柊缂撳瓨 -// RedisUtil.addObject(redisTemplate,Constants.RedisKeys.ORDER_CODE,countNum); -// String nextIndex =Integer.toString( countNum ); -// return prefix + org.apache.commons.lang3.StringUtils.leftPad(nextIndex,3,"0"); - return null; + String prefix = "YG"; + if(!Constants.equalsInteger(type,Constants.ZERO)){ + prefix = (Constants.equalsInteger(type,Constants.ONE)?"YH-":"DC-"); + } + prefix = DateUtil.getDate(new Date(),"yyyyMMddHHmmss") +"-"; + + Integer countNum = (Integer) redisTemplate.opsForValue().get(Constants.RedisKeys.ORDER_CODE);//RedisUtil.getObject(redisTemplate, Constants.RedisKeys.ORDER_CODE, Integer.class); + countNum = Constants.formatIntegerNum(countNum)+1; + //鏇存柊缂撳瓨 + redisTemplate.opsForValue().set(Constants.RedisKeys.ORDER_CODE,countNum); + String nextIndex =Integer.toString( countNum ); + return prefix + org.apache.commons.lang3.StringUtils.leftPad(nextIndex,3,"0"); } + @Override + @Transactional(rollbackFor = {Exception.class,BusinessException.class}) + public void refundCallback(RefundNotification refundNotification){ + WithdrawalOrders withdrawalOrders = withdrawalOrdersMapper.selectById(refundNotification.getOutRefundNo()); + if(Objects.isNull(withdrawalOrders)||!Constants.equalsInteger(withdrawalOrders.getStatus(),Constants.ZERO)){ + return; + } + withdrawalOrders.setWxExternalNo(refundNotification.getTransactionId()); + withdrawalOrders.setUpdateTime(new Date()); + withdrawalOrders.setDoneTime(withdrawalOrders.getUpdateTime()); + if (!"SUCCESS".equals(refundNotification.getRefundStatus().name())) { + // 濡傛灉閫�娆剧姸鎬佷笉姝g‘锛屼慨鏀归��娆惧崟鐘舵�� + withdrawalOrders.setStatus(Constants.TWO); + }else{ + withdrawalOrders.setStatus(Constants.ONE); + } + //鏇存柊閫�娆惧崟鐘舵�� + withdrawalOrdersMapper.updateById(withdrawalOrders); + } + + + + //todo 鑷姩娲惧崟 + public void autoGrabOrders(){ + + + } + + //鑷姩璇勪环 璁㈠崟瀹屾垚7澶╁悗鑷姩璇勪环4鏄� + @Override + @Transactional(rollbackFor = {Exception.class,BusinessException.class}) + public void autoComment(){ + List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda() + .eq(Orders::getStatus,Constants.FOUR).eq(Orders::getCommentStatus,Constants.ZERO) + .apply(" DATE_ADD(finish_time, INTERVAL 7 DAY) < now() ") + .last("limit 100") + ); + + for (Orders orders:ordersList) { + ordersMapper.update(new UpdateWrapper<Orders>().lambda() + .set(Orders::getCommentStatus,Constants.ONE) + .set(Orders::getUpdateTime,"now()") + .set(Orders::getCommentTime,"now()") + .set(Orders::getCommentLevel,Constants.FOUR) + .set(Orders::getCommentType,Constants.ZERO) + .eq(Orders::getId,orders.getId()) + ); + + memberMapper.update(new UpdateWrapper<Member>().lambda() + .set(Member::getScore," ( total_score +" + Constants.FOUR + " ) / (score_order_num + 1 )") + .set(Member::getTotalScore," total_score +" + Constants.FOUR) + .set(Member::getScoreOrderNum," score_order_num + 1 " ).eq(Member::getId,orders.getAcceptMemberId()) + ); + + //鏃ュ織瀛樺偍 + Constants.OrdersLog ordersLog = Constants.OrdersLog.AUTO_COMMENT; + this.saveOrderLog(orders,ordersLog, + ordersLog.getInfo(),orders.getAcceptMemberId(),null); + } + } + + + //鑷姩纭 璁㈠崟淇敼鍚庤嫢鏈鐞� 鏍规嵁閰嶇疆鑷姩澶勭悊 + @Override + @Transactional(rollbackFor = {Exception.class,BusinessException.class}) + public void autoConfirm(){ + String autoConfirmTime = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AUTO_CONFIRM).getCode(); + List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda() + .eq(Orders::getStatus,Constants.ordersStatus.accept).eq(Orders::getIsUpdate,Constants.ONE) + .apply(" DATE_ADD(IS_UPDATE_TIME, INTERVAL "+autoConfirmTime+" MINUTE) < now() ") + .last("limit 100") + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ordersList)){ + for (Orders orders:ordersList) { + ordersMapper.update(new UpdateWrapper<Orders>().lambda() + .set(Orders::getIsUpdate,Constants.TWO) + .set(Orders::getUpdateTime,"now()") + .eq(Orders::getId,orders.getId()) + ); + //璁板綍鍚屾剰淇敼鐨勬棩蹇� + Constants.OrdersLog ordersLog = Constants.OrdersLog.AUTO_AGREE; + this.saveOrderLog(orders,ordersLog, + ordersLog.getInfo(),orders.getAcceptMemberId(),null); + } + } + } + + + + + } -- Gitblit v1.9.3