From 0b7c409aff156bc4d5605893e860c0c3652b9cd8 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期四, 17 七月 2025 19:25:30 +0800 Subject: [PATCH] 111 --- server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 152 ++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 108 insertions(+), 44 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 8bd112f..a640402 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 @@ -17,6 +17,7 @@ import com.doumee.dao.business.*; import com.doumee.dao.business.model.*; import com.doumee.dao.dto.*; +import com.doumee.dao.vo.OrderReleaseVO; import com.doumee.service.business.OrdersService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -42,10 +43,7 @@ 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.*; import java.util.concurrent.TimeUnit; /** @@ -91,7 +89,8 @@ @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) - public Object create(Orders orders) { + public OrderReleaseVO create(Orders orders) { + OrderReleaseVO orderReleaseVO = new OrderReleaseVO(); Object objects = null; this.initVerification(orders); orders.setCreateTime(new Date()); @@ -120,15 +119,16 @@ orders.setStatus(Constants.ordersStatus.waitPay.getKey()); //鍞よ捣鏀粯涓氬姟 objects = this.getWxPayResponse(orders,orders.getMember().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(); for (Multifile multifile:multifileList) { if(Objects.isNull(multifile) - || Objects.isNull(multifile.getObjType()) || StringUtils.isEmpty(multifile.getFileurl()) || StringUtils.isEmpty(multifile.getName())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢淇℃伅閿欒"); @@ -159,7 +159,7 @@ .replace("{param}",orderTypeInfo); this.saveOrderLog(orders,ordersLog, logInfo,orders.getReleaseMemberId(),null); - return objects; + return orderReleaseVO; } private Object getWxPayResponse(Orders orders,String openid){ @@ -219,7 +219,7 @@ || Objects.isNull(orders.getStartDate()) || Objects.isNull(orders.getEndDate()) || StringUtil.isBlank(orders.getLocation()) - || StringUtil.isBlank(orders.getLocationRemark()) + || (!Constants.equalsInteger(Constants.ONE,orders.getType())&&StringUtil.isBlank(orders.getLocationRemark())) || StringUtil.isBlank(orders.getLinkPhone()) || Objects.isNull(orders.getLat()) || Objects.isNull(orders.getLgt()) @@ -263,9 +263,9 @@ for (WayInfoDTO wayInfoDTO:orders.getWayInfoDTOList()) { if(Objects.isNull(wayInfoDTO) ||StringUtils.isEmpty(wayInfoDTO.getLocation()) - ||StringUtils.isEmpty(wayInfoDTO.getProvince()) - ||StringUtils.isEmpty(wayInfoDTO.getCity()) - ||StringUtils.isEmpty(wayInfoDTO.getArea()) +// ||StringUtils.isEmpty(wayInfoDTO.getProvince()) +// ||StringUtils.isEmpty(wayInfoDTO.getCity()) +// ||StringUtils.isEmpty(wayInfoDTO.getArea()) ||Objects.isNull(wayInfoDTO.getLat()) ||Objects.isNull(wayInfoDTO.getLgt()) ){ @@ -298,6 +298,9 @@ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閲戦璁$畻閿欒!"); } } + + + @@ -600,12 +603,17 @@ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"韬唤淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�"); } } - orders.setUpdateTime(new Date()); - orders.setAcceptType(Constants.ZERO); - orders.setAcceptTime(new Date()); - orders.setAcceptMemberId(member.getId()); - orders.setStatus(Constants.ordersStatus.accept.getKey()); - ordersMapper.updateById(orders); + + ordersMapper.update(new UpdateWrapper<Orders>().lambda().eq(Orders::getId,orders.getId()) + .set(Orders::getUpdateTime,new Date()) + .set(Orders::getAcceptType,Constants.ZERO) + .set(Orders::getAcceptTime,new Date()) + .set(Orders::getAcceptMemberId,member.getId()) + .set(Orders::getStatus,Constants.ordersStatus.accept.getKey()) + ); + + + //鏇存柊鎺ュ崟閲� memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (publish_num + 1 )").eq(Member::getId,member.getId())); @@ -701,8 +709,8 @@ .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::getIsUpdateTime,new Date()) + .set(Orders::getUpdateTime,new Date()) .set(Orders::getEstimatedAccount,total) .eq(Orders::getId,orders.getId()) ); @@ -715,12 +723,22 @@ } + @Override public Long getTotal(Orders orders){ + if(Objects.isNull(orders) + ||Objects.isNull(orders.getPrice()) + ||Objects.isNull(orders.getPriceNum1())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } if( (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ZERO )) || Constants.equalsInteger(orders.getType(),Constants.ONE) ){ orders.setPriceNum2(Constants.ONE); + }else{ + if(Objects.isNull(orders.getPriceNum2())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } } return orders.getPrice() * orders.getPriceNum1() * orders.getPriceNum2(); } @@ -757,7 +775,7 @@ if( Constants.equalsInteger(confirmUpdOrderDTO.getStatus(),Constants.ONE)){ ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getIsUpdate,Constants.TWO) - .set(Orders::getUpdateTime,"now()") + .set(Orders::getUpdateTime,new Date()) .eq(Orders::getId,orders.getId()) ); //璁板綍鍚屾剰淇敼鐨勬棩蹇� @@ -767,7 +785,7 @@ }else{ ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getIsUpdate,Constants.TWO) - .set(Orders::getUpdateTime,"now()") + .set(Orders::getUpdateTime,new Date()) .set(Orders::getStatus,Constants.ordersStatus.wait.getKey()) .set(Orders::getAcceptMemberId,null) .set(Orders::getAcceptType,null) @@ -824,8 +842,8 @@ } ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getStatus,Constants.ordersStatus.cancel.getKey()) - .set(Orders::getUpdateTime,"now()") - .set(Orders::getCancelTime,"now()") + .set(Orders::getUpdateTime,new Date()) + .set(Orders::getCancelTime,new Date()) .set(Orders::getCancelType,Constants.ZERO) .eq(Orders::getId,orders.getId()) ); @@ -862,8 +880,8 @@ } ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getStatus,Constants.ordersStatus.cancel.getKey()) - .set(Orders::getUpdateTime,"now()") - .set(Orders::getCancelTime,"now()") + .set(Orders::getUpdateTime,new Date()) + .set(Orders::getCancelTime,new Date()) .set(Orders::getCancelType,Constants.ONE) .eq(Orders::getId,orders.getId()) ); @@ -917,7 +935,7 @@ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璺濈璁㈠崟寮�濮嬫椂闂翠笉瓒�"+cancelTimeHour+"灏忔椂,鏃犳硶鍙栨秷璁㈠崟锛屽闇�澶勭悊璇疯仈绯诲鏈�"); } ordersMapper.update(new UpdateWrapper<Orders>().lambda() - .set(Orders::getUpdateTime,"now()") + .set(Orders::getUpdateTime,new Date()) .set(Orders::getStatus,Constants.ordersStatus.wait.getKey()) .set(Orders::getAcceptMemberId,null) .set(Orders::getAcceptType,null) @@ -1059,8 +1077,8 @@ ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getCommentStatus,Constants.ONE) - .set(Orders::getUpdateTime,"now()") - .set(Orders::getCommentTime,"now()") + .set(Orders::getUpdateTime,new Date()) + .set(Orders::getCommentTime,new Date()) .set(Orders::getCommentLevel,commentDTO.getLevel()) .set(Orders::getCommentType,Constants.ZERO) .eq(Orders::getId,orders.getId()) @@ -1098,10 +1116,10 @@ }else{ //澶勭悊鏀粯瀹屾垚閫昏緫 ordersMapper.update(new UpdateWrapper<Orders>().lambda() - .set(Orders::getUpdateTime,"now()") + .set(Orders::getUpdateTime,new Date()) .set(Orders::getStatus,Constants.ordersStatus.wait) .set(Orders::getPayStatus,Constants.ONE) - .set(Orders::getPayTime,"now()") + .set(Orders::getPayTime,new Date()) .set(Orders::getPayMethod,Constants.ZERO) .set(Orders::getWxExternalNo,paymentNo) .eq(Orders::getId,orders.getId()) @@ -1119,13 +1137,13 @@ }else{ //澶勭悊鏀粯瀹屾垚閫昏緫 ordersMapper.update(new UpdateWrapper<Orders>().lambda() - .set(Orders::getUpdateTime,"now()") + .set(Orders::getUpdateTime,new Date()) .set(Orders::getStatus,Constants.FOUR) .set(Orders::getPayStatus,Constants.ONE) - .set(Orders::getPayTime,"now()") + .set(Orders::getPayTime,new Date()) .set(Orders::getPayMethod,Constants.ZERO) .set(Orders::getWxExternalNo,paymentNo) - .set(Orders::getFinishTime,"now()") + .set(Orders::getFinishTime,new Date()) .eq(Orders::getId,orders.getId()) ); @@ -1367,19 +1385,60 @@ } - - //todo 鑷姩娲惧崟 + /** + * 鑷姩娲惧崟 + */ + @Override public void autoGrabOrders(){ -// String autoConfirmTime = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AUTO_DISPATCH_DISTANCE).getCode(); -// 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") -// ); + String autoConfirmTime = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AUTO_DISPATCH).getCode(); + List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda() + .eq(Orders::getStatus,Constants.ONE).eq(Orders::getCommentStatus,Constants.ZERO) + .apply(" DATE_ADD(create_time, INTERVAL "+autoConfirmTime+" MINUTE) < now() ") + .last("limit 100") + ); + for (Orders orders:ordersList) { + BigDecimal lat = orders.getLat(); + BigDecimal lgt = orders.getLgt(); + //鏌ヨ鑼冨洿鍐呯殑浼氬憳 + List<Member> memberList = memberMapper.selectList(new MPJLambdaWrapper<Member>().selectAll(Member.class) + .select(" ifnull((select r.level from receive_weight r where r.RECEIVE_MAX > t.RECEIVE_NUM and t.RECEIVE_NUM > r.RECEIVE_MIN limit 1 ),0) " ,Member::getLevel) + .select( " ifnull( (select CONVERT( ST_Distance_Sphere ( POINT ( ii.lgt, ii.lat ), POINT ( "+lgt+", "+lat+" )) /1000,DECIMAL(15,2)) from identity_info ii where ii.AUDIT_STATUS = 2 and type = 0 and ii.member_id = t.ID limit 1 ),0) ",Member::getDistance ) + .apply(" id in (" + + " select ii.member_id from identity_info ii where ii.AUDIT_STATUS = 2 and type = '"+orders.getType()+"' " + + " and ( CONVERT( ST_Distance_Sphere ( POINT ( ii.lgt, ii.lat ), POINT ( "+lgt+", "+lat+" )) /1000,DECIMAL(15,2))) < 100 " + + ") ") + .orderByDesc(Member::getLevel) + .orderByDesc(Member::getScore) + .orderByAsc(Member::getDistance) + .last(" limit 1 ") + ); + if(CollectionUtils.isEmpty(memberList)){ + continue; + } + Member member = memberList.get(Constants.ZERO); + //鑷姩娲惧崟 + Orders model = ordersMapper.selectById(orders.getStatus()); + if(!Constants.equalsInteger(model.getStatus(),Constants.ONE)){ + continue; + } + ordersMapper.update(new UpdateWrapper<Orders>().lambda().eq(Orders::getId,model.getId()) + .set(Orders::getUpdateTime,new Date()) + .set(Orders::getAcceptType,Constants.ONE) + .set(Orders::getAcceptTime,new Date()) + .set(Orders::getAcceptMemberId,member.getId()) + .set(Orders::getStatus,Constants.ordersStatus.accept.getKey()) + ); + //鏇存柊鎺ュ崟閲� + memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (publish_num + 1 )").eq(Member::getId,member.getId())); + //鍒涘缓鎿嶄綔鏃ュ織 + Constants.OrdersLog ordersLog = Constants.OrdersLog.AUTO; + this.saveOrderLog(orders,ordersLog, + ordersLog.getInfo(),member.getId(),null); + } } //鑷姩璇勪环 璁㈠崟瀹屾垚7澶╁悗鑷姩璇勪环4鏄� @@ -1395,8 +1454,8 @@ 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::getUpdateTime,new Date()) + .set(Orders::getCommentTime,new Date()) .set(Orders::getCommentLevel,Constants.FOUR) .set(Orders::getCommentType,Constants.ZERO) .eq(Orders::getId,orders.getId()) @@ -1430,7 +1489,7 @@ for (Orders orders:ordersList) { ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getIsUpdate,Constants.TWO) - .set(Orders::getUpdateTime,"now()") + .set(Orders::getUpdateTime,new Date()) .eq(Orders::getId,orders.getId()) ); //璁板綍鍚屾剰淇敼鐨勬棩蹇� @@ -1442,6 +1501,11 @@ } + @Override + public void initializeCode(){ + //鏇存柊缂撳瓨 + redisTemplate.opsForValue().set(Constants.RedisKeys.ORDER_CODE,0); + } -- Gitblit v1.9.3