From 0cfbaf9a439dc75824c52a6e58b6849064afbc80 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期六, 19 七月 2025 10:32:38 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 479 ++++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 336 insertions(+), 143 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..8b094d9 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; /** @@ -84,6 +82,9 @@ private WithdrawalOrdersMapper withdrawalOrdersMapper; @Autowired + private ReceiveWeightMapper receiveWeightMapper; + + @Autowired private WxMiniUtilService wxMiniUtilService; @Resource @@ -91,7 +92,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()); @@ -118,17 +120,19 @@ //鐢ㄩ璁㈠崟 if(Constants.equalsInteger(orders.getType(),Constants.TWO)){ orders.setStatus(Constants.ordersStatus.waitPay.getKey()); + orders.setOutTradeNo(UUID.randomUUID().toString().replace("-","")); //鍞よ捣鏀粯涓氬姟 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 +163,7 @@ .replace("{param}",orderTypeInfo); this.saveOrderLog(orders,ordersLog, logInfo,orders.getReleaseMemberId(),null); - return objects; + return orderReleaseVO; } private Object getWxPayResponse(Orders orders,String openid){ @@ -175,10 +179,10 @@ Payer payer = new Payer(); payer.setSubOpenid(openid); request.setPayer(payer); - request.setOutTradeNo(orders.getCode()); + request.setOutTradeNo(orders.getOutTradeNo()); request.setNotifyUrl(WxMiniConfig.wxProperties.getNotifyUrl());//杩欎釜鍥炶皟url蹇呴』鏄痟ttps寮�澶寸殑 Amount amount = new Amount(); - amount.setTotal(orders.getEstimatedAccount().intValue()); + amount.setTotal(1);//orders.getEstimatedAccount().intValue()); request.setAmount(amount); // PrepayResponse res = WxMiniConfig.wxPayService.prepay(request); // 璺熶箣鍓嶄笅鍗曠ず渚嬩竴鏍凤紝濉厖棰勪笅鍗曞弬鏁� @@ -219,11 +223,10 @@ || Objects.isNull(orders.getStartDate()) || Objects.isNull(orders.getEndDate()) || StringUtil.isBlank(orders.getLocation()) - || StringUtil.isBlank(orders.getLocationRemark()) || StringUtil.isBlank(orders.getLinkPhone()) || Objects.isNull(orders.getLat()) || Objects.isNull(orders.getLgt()) - || Objects.isNull(orders.getCategoryId()) + || (!Constants.equalsInteger(orders.getType(),Constants.TWO) && Objects.isNull(orders.getCategoryId())) || (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Objects.isNull(orders.getWorkType())) || Objects.isNull(orders.getPriceNum1()) || Objects.isNull(orders.getEstimatedAccount()) @@ -263,9 +266,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 +301,9 @@ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閲戦璁$畻閿欒!"); } } + + + @@ -398,28 +404,8 @@ throw new BusinessException(ResponseStatus.DATA_EMPTY); } orders.setStatusName(Constants.ordersStatus.getName(orders.getStatus())); + this.getPriceUnit(orders); - if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){ - if(Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)){ - orders.setPriceUnit("鍏�/鏂�"); - }else if(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)){ - orders.setPriceUnit("鍏�/浜�/澶�"); - }else{ - if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){ - orders.setPriceUnit("鍏�/浜�/澶�"); - }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){ - orders.setPriceUnit("鍏�/浜�/灏忔椂"); - }else{ - orders.setPriceUnit("鍏�/鏂�"); - } - } - }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){ - if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){ - orders.setPriceUnit("鍏�/澶�"); - }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){ - orders.setPriceUnit("鍏�/娆�"); - } - } //闄勪欢淇℃伅 List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,orders.getId()) .eq(Multifile::getIsdeleted,Constants.ZERO).eq(Multifile::getObjType,Constants.ONE).orderByAsc(Multifile::getId)); @@ -450,6 +436,29 @@ return orders; } + public void getPriceUnit(Orders orders){ + if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){ + if(Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)){ + orders.setPriceUnit("鍏�/鏂�"); + }else if(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)){ + orders.setPriceUnit("鍏�/浜�/澶�"); + }else{ + if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){ + orders.setPriceUnit("鍏�/浜�/澶�"); + }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){ + orders.setPriceUnit("鍏�/浜�/灏忔椂"); + }else{ + orders.setPriceUnit("鍏�/鏂�"); + } + } + }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){ + if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){ + orders.setPriceUnit("鍏�/澶�"); + }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){ + orders.setPriceUnit("鍏�/娆�"); + } + } + } @Override public Orders findOne(Orders orders) { QueryWrapper<Orders> wrapper = new QueryWrapper<>(orders); @@ -600,12 +609,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 +715,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 +729,23 @@ } + @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) + || Constants.equalsInteger(orders.getType(),Constants.TWO) ){ 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 +782,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 +792,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) @@ -780,9 +805,7 @@ Constants.OrdersLog ordersLog = Constants.OrdersLog.UPD_DISAGREE; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),confirmUpdOrderDTO.getMember().getId(),null); - //TODO 鍙戦�佷笉鍚屾剰鍙樻洿閫氱煡 - } } @@ -824,8 +847,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 +885,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 +940,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) @@ -942,7 +965,7 @@ */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) - public Object doneOrder(DoneOrderDTO doneOrderDTO){ + public OrderReleaseVO doneOrder(DoneOrderDTO doneOrderDTO){ if(Objects.isNull(doneOrderDTO)||Objects.isNull(doneOrderDTO.getOrderId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } @@ -959,7 +982,8 @@ if(!Constants.equalsInteger(orders.getReleaseMemberId(),doneOrderDTO.getMember().getId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔"); } - orders.setPayAccount(doneOrderDTO.getAmount()); + OrderReleaseVO orderReleaseVO = new OrderReleaseVO(); + orderReleaseVO.setId(orders.getId()); Object object = null; //鐢ㄩ璁㈠崟 if(!Constants.equalsInteger(orders.getType(),Constants.TWO)){ @@ -967,20 +991,81 @@ //鎻愭垚閲戦 Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue()); orders.setReceiveAccount(orders.getPayAccount() - tcje); + orders.setOutTradeNo(UUID.randomUUID().toString().replace("-","")); ordersMapper.updateById(orders); //鍞よ捣鏀粯涓氬姟 object = this.getWxPayResponse(orders,orders.getMember().getOpenid()); + orderReleaseVO.setObject(object); }else{ orders.setStatus(Constants.ordersStatus.done.getKey()); + orders.setFinishTime(new Date()); + ordersMapper.updateById(orders); + + Member member = memberMapper.selectById(orders.getAcceptMemberId()); + + //瀛樺偍娴佹按璁板綍 + MemberRevenue memberRevenue = new MemberRevenue(); + memberRevenue.setCreateTime(new Date()); + memberRevenue.setMemberId(orders.getAcceptMemberId()); + memberRevenue.setType(orders.getType()); + memberRevenue.setOptType(Constants.ONE); + memberRevenue.setBeforeAmount(member.getAmount()); + memberRevenue.setAmount(orders.getReceiveAccount()); + memberRevenue.setAfterAmount(member.getAmount() + orders.getReceiveAccount()); + if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){ + memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()) + "-" + + (Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)?"閲囨憳宸�":(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"鍒嗘嫞宸�":"鍖呰宸�"))); + }else{ + memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType())); + } + memberRevenue.setObjId(orders.getId()); + memberRevenue.setObjType(Constants.ZERO); + memberRevenue.setStatus(Constants.ZERO); + memberRevenueMapper.insert(memberRevenue); + //鏃ュ織瀛樺偍 Constants.OrdersLog ordersLog = Constants.OrdersLog.DONE; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),doneOrderDTO.getMember().getId(),null); } - return object; + return orderReleaseVO; } + + @Override + public OrderReleaseVO reusePay(ReusePayDTO reusePayDTO){ + if(Objects.isNull(reusePayDTO)||Objects.isNull(reusePayDTO.getOrderId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + Orders orders = ordersMapper.selectById(reusePayDTO.getOrderId()); + if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(orders.getType(),Constants.TWO)&&Objects.isNull(reusePayDTO.getAmount())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + + if(!((( Constants.equalsInteger(orders.getType(),Constants.TWO) && Constants.equalsInteger(orders.getStatus(),Constants.ZERO) ) + || ( !Constants.equalsInteger(orders.getType(),Constants.TWO) && Constants.equalsInteger(orders.getStatus(),Constants.THREE) )) + && Constants.equalsInteger(orders.getPayStatus(),Constants.ZERO) )){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆"); + } + OrderReleaseVO orderReleaseVO = new OrderReleaseVO(); + if(!Constants.equalsInteger(orders.getType(),Constants.TWO)){ + orders.setPayAccount(reusePayDTO.getAmount()); + //鎻愭垚閲戦 + Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue()); + orders.setReceiveAccount(orders.getPayAccount() - tcje); + } + orders.setOutTradeNo(UUID.randomUUID().toString().replace("-","")); + ordersMapper.updateById(orders); + //鍞よ捣鏀粯涓氬姟 + Object object = this.getWxPayResponse(orders,orders.getMember().getOpenid()); + orderReleaseVO.setObject(object); + orderReleaseVO.setId(orders.getId()); + return orderReleaseVO; + } @Override @@ -1059,26 +1144,22 @@ 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()) ); - memberMapper.update(new UpdateWrapper<Member>().lambda() .set(Member::getScore," ( total_score +" + commentDTO.getLevel() + " ) / (score_order_num + 1 )") .set(Member::getTotalScore," total_score +" + commentDTO.getLevel()) .set(Member::getScoreOrderNum," score_order_num + 1 " ).eq(Member::getId,orders.getAcceptMemberId()) ); - //鏃ュ織瀛樺偍 Constants.OrdersLog ordersLog = Constants.OrdersLog.COMMENT; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),orders.getAcceptMemberId(),null); } - - /** @@ -1098,10 +1179,10 @@ }else{ //澶勭悊鏀粯瀹屾垚閫昏緫 ordersMapper.update(new UpdateWrapper<Orders>().lambda() - .set(Orders::getUpdateTime,"now()") - .set(Orders::getStatus,Constants.ordersStatus.wait) + .set(Orders::getUpdateTime,new Date()) + .set(Orders::getStatus,Constants.ordersStatus.wait.getKey()) .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 +1200,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()) ); @@ -1139,6 +1220,12 @@ memberRevenue.setBeforeAmount(member.getAmount()); memberRevenue.setAmount(orders.getReceiveAccount()); memberRevenue.setAfterAmount(member.getAmount() + orders.getReceiveAccount()); + if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){ + memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()) + "-" + + (Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)?"閲囨憳宸�":(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"鍒嗘嫞宸�":"鍖呰宸�"))); + }else{ + memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType())); + } memberRevenue.setObjId(orders.getId()); memberRevenue.setObjType(Constants.ZERO); memberRevenue.setStatus(Constants.ZERO); @@ -1157,6 +1244,7 @@ ordersLog.getInfo(),orders.getReleaseMemberId(),null); //TODO 閫氱煡鎺ュ崟鏂� 娆鹃」宸插埌璐� + } } return ("澶勭悊鎴愬姛!"); @@ -1169,73 +1257,124 @@ MPJLambdaWrapper<Orders> queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); Orders model = pageWrap.getModel(); + if(Objects.isNull(model) + || Objects.isNull(model.getQueryLat()) + || Objects.isNull(model.getQueryLgt()) + || Objects.isNull(model.getQueryMyOrderType()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + BigDecimal chefLat = model.getQueryLat(); + BigDecimal chefLgt = model.getQueryLgt(); + BigDecimal driverLat = model.getQueryLat(); + BigDecimal driverLgt = model.getQueryLgt(); + BigDecimal workerLat = model.getQueryLat(); + BigDecimal workerLgt = model.getQueryLgt(); + IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,model.getMember().getId()) + .eq(IdentityInfo::getType,Constants.ZERO) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + if(Objects.nonNull(wokerIdentityInfo)){ + workerLat = wokerIdentityInfo.getLat(); + workerLgt = wokerIdentityInfo.getLgt(); + } + IdentityInfo driverIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,model.getMember().getId()) + .eq(IdentityInfo::getType,Constants.ONE) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + if(Objects.nonNull(driverIdentityInfo)){ + driverLat = driverIdentityInfo.getLat(); + driverLgt = driverIdentityInfo.getLgt(); + } + IdentityInfo chefIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() + .eq(IdentityInfo::getMemberId,model.getMember().getId()) + .eq(IdentityInfo::getType,Constants.TWO) + .eq(IdentityInfo::getAuditStatus,Constants.TWO) + .last("limit 1") + ); + if(Objects.nonNull(chefIdentityInfo)){ + chefLat = chefIdentityInfo.getLat(); + chefLgt = chefIdentityInfo.getLgt(); + } queryWrapper.selectAll(Orders.class) .select("c1.name",Orders::getCategoryName) .select("c2.name",Orders::getTransportTypeName) .leftJoin(" category c1 on t.category_id = c1.id ") - .leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.id "); + .leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.id ") + .select(" case when T.LGT IS NULL OR T.LAT IS NULL THEN 0 " + + " when t.TYPE = 0 then CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+workerLgt+", "+workerLat+" )) /1000,DECIMAL(15,2)) " + + " when t.TYPE = 1 then CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+driverLgt+", "+driverLat+" )) /1000,DECIMAL(15,2)) " + + " else CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+chefLgt+", "+chefLat+" )) /1000,DECIMAL(15,2)) end " , Orders::getDistance) + .eq(Objects.nonNull(model.getType()),Orders::getType,model.getType()); if(Objects.nonNull(model.getQueryMyOrderType())){ if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ZERO)){ //鍙戝崟鏂� 鎴戠殑璁㈠崟 queryWrapper.eq(Orders::getReleaseMemberId,model.getMember().getId()); + queryWrapper.eq(Objects.nonNull(model.getStatus()),Orders::getStatus,model.getStatus()); + queryWrapper.orderByDesc(Orders::getCreateTime); }else if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ONE)){ //鎺ュ崟鏂� 鎴戠殑璁㈠崟 queryWrapper.eq(Orders::getAcceptMemberId,model.getMember().getId()); + queryWrapper.eq(Objects.nonNull(model.getStatus()),Orders::getStatus,model.getStatus()); + queryWrapper.orderByDesc(Orders::getCreateTime); }else{ + //鏌ヨ鐢ㄦ埛鐨勬帴鍗曟潈閲� + ReceiveWeight receiveWeight = receiveWeightMapper.selectOne(new QueryWrapper<ReceiveWeight>().lambda().eq(ReceiveWeight::getDeleted,Constants.ZERO).apply(" RECEIVE_MIN < "+model.getMember().getReceiveNum()+" and RECEIVE_MAX > " + model.getMember().getReceiveNum()).last(" limit 1 ")); + if(Objects.nonNull(receiveWeight)){ + queryWrapper.apply(" DATE_ADD(t.CREATE_TIME, INTERVAL "+receiveWeight.getDelayTime()+" MINUTE) < now() "); + } queryWrapper.eq(Orders::getStatus,Constants.ordersStatus.wait.getKey()); - //鎺ュ崟澶у巺 - queryWrapper.and(Constants.equalsInteger(model.getMember().getWorkerIdentity(),Constants.TWO)||Constants.equalsInteger(model.getMember().getDriverIdentity(),Constants.TWO)||Constants.equalsInteger(model.getMember().getChefIdentity(),Constants.TWO),i-> - i.eq(Constants.equalsInteger(model.getMember().getWorkerIdentity(),Constants.TWO),Orders::getType,Constants.ZERO) - .or() - .eq(Constants.equalsInteger(model.getMember().getDriverIdentity(),Constants.TWO),Orders::getType,Constants.ONE) - .or() - .eq(Constants.equalsInteger(model.getMember().getChefIdentity(),Constants.TWO),Orders::getType,Constants.TWO) - ); - - queryWrapper.apply(!(Constants.equalsInteger(model.getMember().getWorkerIdentity(),Constants.TWO)||Constants.equalsInteger(model.getMember().getDriverIdentity(),Constants.TWO)||Constants.equalsInteger(model.getMember().getChefIdentity(),Constants.TWO))," 1 = 2 " - ); - + queryWrapper.ne(Orders::getReleaseMemberId,model.getMember().getId()); + if(Objects.nonNull(model.getSortType())){ + if(Constants.equalsInteger(model.getSortType(),Constants.ZERO)){ + queryWrapper.orderByDesc(Orders::getCreateTime); + }else if(Constants.equalsInteger(model.getSortType(),Constants.ONE)){ + queryWrapper.orderByAsc(" distance "); + }else{ + queryWrapper.orderByDesc(Orders::getEstimatedAccount); + } + } } - } - for(PageWrap.SortData sortData: pageWrap.getSorts()) { - if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { - queryWrapper.orderByDesc(sortData.getProperty()); - } else { - queryWrapper.orderByAsc(sortData.getProperty()); - } - } + } IPage<Orders> iPage = ordersMapper.selectJoinPage(page,Orders.class,queryWrapper); - if(Objects.nonNull(model.getQueryMyOrderType())&&Constants.equalsInteger(model.getQueryMyOrderType(),Constants.TWO)){ - if(Constants.equalsInteger(model.getMember().getUseIdentity(),Constants.ONE)){ - model.getMember().setWorkerIdentityModel( - identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() - .eq(IdentityInfo::getMemberId,model.getMember().getId()) - .eq(IdentityInfo::getType,Constants.ZERO) - .eq(IdentityInfo::getAuditStatus,Constants.TWO) - .last("limit 1") - ) - ); - model.getMember().setDriverIdentityModel( - identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() - .eq(IdentityInfo::getMemberId,model.getMember().getId()) - .eq(IdentityInfo::getType,Constants.ONE) - .eq(IdentityInfo::getAuditStatus,Constants.TWO) - .last("limit 1") - ) - ); - model.getMember().setChefIdentityModel( - identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() - .eq(IdentityInfo::getMemberId,model.getMember().getId()) - .eq(IdentityInfo::getType,Constants.TWO) - .eq(IdentityInfo::getAuditStatus,Constants.TWO) - .last("limit 1") - ) - ); - } - for (Orders orders:iPage.getRecords()) { - this.getDistance(model.getMember(),orders); - } + for (Orders orders:iPage.getRecords()) { + this.getPriceUnit(orders); } +// if(Objects.nonNull(model.getQueryMyOrderType())&&Constants.equalsInteger(model.getQueryMyOrderType(),Constants.TWO)){ +// if(Constants.equalsInteger(model.getMember().getUseIdentity(),Constants.ONE)){ +// model.getMember().setWorkerIdentityModel( +// identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() +// .eq(IdentityInfo::getMemberId,model.getMember().getId()) +// .eq(IdentityInfo::getType,Constants.ZERO) +// .eq(IdentityInfo::getAuditStatus,Constants.TWO) +// .last("limit 1") +// ) +// ); +// model.getMember().setDriverIdentityModel( +// identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() +// .eq(IdentityInfo::getMemberId,model.getMember().getId()) +// .eq(IdentityInfo::getType,Constants.ONE) +// .eq(IdentityInfo::getAuditStatus,Constants.TWO) +// .last("limit 1") +// ) +// ); +// model.getMember().setChefIdentityModel( +// identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() +// .eq(IdentityInfo::getMemberId,model.getMember().getId()) +// .eq(IdentityInfo::getType,Constants.TWO) +// .eq(IdentityInfo::getAuditStatus,Constants.TWO) +// .last("limit 1") +// ) +// ); +// } +// for (Orders orders:iPage.getRecords()) { +// this.getDistance(model.getMember(),orders); +// } +// } return PageData.from(iPage); } @@ -1291,28 +1430,36 @@ public Orders getDetail(Integer id,Integer userType) { Orders orders = ordersMapper.selectJoinOne(Orders.class,new MPJLambdaWrapper<Orders>() .selectAll(Orders.class) + .select(" m1.name " , Orders::getReleaseName) + .select(" m1.telephone " , Orders::getReleasePhone) + .select(" case when i.AUTH_TYPE = 0 then i.LINK_NAME else i.COMPANY_NAME end " , Orders::getAcceptName) + .select(" i.TELEPHONE " , Orders::getAcceptPhone) .select("c1.name",Orders::getCategoryName) .select("c2.name",Orders::getTransportTypeName) + .select(" m2.SCORE " , Orders::getScore) + .select(" m1.PUBLISH_NUM " , Orders::getPublishNum) + .select(" m2.RECEIVE_NUM " , Orders::getReceiveNum) + .select(" m1.COVER_IMAGE " , Orders::getReleaseCoverImage) + .select(" m2.COVER_IMAGE " , Orders::getAcceptCoverImage) .leftJoin(" category c1 on t.category_id = c1.id ") .leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.id ") + .leftJoin("member m1 on t.RELEASE_MEMBER_ID = m1.id ") + .leftJoin("member m2 on t.ACCEPT_MEMBER_ID = m2.id ") + .leftJoin("identity_info i on m2.id = i.MEMBER_ID and i.TYPE = t.type and i.AUDIT_STATUS = 2 ") + .eq(Orders::getId,id) ); if(Objects.isNull(orders)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(Objects.nonNull(userType)){ - Member member = memberMapper.selectById( - Constants.equalsInteger(userType,Constants.ZERO)?orders.getReleaseMemberId():orders.getAcceptMemberId() - ); - if(Objects.nonNull(member)){ - if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getCoverImage())){ - //澶村儚淇℃伅 - String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode() - +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode(); - member.setFullCoverImage(path + member.getCoverImage()); - } - orders.setMember(member); - } + //澶村儚淇℃伅 + String coverPath = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode() + +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode(); + if(org.apache.commons.lang3.StringUtils.isNotBlank(orders.getReleaseCoverImage())){ + orders.setReleaseCoverImage(coverPath + orders.getReleaseCoverImage()); + } + if(org.apache.commons.lang3.StringUtils.isNotBlank(orders.getAcceptCoverImage())){ + orders.setAcceptCoverImage(coverPath + orders.getAcceptCoverImage()); } List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,orders.getId()) .eq(Multifile::getIsdeleted,Constants.ZERO).eq(Multifile::getObjType,Constants.ONE).orderByAsc(Multifile::getId)); @@ -1324,7 +1471,7 @@ } orders.setMultifileList(multifileList); } - + orders.setStatusName(Constants.ordersStatus.getName(orders.getStatus())); return orders; } @@ -1367,19 +1514,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 +1583,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 +1618,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 +1630,11 @@ } + @Override + public void initializeCode(){ + //鏇存柊缂撳瓨 + redisTemplate.opsForValue().set(Constants.RedisKeys.ORDER_CODE,0); + } -- Gitblit v1.9.3