From 6b6dea66dc53ebee26ac5e6731d8e7f0bd6a9fe2 Mon Sep 17 00:00:00 2001 From: rk <94314517@qq.com> Date: 星期五, 22 八月 2025 20:57:59 +0800 Subject: [PATCH] 111 --- server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 198 ++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 179 insertions(+), 19 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 985805d..0041ca0 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 @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.doumee.biz.system.SystemDictDataBiz; +import com.doumee.config.wx.SendWxMessage; import com.doumee.config.wx.WxMiniConfig; import com.doumee.config.wx.WxMiniUtilService; import com.doumee.core.constants.Constants; @@ -18,6 +19,7 @@ import com.doumee.dao.business.model.*; import com.doumee.dao.dto.*; import com.doumee.dao.vo.OrderReleaseVO; +import com.doumee.service.business.AliSmsService; import com.doumee.service.business.OrdersService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -45,6 +47,7 @@ import java.math.BigDecimal; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * 璁㈠崟淇℃伅璁板綍Service瀹炵幇 @@ -87,6 +90,12 @@ @Autowired private WxMiniUtilService wxMiniUtilService; + @Autowired + private SendWxMessage sendWxMessage; + + @Autowired + private AliSmsService aliSmsService; + @Resource private RedisTemplate<String,Object> redisTemplate; @@ -96,6 +105,11 @@ OrderReleaseVO orderReleaseVO = new OrderReleaseVO(); Object objects = null; this.initVerification(orders); + Member member = memberMapper.selectById(orders.getMember().getId()); + if(Objects.isNull(member)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛淇℃伅寮傚父"); + } + orders.setCreateTime(new Date()); orders.setUpdateTime(orders.getUpdateTime()); orders.setPayStatus(Constants.ZERO); @@ -120,16 +134,19 @@ } //鐢ㄩ璁㈠崟 if(Constants.equalsInteger(orders.getType(),Constants.TWO)){ + orders.setPayAccount(orders.getEstimatedAccount()); + Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue()); + orders.setReceiveAccount(orders.getPayAccount() - tcje); orders.setStatus(Constants.ordersStatus.waitPay.getKey()); orders.setOutTradeNo(UUID.randomUUID().toString().replace("-","")); - orders.setPayAccount(orders.getEstimatedAccount()); //鍞よ捣鏀粯涓氬姟 - objects = this.getWxPayResponse(orders,orders.getMember().getOpenid()); + objects = this.getWxPayResponse(orders,member.getOpenid()); orderReleaseVO.setObject(objects); }else{ orders.setStatus(Constants.ordersStatus.wait.getKey()); } ordersMapper.insert(orders); + orderReleaseVO.setId(orders.getId()); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(orders.getMultifileList())){ List<Multifile> multifileList = orders.getMultifileList(); @@ -147,7 +164,7 @@ multifileMapper.insert(multifileList); } //鏇存柊鐢ㄦ埛鍙戝崟閲� - memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" receive_num = ( receive_num + 1 )").eq(Member::getId,orders.getMember().getId())); + memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" PUBLISH_NUM = ( ifnull(PUBLISH_NUM,0) + 1 )").eq(Member::getId,orders.getMember().getId())); //鍒涘缓鎿嶄綔鏃ュ織 Constants.OrdersLog ordersLog = Constants.OrdersLog.UPLOAD; @@ -654,18 +671,28 @@ .set(Orders::getStatus,Constants.ordersStatus.accept.getKey()) ); - - //鏇存柊鎺ュ崟閲� - memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (publish_num + 1 )").eq(Member::getId,member.getId())); + memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" RECEIVE_NUM = (ifnull(RECEIVE_NUM,0) + 1 )").eq(Member::getId,member.getId())); //鍒涘缓鎿嶄綔鏃ュ織 Constants.OrdersLog ordersLog = Constants.OrdersLog.RECEIVE; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),member.getId(),null); - //TODO 寰俊鍏紬鍙锋彁閱� 宸叉帴鍗曟彁閱� + IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,member.getId()) + .eq(IdentityInfo::getType,orders.getType()) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getOpenid())&&Objects.nonNull(wokerIdentityInfo)){ + //鍙戦�佸井淇¢�氱煡 + sendWxMessage.acceptMessage(member.getOpenid(),orders,wokerIdentityInfo.getLinkName(),wokerIdentityInfo.getTelephone()); + } + //鐭俊閫氱煡 + aliSmsService.businessSendSms(Constants.smsContent.accept.getKey(),member.getTelephone(),orders,null, + wokerIdentityInfo,categoryMapper); } @@ -747,7 +774,23 @@ this.saveOrderLog(model,ordersLog, ordersLog.getInfo(),orders.getMember().getId(),null); - //TODO 閫氱煡鎺ュ崟浜� 璁㈠崟鍙戠敓鍙樻洿 + //閫氱煡鎺ュ崟浜� 璁㈠崟鍙戠敓鍙樻洿 + Member member = memberMapper.selectById(orders.getAcceptMemberId()); + //鍙戦�佸井淇¢�氱煡 + sendWxMessage.orderUpdMessage(member.getOpenid(),orders); + + IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,member.getId()) + .eq(IdentityInfo::getType,orders.getType()) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + if(Objects.nonNull(wokerIdentityInfo)){ + //鐭俊閫氱煡 + aliSmsService.businessSendSms(Constants.smsContent.orderUpd.getKey(),wokerIdentityInfo.getTelephone(),orders,null, + null,categoryMapper); + } + } @@ -827,8 +870,12 @@ Constants.OrdersLog ordersLog = Constants.OrdersLog.UPD_DISAGREE; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),confirmUpdOrderDTO.getMember().getId(),null); - //TODO 鍙戦�佷笉鍚屾剰鍙樻洿閫氱煡 } + //鐭俊閫氱煡 + aliSmsService.businessSendSms(!Constants.equalsInteger(confirmUpdOrderDTO.getStatus(),Constants.ONE)? + Constants.smsContent.agreeUpd.getKey():Constants.smsContent.disAgreeUpd.getKey() + ,orders.getLinkPhone(),null,null, + null,categoryMapper); } @@ -845,6 +892,7 @@ }else{ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔"); } + } @@ -950,8 +998,6 @@ .set(Orders::getCancelType,Constants.ONE) .eq(Orders::getId,orders.getId()) ); - //TODO 鍙戝崟鏂瑰彇娑堣鍗曢�氱煡鎺ュ崟鏂� - //鍑忓皯鎺ュ崟閲� memberMapper.update(new UpdateWrapper<Member>().lambda().setSql("receive_num = (receive_num - 1) ").eq(Member::getId,orders.getAcceptMemberId())); } @@ -963,8 +1009,26 @@ this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),member.getId(),null); + List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda() + .and(i->i.eq(Member::getId,orders.getReleaseMemberId()).or().eq(Member::getId,orders.getAcceptMemberId())) + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){ + List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList()); + //鍙戦�佸井淇¢�氱煡 + sendWxMessage.cancelMessage(openIdList,orders,Constants.ONE); + } - + IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,orders.getAcceptMemberId()) + .eq(IdentityInfo::getType,orders.getType()) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + if(Objects.nonNull(wokerIdentityInfo)){ + //鐭俊閫氱煡 + aliSmsService.businessSendSms(Constants.smsContent.releaseCancel.getKey(),wokerIdentityInfo.getTelephone(),orders,null, + null,categoryMapper); + } } @@ -1011,8 +1075,18 @@ this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),member.getId(),null); - //TODO 鎺ュ崟鏂瑰彇娑堣鍗曢�氱煡 + List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda() + .and(i->i.eq(Member::getId,orders.getReleaseMemberId()).or().eq(Member::getId,orders.getAcceptMemberId())) + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){ + List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList()); + //鍙戦�佸井淇¢�氱煡 + sendWxMessage.cancelMessage(openIdList,orders,Constants.TWO); + } + //鐭俊閫氱煡 + aliSmsService.businessSendSms(Constants.smsContent.receiveCancel.getKey(),member.getTelephone(),orders,null, + null,categoryMapper); } @@ -1039,6 +1113,11 @@ if(!Constants.equalsInteger(orders.getReleaseMemberId(),doneOrderDTO.getMember().getId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔"); } + Member payMember = memberMapper.selectById(doneOrderDTO.getMember().getId()); + if(Objects.isNull(payMember)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛淇℃伅寮傚父"); + } + OrderReleaseVO orderReleaseVO = new OrderReleaseVO(); orderReleaseVO.setId(orders.getId()); Object object = null; @@ -1051,7 +1130,7 @@ orders.setOutTradeNo(UUID.randomUUID().toString().replace("-","")); ordersMapper.updateById(orders); //鍞よ捣鏀粯涓氬姟 - object = this.getWxPayResponse(orders,doneOrderDTO.getMember().getOpenid()); + object = this.getWxPayResponse(orders,payMember.getOpenid()); orderReleaseVO.setObject(object); }else{ orders.setStatus(Constants.ordersStatus.done.getKey()); @@ -1084,6 +1163,22 @@ Constants.OrdersLog ordersLog = Constants.OrdersLog.DONE; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),doneOrderDTO.getMember().getId(),null); + + sendWxMessage.revenueMessage(member.getOpenid(),orders); + + //鐭俊閫氱煡鎺ュ崟鏂� + if(Objects.nonNull(orders.getAcceptMemberId())){ + IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,orders.getAcceptMemberId()) + .eq(IdentityInfo::getType,orders.getType()) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + if(Objects.nonNull(wokerIdentityInfo)){ + aliSmsService.businessSendSms(Constants.smsContent.pay.getKey(),wokerIdentityInfo.getTelephone(),orders,null, + null,categoryMapper); + } + } } return orderReleaseVO; } @@ -1174,6 +1269,32 @@ Constants.OrdersLog ordersLog = Constants.OrdersLog.SYSTEM_CANCEL; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),null,loginUserInfo.getId()); + + List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda() + .and(i->i.eq(Member::getId,orders.getReleaseMemberId()).or().eq(Member::getId,orders.getAcceptMemberId())) + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){ + List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList()); + //鍙戦�佸井淇¢�氱煡 + sendWxMessage.cancelMessage(openIdList,orders,Constants.ZERO); + } + //鐭俊閫氱煡鍙戝崟鏂� + aliSmsService.businessSendSms(Constants.smsContent.platformCancel.getKey(),orders.getLinkPhone(),orders,null, + null,categoryMapper); + //鐭俊閫氱煡鎺ュ崟鏂� + if(Objects.nonNull(orders.getAcceptMemberId())){ + IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,orders.getAcceptMemberId()) + .eq(IdentityInfo::getType,orders.getType()) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + if(Objects.nonNull(wokerIdentityInfo)){ + aliSmsService.businessSendSms(Constants.smsContent.platformCancel2.getKey(),wokerIdentityInfo.getTelephone(),orders,null, + null,categoryMapper); + } + } + } @@ -1209,9 +1330,10 @@ .eq(Orders::getId,orders.getId()) ); memberMapper.update(new UpdateWrapper<Member>().lambda() - .setSql(" score = ( total_score +" + commentDTO.getLevel() + " ) / (score_order_num + 1 )") - .setSql(" total_score = total_score +" + commentDTO.getLevel()) - .setSql(" score_order_num = score_order_num + 1 " ).eq(Member::getId,orders.getAcceptMemberId()) + .setSql(" score = ( ifnull(total_score,0) +" + commentDTO.getLevel() + " ) / (ifnull(score_order_num,0) + 1 )") + .setSql(" total_score = ifnull(total_score,0) +" + commentDTO.getLevel()) + .setSql(" score_order_num = ifnull(score_order_num,0) + 1 " ) + .eq(Member::getId,orders.getAcceptMemberId()) ); //鏃ュ織瀛樺偍 Constants.OrdersLog ordersLog = Constants.OrdersLog.COMMENT; @@ -1303,7 +1425,22 @@ this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),orders.getReleaseMemberId(),null); - //TODO 閫氱煡鎺ュ崟鏂� 娆鹃」宸插埌璐� + // 閫氱煡鎺ュ崟鏂� 娆鹃」宸插埌璐� + sendWxMessage.revenueMessage(member.getOpenid(),orders); + + //鐭俊閫氱煡鎺ュ崟鏂� + if(Objects.nonNull(orders.getAcceptMemberId())){ + IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,orders.getAcceptMemberId()) + .eq(IdentityInfo::getType,orders.getType()) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + if(Objects.nonNull(wokerIdentityInfo)){ + aliSmsService.businessSendSms(Constants.smsContent.pay.getKey(),wokerIdentityInfo.getTelephone(),orders,null, + null,categoryMapper); + } + } } } @@ -1650,7 +1787,9 @@ if(CollectionUtils.isEmpty(memberList)){ continue; } + Member member = memberList.get(Constants.ZERO); + Member releaseMember = memberMapper.selectById(orders.getReleaseMemberId()); //鑷姩娲惧崟 Orders model = ordersMapper.selectById(orders.getStatus()); if(!Constants.equalsInteger(model.getStatus(),Constants.ONE)){ @@ -1665,13 +1804,34 @@ ); //鏇存柊鎺ュ崟閲� - memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (publish_num + 1 )").eq(Member::getId,member.getId())); + memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (ifnull(publish_num,0) + 1 )").eq(Member::getId,member.getId())); //鍒涘缓鎿嶄綔鏃ュ織 Constants.OrdersLog ordersLog = Constants.OrdersLog.AUTO; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),member.getId(),null); + IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,member.getId()) + .eq(IdentityInfo::getType,orders.getType()) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + //閫氱煡鍙戝崟鏂� + if(org.apache.commons.lang3.StringUtils.isNotBlank(releaseMember.getOpenid())&&Objects.nonNull(wokerIdentityInfo)){ + //鍙戦�佸井淇¢�氱煡 + sendWxMessage.acceptMessage(releaseMember.getOpenid(),orders,wokerIdentityInfo.getLinkName(),wokerIdentityInfo.getTelephone()); + } + + //閫氱煡鎺ュ崟鏂� + sendWxMessage.autoDispatchMessage(member.getOpenid(),orders,GeoUtils.haversineDistance( + orders.getLgt().doubleValue(), orders.getLat().doubleValue(), + member.getDriverIdentityModel().getLgt().doubleValue(), + member.getDriverIdentityModel().getLat().doubleValue() + )); + + aliSmsService.businessSendSms(Constants.smsContent.dispatch.getKey(),orders.getLinkPhone(),orders,null, + null,categoryMapper); } } -- Gitblit v1.9.3