server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java
@@ -1,6 +1,7 @@ package com.doumee.api.business; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.doumee.config.wx.TransferDetailEntityNew; import com.doumee.config.wx.WxMiniConfig; import com.doumee.core.constants.Constants; @@ -59,6 +60,7 @@ */ @PostMapping("/web/wxPayNotify") public ApiResponse wxPay_notify(HttpServletRequest request) { log.error("微信æ¯ä»åè°ç»æå¼å§===========" ); try { ServletInputStream inputStream = request.getInputStream(); StringBuffer stringBuffer = new StringBuffer(); @@ -97,6 +99,7 @@ Transaction result = parser.parse(requestParam, Transaction.class); log.error("æ¯ä»åè°ä¿¡æ¯ï¼{}"+ JSONObject.toJSONString(result)); //èªå®ä¹è®¢åå· String outTradeNo = result.getOutTradeNo(); //微信订åå· @@ -113,11 +116,12 @@ } else { // æ¯ä»å¤±è´¥ switch (result.getAttach()) { case "createGoodsOrder": { case "createOrder": { break; } } } log.error("微信æ¯ä»åè°ç»æç»æ===========" ); return ApiResponse.success("å¤çæå!"); } catch (Exception e) { e.printStackTrace(); server/admin/src/main/java/com/doumee/job/AutoCancelOrdersJob.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package com.doumee.job; import com.doumee.core.job.BaseJob; import com.doumee.core.job.JobContext; import com.doumee.core.job.JobParam; import com.doumee.service.business.OrdersService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * èªå¨åæ¶æªæ¯ä»è®¢å * @author dm * @since 2025/03/31 16:44 */ @Slf4j @Component("AutoCancelOrdersJob") public class AutoCancelOrdersJob extends BaseJob { @Autowired private OrdersService ordersService; @Override public JobContext execute(JobParam param) { JobContext jobContext = new JobContext(); try { ordersService.autoCancelWaitPay(); jobContext.setContext("èªå¨åæ¶æªæ¯ä»è®¢å"); } catch (Exception e) { e.printStackTrace(); } return jobContext; } } server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java
@@ -56,7 +56,7 @@ */ public void identityInfoMessage(String openid, IdentityInfo identityInfo){ try{ RestTemplate restTemplate = new RestTemplate(); String accessToken = WxMiniConfig.wxMaService.getAccessToken(); log.info("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ - 认è¯ä¿¡æ¯ -> accessTokenï¼{}",accessToken); //è¿éç®åèµ·è§æä»¬æ¯æ¬¡é½è·åææ°çaccess_tokenï¼æ¶é´å¼åä¸ï¼åºè¯¥å¨access_tokenå¿«è¿ææ¶åéæ°è·åï¼ @@ -66,12 +66,11 @@ //ç¨æ·çopenidï¼è¦åéç»é£ä¸ªç¨æ·ï¼ wxMsgVO.setTouser(openid); //è®¢é æ¶æ¯æ¨¡æ¿id wxMsgVO.setTemplate_id("VJho7-lf-4_WZFfOzenDndgwNDIA0EvCiE6vqBnExpQ"); wxMsgVO.setTemplate_id("VJho7-lf-4_WZFfOzenDnX6sOhYBJWwkLExVjBB563U"); Map<String, TemplateData> m = new HashMap<>(4); m.put("thing2", new TemplateData(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO)?"å®å认è¯":Constants.equalsInteger(identityInfo.getType(),Constants.ONE)?"è¿è´§è®¤è¯":"ä¾é¤è®¤è¯")); m.put("thing2", new TemplateData(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO)?"ç¨å·¥è®¤è¯":Constants.equalsInteger(identityInfo.getType(),Constants.ONE)?"è¿è´§è®¤è¯":"ä¾é¤è®¤è¯")); m.put("phrase6", new TemplateData(Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.TWO)?"éè¿":"æªéè¿")); m.put("time12", new TemplateData(DateUtil.formatDate(identityInfo.getAuditTime(),"yyyy-MM-dd HH:mm"))); m.put("thing14", new TemplateData(identityInfo.getAuditRemark())); wxMsgVO.setPage(mineUrl); wxMsgVO.setData(m); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ è®¤è¯ä¿¡æ¯ï¼{}", JSONObject.toJSONString(wxMsgVO)); @@ -94,7 +93,7 @@ * @throws WxErrorException */ public void cancelMessage(List<String> openidList, Orders orders,Integer cancelType ){ RestTemplate restTemplate = new RestTemplate(); try{ String accessToken = WxMiniConfig.wxMaService.getAccessToken(); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ - 订ååæ¶ä¸å¡ -> accessTokenï¼{}",accessToken); @@ -109,7 +108,7 @@ m.put("character_string3", new TemplateData(orders.getCode())); m.put("thing2", new TemplateData(Constants.orderType.getName(orders.getType()))); m.put("thing1", new TemplateData(orders.getLocation() + (StringUtils.isNotBlank(orders.getLocationRemark())?orders.getLocationRemark():""))); m.put("date8", new TemplateData(DateUtil.getFomartDate(orders.getCancelTime(),"yyyy-MM-dd HH:mm:ss"))); m.put("date8", new TemplateData(DateUtil.formatDate(orders.getCancelTime(),"yyyy-MM-dd HH:mm:ss"))); m.put("thing6", new TemplateData(Constants.equalsInteger(cancelType,Constants.ZERO)?"å¹³å°åæ¶":Constants.equalsInteger(cancelType,Constants.ONE)?"å忹忶":"æ¥åæ¹åæ¶")); String pageUrl = Constants.equalsInteger(orders.getType(),Constants.orderType.hyd.getKey())?orderDetailFreight: Constants.equalsInteger(orders.getType(),Constants.orderType.scd.getKey())?orderDetailFood:orderDetail; @@ -145,7 +144,7 @@ * @throws WxErrorException */ public void acceptMessage(String openid, Orders orders,String memberName,String memberPhone){ RestTemplate restTemplate = new RestTemplate(); try{ String accessToken = WxMiniConfig.wxMaService.getAccessToken(); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ - æ¥åä¸å¡ -> accessTokenï¼{}",accessToken); @@ -180,7 +179,7 @@ public void orderUpdMessage(String openid, Orders orders){ RestTemplate restTemplate = new RestTemplate(); try{ String accessToken = WxMiniConfig.wxMaService.getAccessToken(); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ - 订ååæ´éç¥ -> accessTokenï¼{}",accessToken); @@ -218,7 +217,7 @@ public void withdrawalMessage(String openid, WithdrawalOrders withdrawalOrders){ try{ RestTemplate restTemplate = new RestTemplate(); String accessToken = WxMiniConfig.wxMaService.getAccessToken(); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ - æç°æåéç¥ -> accessTokenï¼{}",accessToken); //è¿éç®åèµ·è§æä»¬æ¯æ¬¡é½è·åææ°çaccess_tokenï¼æ¶é´å¼åä¸ï¼åºè¯¥å¨access_tokenå¿«è¿ææ¶åéæ°è·åï¼ @@ -249,7 +248,7 @@ public void revenueMessage(String openid, Orders orders){ try{ RestTemplate restTemplate = new RestTemplate(); String accessToken = WxMiniConfig.wxMaService.getAccessToken(); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ - è®¢åæ¶çéç¥ -> accessTokenï¼{}",accessToken); //è¿éç®åèµ·è§æä»¬æ¯æ¬¡é½è·åææ°çaccess_tokenï¼æ¶é´å¼åä¸ï¼åºè¯¥å¨access_tokenå¿«è¿ææ¶åéæ°è·åï¼ @@ -281,7 +280,7 @@ public void autoDispatchMessage(String openid, Orders orders,double distance){ try{ RestTemplate restTemplate = new RestTemplate(); String accessToken = WxMiniConfig.wxMaService.getAccessToken(); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ - æå¡æ´¾å -> accessTokenï¼{}",accessToken); //è¿éç®åèµ·è§æä»¬æ¯æ¬¡é½è·åææ°çaccess_tokenï¼æ¶é´å¼åä¸ï¼åºè¯¥å¨access_tokenå¿«è¿ææ¶åéæ°è·åï¼ @@ -296,7 +295,7 @@ m.put("thing3", new TemplateData(orders.getOrderContent())); m.put("phrase4", new TemplateData("æ¤å°è·ç¦»æ¨"+distance+"å ¬é")); m.put("amount28", new TemplateData(orders.getEstimatedAccount().toString())); m.put("thing12", new TemplateData("å·¥åå°äº"+DateUtil.getFomartDate(orders.getStartDate(),"MM-dd")+"å¼å§")); m.put("thing12", new TemplateData("å·¥åå°äº"+DateUtil.formatDate(orders.getStartDate(),"MM-dd")+"å¼å§")); String pageUrl = Constants.equalsInteger(orders.getType(),Constants.orderType.hyd.getKey())?orderDetailFreight: Constants.equalsInteger(orders.getType(),Constants.orderType.scd.getKey())?orderDetailFood:orderDetail; pageUrl = pageUrl.replace("{id}",orders.getId().toString()); @@ -311,8 +310,35 @@ }catch (WxErrorException wxErrorException){ } } public void waitPayMessage(String openid, Orders orders){ try{ String accessToken = WxMiniConfig.wxMaService.getAccessToken(); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ - 订åéé¢ç¡®è®¤å¾ æ¯ä» -> accessTokenï¼{}",accessToken); //è¿éç®åèµ·è§æä»¬æ¯æ¬¡é½è·åææ°çaccess_tokenï¼æ¶é´å¼åä¸ï¼åºè¯¥å¨access_tokenå¿«è¿ææ¶åéæ°è·åï¼ String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken; //æ¼æ¥æ¨éçæ¨¡ç WxMsgVO wxMsgVO = new WxMsgVO(); wxMsgVO.setTouser(openid); //è®¢é æ¶æ¯æ¨¡æ¿id wxMsgVO.setTemplate_id("3rOz7DAnawrkKDM8b5_XW4FLivISWYov6d7QSC4ORsg"); Map<String, TemplateData> m = new HashMap<>(5); m.put("character_string1", new TemplateData(orders.getCode())); m.put("thing7", new TemplateData( Constants.getOrderInfo(orders))); m.put("amount14", new TemplateData(new BigDecimal(orders.getPayAccount().toString()).divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP).toString())); String pageUrl = Constants.equalsInteger(orders.getType(),Constants.orderType.hyd.getKey())?orderDetailFreight: Constants.equalsInteger(orders.getType(),Constants.orderType.scd.getKey())?orderDetailFood:orderDetail; pageUrl = pageUrl.replace("{id}",orders.getId().toString()); wxMsgVO.setPage(pageUrl); wxMsgVO.setData(m); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ è®¢åéé¢ç¡®è®¤å¾ æ¯ä»ï¼{}", JSONObject.toJSONString(wxMsgVO)); //ç¨æ·çopenidï¼è¦åéç»é£ä¸ªç¨æ·ï¼ String responseEntity = HttpsUtil.postJson(url,JSONObject.toJSONString(wxMsgVO)); log.error("微信å°ç¨åº->å¾®ä¿¡æ¶æ¯éç¥ è®¢åéé¢ç¡®è®¤å¾ æ¯ä»ï¼{}", JSONObject.toJSONString(responseEntity)); }catch (WxErrorException wxErrorException){ } } } server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -1,5 +1,6 @@ package com.doumee.core.constants; import com.doumee.dao.business.model.Orders; import lombok.AllArgsConstructor; import lombok.Getter; @@ -56,6 +57,7 @@ public static final String AUTO_DISPATCH ="AUTO_DISPATCH" ; public static final String AUTO_DISPATCH_DISTANCE ="AUTO_DISPATCH_DISTANCE" ; public static final String AUTO_CONFIRM ="AUTO_CONFIRM" ; public static final String AUTO_CANCEL_WAIT_PAY ="AUTO_CANCEL_WAIT_PAY" ; public static final String QYWX = "QYWX"; public static final Integer ONE = 1; @@ -561,22 +563,23 @@ public enum ordersStatus { waitPay(0, "å¾ æ¯ä»"), wait(1, "å¾ æ¥å"), accept(2, "å·²æ¥å"), doing(3, "è¿è¡ä¸"), done(4, "已宿"), feeconfirm(5, "已确认费ç¨"), cancel(99, "已忶"), waitPay(0, "å¾ æ¯ä»","å¾ æ¯ä»"), wait(1, "å¾ æ¥å","å¾ æ¥å"), accept(2, "å·²æ¥å","å·²æ¥å"), doing(3, "è¿è¡ä¸","è¿è¡ä¸"), done(4, "已宿","已宿"), feeconfirm(5, "å¾ æ¯ä»","å¾ ååæ¹æ¯ä»"),//éé¢å·²ç¡®è®¤ cancel(99, "已忶","已忶"), ; // æååé private int key; private String name; private String name; //æ¥åæ¹ææ¡ private String info; //ååæ¹ææ¡ // æé æ¹æ³ ordersStatus(int key, String name) { ordersStatus(int key, String name,String info) { this.name = name; this.key = key; this.info = info; } // æ®éæ¹æ³ @@ -584,6 +587,15 @@ for (ordersStatus c : ordersStatus.values()) { if (c.getKey() == index) { return c.name; } } return null; } public static String getInfo(int index) { for (ordersStatus c : ordersStatus.values()) { if (c.getKey() == index) { return c.info; } } return null; @@ -603,6 +615,14 @@ public void setKey(int key) { this.key = key; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } } @@ -717,6 +737,21 @@ } public static String getOrderInfo(Orders orders){ String orderTypeInfo = "ç¨å·¥å"; if(!Constants.equalsInteger(orders.getType(),Constants.ZERO)){ orderTypeInfo = Constants.equalsInteger(orders.getType(),Constants.ONE)?"ç¨è½¦å":"éé¤å"; }else{ if(Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)){ orderTypeInfo = orderTypeInfo + "-éæå·¥"; }else{ orderTypeInfo = orderTypeInfo + (Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"-忣工":"-å è£ å·¥"); } } return orderTypeInfo; } } server/services/src/main/java/com/doumee/dao/business/MemberMapper.java
@@ -22,8 +22,8 @@ " where id in ( " + " select ii.member_id from identity_info ii where ii.AUDIT_STATUS = 2 and type = #{orderType} " + " and ( CONVERT( ST_Distance_Sphere ( POINT ( ii.lgt, ii.lat ), POINT ( #{lgt}, #{lat} )) /1000,DECIMAL(15,2))) < 100 " + " )" + " ) and RELEASE_MEMBER_ID != #{releaseMemberId} " + " order by level , score desc , distance asc ") List<Member> getList(@Param("lgt") BigDecimal lgt, @Param("lat") BigDecimal lat, @Param("orderType") Integer orderType); List<Member> getList(@Param("lgt") BigDecimal lgt, @Param("lat") BigDecimal lat, @Param("orderType") Integer orderType, @Param("releaseMemberId") Integer releaseMemberId); } server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java
@@ -31,10 +31,10 @@ private Integer deleted; @ApiModelProperty(value = "å建人ç¼ç ", example = "1") @ExcelColumn(name="ç³è¯·æ¶é´",index = 10,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 16) private Integer createUser; @ApiModelProperty(value = "å建æ¶é´") @ExcelColumn(name="ç³è¯·æ¶é´",index = 10,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 16) private Date createTime; @ApiModelProperty(value = "æ´æ°äººç¼ç ", example = "1") server/services/src/main/java/com/doumee/dao/business/model/Orders.java
@@ -153,8 +153,8 @@ @ExcelColumn(name = "订åç¼å·",index = 1,width = 10) private String code; @ApiModelProperty(value = "订åç¶æ:0=å¾ æ¯ä» 1=å¾ æ¥åï¼2=å·²æ¥åï¼3=è¿è¡ä¸ï¼4=已宿ï¼99=已忶ï¼", example = "1") @ExcelColumn(name = "订åç¶æ",index = 11,width = 10,valueMapping = "0=å¾ æ¯ä»;1=å¾ æ¥å;2=å·²æ¥å;3=è¿è¡ä¸;4=已宿;99=已忶;") @ApiModelProperty(value = "订åç¶æ:0=å¾ æ¯ä» 1=å¾ æ¥åï¼2=å·²æ¥åï¼3=è¿è¡ä¸ï¼4=已宿ï¼5=已确认éé¢ï¼99=已忶ï¼", example = "1") @ExcelColumn(name = "订åç¶æ",index = 11,width = 10,valueMapping = "0=å¾ æ¯ä»;1=å¾ æ¥å;2=å·²æ¥å;3=è¿è¡ä¸;4=已宿;5=å¾ æ¯ä»;99=已忶;") private Integer status; @ApiModelProperty(value = "æ¯ä»ç¶æ:0=å¾ æ¯ä» 1=å·²æ¯ä»", example = "1") @@ -236,6 +236,9 @@ @ApiModelProperty(value = "䏿¹æ¯ä»è®¢åå·", example = "1") private String outTradeNo; @ApiModelProperty(value = "æ¥åæ¹ç¡®è®¤é颿¶é´") private Date confirmFeeTime; @ApiModelProperty(value = "å¾ç") @TableField(exist = false) private List<Multifile> multifileList; @@ -269,6 +272,12 @@ @Schema(description ="ä¿®æ¹ç¡®è®¤å计æ¶") @TableField(exist = false) private Long confirmCountdown; @Schema(description ="èªå¨åæ¶å计æ¶") @TableField(exist = false) private Long cancelCountdown; @ApiModelProperty(value = "éæ±ç±»å") @TableField(exist = false) @@ -384,5 +393,10 @@ @TableField(exist = false) private Integer cancelStatus; @ApiModelProperty(value = "æ¯å¦å¯å¼å§ï¼0=ä¸å¯ä»¥ï¼1=å¯ä»¥", example = "1") @TableField(exist = false) private Integer canStart; } server/services/src/main/java/com/doumee/service/business/OrdersService.java
@@ -152,4 +152,6 @@ OrderReleaseVO reusePay(ReusePayDTO reusePayDTO); void confirmFee(ConfirmFeeOrderDTO orders); void autoCancelWaitPay(); } server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -37,6 +37,7 @@ import nonapi.io.github.classgraph.json.Id; import org.apache.poi.sl.image.ImageHeaderEMF; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -135,11 +136,11 @@ if(Objects.isNull(category)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"åæ°é ç½®é误,请è系管çå"); } orders.setPayAccount(orders.getEstimatedAccount()); Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue()); orders.setReceiveAccount(orders.getPayAccount() - tcje); //ç¨é¤è®¢å 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("-","")); //å¤èµ·æ¯ä»ä¸å¡ @@ -150,7 +151,7 @@ } orders.setOriginPriceNum1(orders.getPriceNum1()); orders.setOriginPriceNum2(orders.getPriceNum2()); orders.setOriginEstimatedAccount(orders.getOriginEstimatedAccount()); orders.setOriginEstimatedAccount(orders.getEstimatedAccount()); orders.setConfirmOtherFee(0l); ordersMapper.insert(orders); @@ -175,7 +176,7 @@ //å建æä½æ¥å¿ Constants.OrdersLog ordersLog = Constants.OrdersLog.UPLOAD; String orderTypeInfo = "ç¨å·¥å"; String orderTypeInfo = Constants.getOrderInfo(orders);/*"ç¨å·¥å"; if(!Constants.equalsInteger(orders.getType(),Constants.ZERO)){ orderTypeInfo = Constants.equalsInteger(orders.getType(),Constants.ONE)?"ç¨è½¦å":"éé¤å"; }else{ @@ -184,7 +185,7 @@ }else{ orderTypeInfo = orderTypeInfo + (Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"-忣工":"-å è£ å·¥"); } } }*/ String logInfo = ordersLog.getInfo() .replace("{param}",orderTypeInfo); this.saveOrderLog(orders,ordersLog, @@ -261,6 +262,7 @@ ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } Integer priceNum2 = orders.getPriceNum2(); if( (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.TWO) && ( Constants.equalsInteger(orders.getCarType(),Constants.ZERO) @@ -277,7 +279,7 @@ orders.setTotalDays(DateUtil.daysBetweenDates(orders.getEndDate(),orders.getStartDate())+1); if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){ if(Constants.equalsInteger(orders.getWorkType(),Constants.TWO) && ( Objects.isNull(orders.getCarType()) ) ){ && ( Objects.isNull(orders.getCarType()) ) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){ @@ -318,6 +320,7 @@ throw new BusinessException(ResponseStatus.BAD_REQUEST); } Long sumPrice = 0L; // List<CateringDTO> cateringDTOList = new ArrayList<>(); for (CateringDTO cateringDTO:orders.getCateringDTOList()) { if(Objects.isNull(cateringDTO) || StringUtils.isEmpty(cateringDTO.getName()) @@ -340,15 +343,19 @@ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"ç¨é¤æ åæ°æ®é误ï¼è¯·å·æ°éè¯"); } sumPrice = sumPrice + (cateringDTO.getPrice() * cateringDTO.getNum()) ; } if(new BigDecimal(sumPrice.toString()).compareTo(orders.getPrice())!=Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å价计ç®é误"); } orders.setWayInfo(JSONObject.toJSONString(orders.getCateringDTOList())); } if(!orders.getEstimatedAccount().equals(this.getTotal(orders))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"éé¢è®¡ç®é误!"); } orders.setPriceNum2(priceNum2); } @@ -401,9 +408,6 @@ }else{ throw new BusinessException(ResponseStatus.NOT_ALLOWED); } } @@ -451,7 +455,7 @@ orders.setOriginPriceNum1(orders.getPriceNum1()); orders.setOriginPriceNum2(orders.getPriceNum2()); orders.setOriginEstimatedAccount(orders.getOriginEstimatedAccount()); orders.setConfirmOtherFee(0l); orders.setConfirmOtherFee(0L); ordersMapper.updateById(orders); } @@ -644,9 +648,9 @@ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(cateringDTOList)){ for (CateringDTO cateringDTO:cateringDTOList) { if(StringUtils.isEmpty(orders.getOrderContent())){ orders.setOrderContent(cateringDTO.getName()+cateringDTO.getPrice()+" é"+cateringDTO.getNum()+"份"); orders.setOrderContent(cateringDTO.getName()+(new BigDecimal(cateringDTO.getPrice().toString()).divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP))+" é"+cateringDTO.getNum()+"份"); }else{ orders.setOrderContent(orders.getOrderContent()+" | "+cateringDTO.getName()+cateringDTO.getPrice()+" é"+cateringDTO.getNum()+"份"); orders.setOrderContent(orders.getOrderContent()+" | "+cateringDTO.getName()+(new BigDecimal(cateringDTO.getPrice().toString()).divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP))+" é"+cateringDTO.getNum()+"份"); } } } @@ -685,15 +689,15 @@ //æ¥è¯¢ç¨æ·æ¯å¦æå¯¹åºèº«ä»½ if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){ if(!Constants.equalsInteger(member.getWorkerIdentity(),Constants.TWO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ¨è¿æªæ³¨å该æå¡ï¼è¯·åå¾ä¸ªäººä¿¡æ¯ä¸æäº¤ç³è¯·ã"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ¨è¿æªæ³¨å该æå¡ï¼è¯·åå¾\"æç\"é¡µé¢æäº¤ç³è¯·"); } }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){ if(!Constants.equalsInteger(member.getDriverIdentity(),Constants.TWO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ¨è¿æªæ³¨å该æå¡ï¼è¯·åå¾ä¸ªäººä¿¡æ¯ä¸æäº¤ç³è¯·ã"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ¨è¿æªæ³¨å该æå¡ï¼è¯·åå¾\"æç\"é¡µé¢æäº¤ç³è¯·"); } }else{ if(!Constants.equalsInteger(member.getChefIdentity(),Constants.TWO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ¨è¿æªæ³¨å该æå¡ï¼è¯·åå¾ä¸ªäººä¿¡æ¯ä¸æäº¤ç³è¯·ã"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ¨è¿æªæ³¨å该æå¡ï¼è¯·åå¾\"æç\"é¡µé¢æäº¤ç³è¯·"); } } @@ -759,6 +763,9 @@ if(Constants.equalsInteger(orders.getIsUpdate(),Constants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订åä¿®æ¹å¾ ç¡®è®¤ï¼æ æ³è¿è¡è¯¥æä½"); } if(orders.getStartDate().getTime()>System.currentTimeMillis()){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"è®¢åæªå°å¼å§æ¶é´æ æ³è¿è¡è¯¥æä½"); } orders.setUpdateTime(new Date()); orders.setStatus(Constants.ordersStatus.doing.getKey()); orders.setWorkStartTime(new Date()); @@ -799,6 +806,8 @@ model.setPriceNum1(orders.getTotalDays()); } Long total = this.getTotal(orders); Long tcje = Long.valueOf(new BigDecimal(total.toString()).multiply(model.getPlatformRata()).intValue()); Long reciveTotal = total - tcje; ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getStartDate,model.getStartDate()) .set(Orders::getEndDate,model.getEndDate()) @@ -808,6 +817,7 @@ .set(Orders::getUpdateTime,new Date()) .set(Orders::getEstimatedAccount,total) .set(Orders::getOriginEstimatedAccount,total) .set(Orders::getReceiveAccount,reciveTotal) .eq(Orders::getId,orders.getId()) ); //å建æä½æ¥å¿ @@ -844,24 +854,28 @@ public Long getTotal(Orders orders){ if(Objects.isNull(orders) ||Objects.isNull(orders.getPrice()) ||Objects.isNull(orders.getPriceNum1())){ ||Objects.isNull(orders.getPriceNum1()) ||Objects.isNull(orders.getType()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } BigDecimal bigDecimalPrice = BigDecimal.ZERO; if( (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ZERO )) (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ZERO )) || (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Objects.nonNull(orders.getCarType()) && Constants.equalsInteger(orders.getWorkType(),Constants.TWO ) && Constants.equalsInteger(orders.getCarType(),Constants.TWO)) || Constants.equalsInteger(orders.getType(),Constants.ONE) || Constants.equalsInteger(orders.getType(),Constants.TWO) ){ orders.setPriceNum2(Constants.ONE); bigDecimalPrice = orders.getPrice().multiply(new BigDecimal(orders.getPriceNum1().toString())); }else{ if(Objects.isNull(orders.getPriceNum2())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } bigDecimalPrice = orders.getPrice().multiply(new BigDecimal(orders.getPriceNum1().toString())).multiply(new BigDecimal(orders.getPriceNum2().toString())); } BigDecimal bigDecimalPrice = orders.getPrice(). multiply(new BigDecimal(orders.getPriceNum1().toString())) .multiply(new BigDecimal(orders.getPriceNum2().toString())); if(Objects.nonNull(orders.getConfirmOtherFee())){ bigDecimalPrice = bigDecimalPrice.add(new BigDecimal(orders.getConfirmOtherFee().toString())); } return bigDecimalPrice.divide(new BigDecimal("1"),0,BigDecimal.ROUND_HALF_UP).longValue();//orders.getPrice() * orders.getPriceNum1() * orders.getPriceNum2(); } @@ -911,9 +925,12 @@ } orders.setPriceNum1(confirmUpdOrderDTO.getPriceNum1()); orders.setPriceNum2(confirmUpdOrderDTO.getPriceNum2()); orders.setConfirmOtherFee(confirmUpdOrderDTO.getConfirmOtherFee()); Long totalFee = this.getTotal(orders);//éæ°è®¡ç®è´¹ç¨ Long payFee = totalFee+Constants.formatLongNum(confirmUpdOrderDTO.getConfirmOtherFee());//éæ°è®¡ç®è´¹ç¨ BigDecimal recFee = new BigDecimal(payFee).multiply((new BigDecimal(1).subtract(Constants.formatBigDecimal(orders.getPlatformRata())))).setScale(0, RoundingMode.HALF_UP) ; Long payFee = totalFee;//éæ°è®¡ç®è´¹ç¨ Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue()); Long reciveTotal = payFee - tcje; //BigDecimal recFee = new BigDecimal(payFee).multiply((new BigDecimal(1).subtract(Constants.formatBigDecimal(orders.getPlatformRata())))).setScale(0, RoundingMode.HALF_UP) ; ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getPriceNum1,confirmUpdOrderDTO.getPriceNum1()) .set(Orders::getPriceNum2,confirmUpdOrderDTO.getPriceNum2()) @@ -922,14 +939,21 @@ .set(Orders::getEstimatedAccount,totalFee) .set(Orders::getStatus,Constants.ordersStatus.feeconfirm.getKey()) .set(Orders::getPayAccount,payFee) .set(Orders::getReceiveAccount,recFee.longValue()) .set(Orders::getReceiveAccount,reciveTotal) .set(Orders::getUpdateTime,new Date()) .set(Orders::getConfirmFeeTime,new Date()) .eq(Orders::getId,orders.getId()) ); //è®°å½åæä¿®æ¹çæ¥å¿ Constants.OrdersLog ordersLog = Constants.OrdersLog.FEE_CONFIRM; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),confirmUpdOrderDTO.getMember().getId(),null); //微信éç¥ Member member = memberMapper.selectById(orders.getReleaseMemberId()); if(Objects.nonNull(member)&& org.apache.commons.lang3.StringUtils.isNotBlank(member.getOpenid())){ sendWxMessage.waitPayMessage(member.getOpenid(),orders); } } @@ -1086,13 +1110,13 @@ .eq(Orders::getReleaseMemberId,orders.getReleaseMemberId())); //æ¥è¯¢åæ¶æ¬¡æ° if(totalCancelTimes<=cancelTimes){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"仿¥è®¢å主å¨åæ¶æ¬¡æ°å·²è¶ åº"+totalCancelTimes+"次,æ æ³åæ¶è®¢å,å¦éå¤ç请è系客æ"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"仿¥è®¢å主å¨åæ¶æ¬¡æ°å·²è¶ åº"+totalCancelTimes+"次,æ æ³åæ¶è®¢å"); } Integer cancelTimeHour = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RELEASE_CANCEL_TIME).getCode()); Long hours = DateUtil.getBetweenHours(new Date(),orders.getStartDate()); if(hours < cancelTimeHour){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"è·ç¦»è®¢åå¼å§æ¶é´ä¸è¶³"+cancelTimeHour+"å°æ¶,æ æ³åæ¶è®¢åï¼å¦éå¤ç请è系客æ"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"è·ç¦»è®¢åå¼å§æ¶é´ä¸è¶³"+cancelTimeHour+"å°æ¶,æ æ³åæ¶è®¢å"); } if(Constants.equalsInteger(orders.getType(),Constants.TWO)){ @@ -1132,6 +1156,7 @@ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){ List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList()); //åé微信éç¥ orders.setCancelTime(new Date()); sendWxMessage.cancelMessage(openIdList,orders,Constants.ONE); } @@ -1169,16 +1194,17 @@ .eq(OrderLog::getMemberId,member.getId())); //æ¥è¯¢åæ¶æ¬¡æ° if(totalCancelTimes<=cancelTimes){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"仿¥è®¢å主å¨åæ¶æ¬¡æ°å·²è¶ åº"+totalCancelTimes+"次,æ æ³åæ¶è®¢å,å¦éå¤ç请è系客æ"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"仿¥è®¢å主å¨åæ¶æ¬¡æ°å·²è¶ åº"+totalCancelTimes+"次,æ æ³åæ¶è®¢å"); } Integer cancelTimeHour = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RECEIVE_CANCEL_TIME).getCode()); Long hours = DateUtil.getBetweenHours(new Date(),orders.getStartDate()); if(hours < cancelTimeHour){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"è·ç¦»è®¢åå¼å§æ¶é´ä¸è¶³"+cancelTimeHour+"å°æ¶,æ æ³åæ¶è®¢åï¼å¦éå¤ç请è系客æ"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"è·ç¦»è®¢åå¼å§æ¶é´ä¸è¶³"+cancelTimeHour+"å°æ¶,æ æ³åæ¶è®¢å"); } ordersMapper.update(new UpdateWrapper<Orders>().lambda() .set(Orders::getUpdateTime,new Date()) .set(Orders::getCancelTime,new Date()) .set(Orders::getStatus,Constants.ordersStatus.wait.getKey()) .set(Orders::getAcceptMemberId,null) .set(Orders::getAcceptType,null) @@ -1199,6 +1225,7 @@ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){ List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList()); //åé微信éç¥ orders.setCancelTime(new Date()); sendWxMessage.cancelMessage(openIdList,orders,Constants.TWO); } //çä¿¡éç¥ @@ -1224,9 +1251,16 @@ if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.doing.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订åç¶æå·²æµè½¬,æ æ³è¿è¡åæ¶"); if(Constants.equalsInteger(orders.getType(),Constants.orderType.scd.getKey())){ if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.doing.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订åç¶æå·²æµè½¬,æ æ³è¿è¡åæ¶"); } }else{ if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.feeconfirm.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订åç¶æå·²æµè½¬,æ æ³è¿è¡åæ¶"); } } if(!Constants.equalsInteger(orders.getReleaseMemberId(),doneOrderDTO.getMember().getId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鿍çè®¢åæ æ³è¿è¡è¯¥æä½"); } @@ -1242,7 +1276,8 @@ if(!Constants.equalsInteger(orders.getType(),Constants.TWO)){ orders.setPayAccount(doneOrderDTO.getAmount()); //ææéé¢ Long tcje = (new BigDecimal(orders.getPayAccount().toString()).multiply(Constants.formatBigDecimal(orders.getPlatformRata())).setScale(0,RoundingMode.HALF_UP).longValue()); // Long tcje = (new BigDecimal(orders.getPayAccount().toString()).multiply(Constants.formatBigDecimal(orders.getPlatformRata())).setScale(0,RoundingMode.HALF_UP).longValue()); 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); @@ -1316,21 +1351,28 @@ } 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.getType(),Constants.TWO) && Constants.equalsInteger(orders.getStatus(),Constants.FIVE) )) && Constants.equalsInteger(orders.getPayStatus(),Constants.ZERO) )){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订åç¶æå·²æµè½¬"); } Member payMember = memberMapper.selectById(reusePayDTO.getMember().getId()); if(Objects.isNull(payMember)){ 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); } orders.setOutTradeNo(UUID.randomUUID().toString().replace("-","")); ordersMapper.updateById(orders); //å¤èµ·æ¯ä»ä¸å¡ Object object = this.getWxPayResponse(orders,orders.getMember().getOpenid()); Object object = this.getWxPayResponse(orders,payMember.getOpenid()); orderReleaseVO.setObject(object); orderReleaseVO.setId(orders.getId()); return orderReleaseVO; @@ -1394,6 +1436,7 @@ List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList()); orders.setCancelTime(new Date()); //åé微信éç¥ orders.setCancelTime(new Date()); sendWxMessage.cancelMessage(openIdList,orders,Constants.ZERO); } //çä¿¡éç¥ååæ¹ @@ -1493,7 +1536,7 @@ } }else{ //éç¨é¤ç±»è®¢å if(!Constants.equalsInteger(orders.getStatus(),Constants.THREE)){ if(!Constants.equalsInteger(orders.getStatus(),Constants.FIVE)){ return ("å¤çæå!"); }else{ //å¤çæ¯ä»å®æé»è¾ @@ -1573,9 +1616,7 @@ 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()) || Objects.isNull(model.getQueryMyOrderType()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } @@ -1620,24 +1661,29 @@ .select("c2.name",Orders::getTransportTypeName) .leftJoin(" category c1 on t.category_id = c1.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()); .eq(Objects.nonNull(model.getType()),Orders::getType,model.getType()) .eq(Objects.nonNull(model.getCommentStatus()),Orders::getCommentStatus,model.getCommentStatus());; if(!(Objects.isNull(model.getQueryLat())||Objects.isNull(model.getQueryLgt()))){ queryWrapper.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); } 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.eq(Objects.nonNull(model.getStatus())&&!Constants.equalsInteger(model.getStatus(),Constants.ordersStatus.waitPay.getKey()),Orders::getStatus,model.getStatus()); queryWrapper.in(Objects.nonNull(model.getStatus())&&Constants.equalsInteger(model.getStatus(),Constants.ordersStatus.waitPay.getKey()),Orders::getStatus,model.getStatus(),Constants.ordersStatus.feeconfirm.getKey()); 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.in(Objects.nonNull(model.getStatus())&&Constants.equalsInteger(model.getStatus(),Constants.ordersStatus.waitPay.getKey()),Orders::getStatus,model.getStatus(),Constants.ordersStatus.feeconfirm.getKey()); queryWrapper.orderByDesc(Orders::getAcceptTime); }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() "); @@ -1658,38 +1704,13 @@ IPage<Orders> iPage = ordersMapper.selectJoinPage(page,Orders.class,queryWrapper); for (Orders orders:iPage.getRecords()) { this.getPriceUnit(orders); if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ZERO)||Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ONE)){ orders.setStatusName( Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ZERO)?Constants.ordersStatus.getName(orders.getStatus()): Constants.ordersStatus.getInfo(orders.getStatus()) ); } } // 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); } @@ -1789,12 +1810,25 @@ orders.setStatusName(Constants.ordersStatus.getName(orders.getStatus())); orders.setCancelStatus(Constants.ZERO); if(Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())&&Constants.equalsInteger(orders.getIsUpdate(),Constants.ONE)){ orders.setConfirmCountdown(DateUtil.getXMinuteAfterDate(orders.getIsUpdateTime(),60).getTime() - System.currentTimeMillis()); String autoConfirmTime = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AUTO_CONFIRM).getCode(); orders.setConfirmCountdown(DateUtil.getXMinuteAfterDate(orders.getIsUpdateTime(),Integer.valueOf(autoConfirmTime)).getTime() - System.currentTimeMillis()); if(orders.getConfirmCountdown()<=Constants.ZERO){ orders.setConfirmCountdown(0L); } } if(Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.waitPay.getKey())){ orders.setCancelCountdown(DateUtil.getXMinuteAfterDate(orders.getCreateTime(),15).getTime() - System.currentTimeMillis()); if(orders.getCancelCountdown()<=Constants.ZERO){ orders.setCancelCountdown(0L); } } this.getPriceUnit(orders); orders.setCanStart(Constants.ZERO); if(orders.getStatus() <= Constants.ordersStatus.accept.getKey()){ if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){ if(Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())&&orders.getStartDate().getTime() <= System.currentTimeMillis()){ orders.setCanStart(Constants.ONE); } //夿æ¯å¦å¯ä¿®æ¹ å·²åæ¶æ¬¡æ° ä¸ æ¶é´éå¶ Integer totalCancelTimes = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RELEASE_CANCEL_TIMES).getCode()); Long cancelTimes = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda() @@ -1893,7 +1927,7 @@ BigDecimal lat = orders.getLat(); BigDecimal lgt = orders.getLgt(); //æ¥è¯¢èå´å çä¼å List<Member> memberList = memberMapper.getList(lgt,lat,orders.getType()); List<Member> memberList = memberMapper.getList(lgt,lat,orders.getType(),orders.getReleaseMemberId()); // memberMapper.selectList(new MPJLambdaWrapper<Member>() // .select(Member::getId,Member::getScore) // .select(" ifnull((select r.level from receive_weight r where r.RECEIVE_MAX > RECEIVE_NUM and RECEIVE_NUM > r.RECEIVE_MIN limit 1 ),0) " ,Member::getLevel) @@ -1915,7 +1949,7 @@ Member releaseMember = memberMapper.selectById(orders.getReleaseMemberId()); //èªå¨æ´¾å Orders model = ordersMapper.selectById(orders.getId()); if(!Constants.equalsInteger(model.getStatus(),Constants.ONE) || Constants.equalsInteger(model.getId(),model.getReleaseMemberId())){ if(!Constants.equalsInteger(model.getStatus(),Constants.ONE) || Constants.equalsInteger(releaseMember.getId(),model.getReleaseMemberId())){ //å¦æè®¢åå·²å é¤ å¹¶ä¸éå叿¹ continue; } @@ -1999,7 +2033,8 @@ 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) .eq(Orders::getStatus,Constants.ordersStatus.accept.getKey()) .eq(Orders::getIsUpdate,Constants.ONE) .apply(" DATE_ADD(IS_UPDATE_TIME, INTERVAL "+autoConfirmTime+" MINUTE) < now() ") .last("limit 100") ); @@ -2013,6 +2048,34 @@ //è®°å½åæä¿®æ¹çæ¥å¿ Constants.OrdersLog ordersLog = Constants.OrdersLog.AUTO_AGREE; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),null,null); } } } //èªå¨åæ¶ è®¢åæªæ¯ä» @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public void autoCancelWaitPay(){ List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda() .eq(Orders::getStatus,Constants.ordersStatus.waitPay) .apply(" DATE_ADD(CREATE_TIME, INTERVAL 15 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::getStatus,Constants.ordersStatus.cancel.getKey()) .set(Orders::getUpdateTime,DateUtil.getCurrDateTime()) .set(Orders::getCancelTime,DateUtil.getCurrDateTime()) .set(Orders::getCancelType,Constants.TWO) .eq(Orders::getId,orders.getId()) ); //è®°å½åæä¿®æ¹çæ¥å¿ Constants.OrdersLog ordersLog = Constants.OrdersLog.SYSTEM_CANCEL; this.saveOrderLog(orders,ordersLog, ordersLog.getInfo(),orders.getAcceptMemberId(),null); } } server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
@@ -268,11 +268,25 @@ .set(WithdrawalOrders::getUpdateTime, DateUtil.getCurrDateTime()) .eq(WithdrawalOrders::getOutBillNo,outBillNo) ); //ä¿®æ¹æµæ°´è®°å½ç¶æ memberRevenueMapper.update(new UpdateWrapper<MemberRevenue>().lambda() .set(MemberRevenue::getStatus,Constants.ZERO) .set(MemberRevenue::getUpdateTime, DateUtil.getCurrDateTime()) .eq(MemberRevenue::getObjId,withdrawalOrders.getId()) .eq(MemberRevenue::getObjType,Constants.ONE) ); withdrawalOrders.setUpdateTime(new Date()); sendWxMessage.withdrawalMessage(member.getOpenid(),withdrawalOrders); }else { //æ´æ°ç¨æ·ä½é¢ memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" AMOUNT = AMOUNT + " + withdrawalOrders.getAmount() ).eq(Member::getId,withdrawalOrders.getMemberId())); //ä¿®æ¹æµæ°´è®°å½ç¶æ memberRevenueMapper.update(new UpdateWrapper<MemberRevenue>().lambda() .set(MemberRevenue::getStatus,Constants.ONE) .set(MemberRevenue::getUpdateTime, DateUtil.getCurrDateTime()) .eq(MemberRevenue::getObjId,withdrawalOrders.getId()) .eq(MemberRevenue::getObjType,Constants.ONE) ); //å卿µæ°´è®°å½ MemberRevenue memberRevenue = new MemberRevenue(); memberRevenue.setCreateTime(new Date()); server/web/src/main/java/com/doumee/api/web/OrdersApi.java
@@ -65,6 +65,7 @@ ordersService.update(orders); return ApiResponse.success("æä½æå"); } @LoginRequired @ApiOperation(value = "æ¥åæ¹ç¡®è®¤è®¢åè´¹ç¨ - æ¥åæ¹", notes = "å°ç¨åºç«¯") @PostMapping("/confirmFee") small-program/packageA/pages/employment-certification/employment-certification.vue
@@ -348,7 +348,7 @@ param.img2 = this.form.img21 } uni.requestSubscribeMessage({ tmplIds: ['VJho7-lf-4_WZFfOzenDndgwNDIA0EvCiE6vqBnExpQ'], tmplIds: ['VJho7-lf-4_WZFfOzenDnX6sOhYBJWwkLExVjBB563U'], success(res) { console.log('æäº¤åæ°ï¼', param) that.$u.api.applyForIdentity(param).then(res => { small-program/packageA/pages/set-up/set-up.vue
@@ -3,7 +3,7 @@ <div class="setup-tx"> <view class="setup-tx-image"> <image v-if="fullCoverImage && fullCoverImage !=''" :src="fullCoverImage" mode="widthFix"></image> <image v-else src="/static/logo.png" mode="widthFix"></image> <image v-else src="/static/icon/img@2x.png" mode="widthFix"></image> </view> <button open-type="chooseAvatar" @chooseavatar="onChooseAvatar" class="setup-tx-btn">æ´æ¢å¤´å</button> </div> small-program/packageA/pages/withdrawal-successful/withdrawal-successful.vue
@@ -3,7 +3,7 @@ <image src="/static/icon/ic_success@2x.png" mode="widthFix"></image> <view class="success-a">ç³è¯·æç°æåï¼çå¾ ç³»ç»å¤ç</view> <view class="success-b">é¢è®¡2å°æ¶å å°è´¦</view> <view class="success-info"> <!-- <view class="success-info"> <view class="success-info-item"> <text>æç°éé¢</text> <text>Â¥1000.00</text> @@ -12,7 +12,7 @@ <text>æç°æ¹å¼</text> <text>微信é¢é±</text> </view> </view> </view> --> <view class="success-btn" @click="goHome">åå°é¦é¡µ</view> </view> </template> @@ -21,7 +21,7 @@ export default { data() { return { price: '' }; }, methods: { small-program/pages/demand-hall/demand-hall.vue
@@ -18,18 +18,18 @@ <!-- ååæ¹ --> <view class="index-labs" v-if="typeViewId === 0" :style="{ top: statusbarHeight + navHeight + 'px' }"> <scroll-view scroll-x class="scroll-view_H" :scroll-into-view="'view'+status"> <view :class="item.id === status ? 'index-labs-row active' : 'index-labs-row'" v-for="(item, index) in list1" :id="'view'+item.id" :key="item.id" @click="clickOrderType(item.id)"> <view :class=" item.id === status ? 'index-labs-row active' : 'index-labs-row'" v-for="(item, index) in list1" :id="'view'+item.id" :key="item.id" @click="clickOrderType(item.id)"> {{item.name}} <view class="index-labs-row-x" v-if="item.id === status"></view> <view class="index-labs-row-x" v-if=" item.id === status"></view> </view> </scroll-view> </view> <!-- æ¥åæ¹ --> <view class="index-labs" v-if="typeViewId === 1" :style="{ top: statusbarHeight + navHeight + 'px' }"> <scroll-view scroll-x class="scroll-view_H" :scroll-into-view="'view'+status"> <view :class="item.id === status ? 'index-labs-row active' : 'index-labs-row'" v-for="(item, index) in list" :id="'view'+item.id" :key="item.id" @click="clickOrderType(item.id)"> <view :class=" item.id === status ? 'index-labs-row active' : 'index-labs-row'" v-for="(item, index) in list" :id="'view'+item.id" :key="item.id" @click="clickOrderType(item.id)"> {{item.name}} <view class="index-labs-row-x" v-if="item.id === status"></view> <view class="index-labs-row-x" v-if=" item.id === status "></view> </view> </scroll-view> </view> @@ -63,13 +63,13 @@ {{item.categoryName}}ï½{{item.priceNum2}}人 </view> <view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2&& item.carType === 0"> {{item.categoryName}}ï½{{item.priceNum1}}天 ï½{{item.priceNum2}}人 {{item.categoryName}}ï½{{item.priceNum1}}天 | {{item.priceNum2}}人 </view> <view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2&& item.carType === 1"> {{item.categoryName}}ï½{{item.priceNum1}}å°æ¶ ï½{{item.priceNum2}}人 {{item.categoryName}}ï½{{item.priceNum1}}å°æ¶ | {{item.priceNum2}}人 </view> <view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2&& item.carType === 2"> {{item.categoryName}}ï½{{item.priceNum1}}æ¤ {{item.categoryName}}ï½{{item.priceNum1}}æ¤ | {{item.priceNum2}}人 </view> <view class="index-list-item-info" v-if="item.type === 1"> {{item.carUnit}} | {{item.transportTypeName}} | {{item.transportNum}}{{item.transportUnit}}ï½ç¨è½¦{{item.priceNum1}}{{item.carType === 0?"天":"次"}} @@ -232,9 +232,9 @@ }, async onShow(options) { var flag = getApp().globalData.orderStatus console.log(getApp().globalData,"=====================================") this.status = '' this.commentStatus='' console.log(getApp().globalData,"=====================================") // this.status = '' // this.commentStatus='' // status: this.status === 5 ? 4 : this.status, // commentStatus: this.status === 5 ? 0 : '', if(flag =='1'){//ååæ¹å¾ æ¥å @@ -242,47 +242,69 @@ }else if(flag =='2'){//ååæ¹è¿è¡ä¸ this.status = 3 }else if(flag =='3'){//ååæ¹å¾ è¯ä»· this.status = 5 this.status = 6 }else if(flag =='4'){//æ¥åæ¹å·²æ¥å this.status =2 }else if(flag =='5'){//æ¥åæ¹è¿è¡ä¸ this.status =3 }else if(flag =='6'){//æ¥åæ¹å·²å®æ this.status =4 }else if(flag =='0'){ this.status = -1 } console.log(getApp().globalData,this.status ,"=====================================") this.typeViewId = 0 if(this.token && this.token != '' && this.userInfo && JSON.stringify(this.userInfo) != '{}'){ console.log('å·²ç»é') this.isLogin = true if (this.userInfo && this.userInfo.useIdentity == 1) { this.typeViewId = 1 } /* this.getOrderList() if (!this.isOnce) { this.commentStatus = '' this.orderList = [] this.next = true this.page = 1 this.getOrderList() } } */ } else { this.isLogin = false console.log('æªç»é') } if(this.isLogin){ if(this.typeViewId !== this.userInfo.useIdentity || flag !=null){ this.typeViewId = this.userInfo.useIdentity || 0 //妿åç this.initOrderList() }else{ //妿æªåçååä¸å·æ° this.typeViewId = this.userInfo.useIdentity || 0 if(!this.orderList || !this.orderList.length){ this.initOrderList() }else{ if( this.tempOrderId){ this.getOrderData() } } console.log('this.tempOrderId',this.tempOrderId) } } getApp().globalData.orderStatus =null }, data() { return { show: false, isLogin: false, typeViewId: 0, typeViewId: -1, tempOrderId:null, list: [ { name: 'å ¨é¨', id: '' }, { name: 'å ¨é¨', id: -1 }, { name: 'å·²æ¥å', id: 2 }, { name: 'è¿è¡ä¸', id: 3 }, { name: 'å¾ æ¯ä»', id: 5 }, { name: '已宿', id: 4 }, // { name: '已忶', id: 99 }, ], list1: [ { name: 'å ¨é¨', id: '' }, { name: 'å ¨é¨', id: -1 }, { name: 'å¾ æ¯ä»', id: 0 }, { name: 'å¾ æ¥å', id: 1 }, { name: 'å·²æ¥å', id: 2 }, @@ -292,9 +314,8 @@ { name: 'å¾ è¯ä»·', id: 6 } ], orderId: null, status: '', commentStatus: '', status: -1, commentStatus: '', next: true, page: 1, orderList: [], @@ -303,7 +324,7 @@ }, async onLoad() { await this.$onLaunched; uni.$on('refresh', (data) => { /* uni.$on('refresh', (data) => { console.log('æç订å页巿°'); this.status = '' this.commentStatus = '' @@ -311,17 +332,26 @@ this.next = true this.page = 1 this.getOrderList() }) this.getOrderList() }) */ }, onReachBottom() { this.getOrderList() if(this.isLogin){ this.getOrderList() } }, methods: { toLogin() { uni.navigateTo({ url: '/pages/login/login' }) }, initOrderList() { this.commentStatus = '' this.orderList = [] this.next = true this.page = 1 this.getOrderList() }, startJobs(orderId) { this.$u.api.begin({ orderId }) @@ -341,9 +371,11 @@ uni.navigateTo({ url: `/pages/order-details/order-details?id=${item.id}&flag=${flag}` }) this.tempOrderId = item.id }, // ä¿®æ¹ jumpEdit(item) { this.tempOrderId =item.id if (item.type === 0 && item.workType === 0) { uni.navigateTo({ url: `/pages/using-workers/using-workers?id=${item.id}` @@ -372,14 +404,49 @@ this.next = true this.page = 1 this.getOrderList() } } }) }, phoneCall(phoneNumber) { uni.makePhoneCall({ phoneNumber }); }, getOrderData(){ var that = this var param ={ orderId:that.tempOrderId} this.$u.api.getDetail(param).then(res =>{ if(res.code ===200 && res.data){ var isDel = false var tempIndex = -1 that.orderList.forEach((item,index) =>{ if(item.id == res.data.id){ item.status = res.data.status item.isUpdate = res.data.isUpdate item.commentStatus = res.data.commentStatus tempIndex = index } }) if(tempIndex > -1 ){ console.log(tempIndex,that.status,res.data.status,"===================") if(that.status >=0 ){ //å¦æææ ç¾é¡µ if(that.status ===6 && res.data.commentStatus == 1){ isDel =true console.log(tempIndex,that.status,res.data.status,"==================1") }else if(that.status !=6 && that.status !== res.data.status){ isDel =true console.log(tempIndex,that.status,res.data.status,"===================2") } } if(isDel){ console.log(tempIndex,that.status,res.data.status,"===================3") that.orderList.splice(tempIndex,1) } } } }) }, // 订åå页 getOrderList() { @@ -389,7 +456,7 @@ page: this.page, model: { queryMyOrderType: this.userInfo.useIdentity, status: this.status === 6 ? 4 : this.status, status: this.status === 6 ? 4 : (this.status ==-1?"":this.status), commentStatus: this.status === 6 ? 0 : '', queryLat: this.latitude, queryLgt: this.longitude @@ -408,23 +475,17 @@ item.wayInfo = JSON.parse(item.wayInfo) } }) this.orderList = [...this.orderList, ...res.data.records] if (this.orderList.length === res.data.total) { this.orderList = [...this.orderList, ...res.data.records] if (this.orderList.length >= res.data.total) { this.next = false } else { this.page += 1 } }) }, clickOrderType(id) { // if (typeof id === 5) { // this.status = 5 // // this.commentStatus = 0 // } else { this.commentStatus = '' this.status = id // } clickOrderType(id) { this.commentStatus = '' this.status = id this.orderList = [] this.next = true this.page = 1 small-program/pages/freight/freight.vue
@@ -91,7 +91,7 @@ <view class="list-item-row"> <view class="list-item-row-label">è¿è¾éé/æ°é<b>*</b></view> <view class="list-item-row-val"> <input type="text" style="flex: 3;" v-model="form.transportNum" placeholder="请è¾å ¥" /> <input type="digit" style="flex: 3;" v-model="form.transportNum" placeholder="请è¾å ¥" /> <!-- <view @click="show4 = true" style="width: 100rpx; flex-shrink: 0; display: flex; align-items: center; justify-content: flex-end;"> <text>{{form.transportUnit}}</text> <u-icon name="arrow-down" color="#111111" size="16"></u-icon> @@ -110,14 +110,15 @@ <view class="list-item-row" > <view class="list-item-row-label">å¾ç</view> <view class="list-item-row-upload"> <view class="upload-item" v-for="(item, index) in form.multifileList" :key="index"> <view class="upload-item" v-for="(item, index) in form.multifileList" :key="index" @click="preview(index, form.multifileList)"> <image :src="item.url || item.fileurlFull" mode="widthFix"></image> <image class="upload-item-dele" @click="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image> <image class="upload-item-dele" @click.stop="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image> </view> <view class="upload-item" @click="uploadImg"> <u-icon name="plus" color="#999999" size="24"></u-icon> <text>ç¹å»ä¸ä¼ </text> </view> <view style="width: 215rpx; height: 0;"></view> </view> </view> <!-- <view class="list-item-zk" @click="viewStatus = !viewStatus"> @@ -136,14 +137,14 @@ <view class="list-item-row" v-if="form.carType==0"> <view class="list-item-row-label">ç¨è½¦å¤©æ°</view> <view class="list-item-row-val"> <input type="number" v-model="form.totalDays" disabled placeholder="" /> <input type="digit" v-model="form.totalDays" disabled placeholder="" /> <text>天</text> </view> </view> <view class="list-item-row" v-if="form.carType==1"> <view class="list-item-row-label">ç¨è½¦æ¬¡æ°<b>*</b></view> <view class="list-item-row-val"> <input type="number" v-model="form.priceNum1" @input="getPrice" placeholder="请è¾å ¥" /> <input type="digit" v-model="form.priceNum1" @input="getPrice" placeholder="请è¾å ¥" /> <text>次</text> </view> </view> @@ -355,7 +356,11 @@ this.getCategoryLists() }, methods: { handleInputPrice(e) { preview(current, arr) { let urls = arr.map(item => item.url || item.fileurlFull) uni.previewImage({ current, urls }) }, handleInputPrice(e) { try{ this.form.price = Number(this.form.price).toFixed(3) }catch(e){ @@ -932,21 +937,22 @@ width: 100%; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 30rpx 0; box-sizing: border-box; .upload-item { width: 156rpx; height: 156rpx; width: 215rpx; height: 215rpx; display: flex; align-items: center; flex-direction: column; justify-content: center; background: #F8F9FB; border-radius: 8rpx; margin-right: 20rpx; border: 2rpx solid #EEEEEE; position: relative; margin-bottom: 15rpx; &:last-child { margin: 0 !important; } small-program/pages/index/index.vue
@@ -137,7 +137,7 @@ </view> <view class="radio-item-list-data"> <text style="flex-shrink: 0;">份æ°ï¼</text> <input type="number" v-model="item.num" placeholder="请è¾å ¥"> <input type="digit" v-model="item.num" placeholder="请è¾å ¥"> <text style="color: #999999;">份</text> <view class="radio-item-list-data-btn" @click="clear(index)">åæ¶</view> </view> @@ -167,14 +167,15 @@ <view class="list-item-row" > <view class="list-item-row-label">å¾ç</view> <view class="list-item-row-upload"> <view class="upload-item" v-if=" form.multifileList" v-for="(item, index) in form.multifileList" :key="index"> <view class="upload-item" v-if=" form.multifileList" v-for="(item, index) in form.multifileList" :key="index" @click="preview(index, form.multifileList)"> <image :src="item.url" mode="widthFix"></image> <image class="upload-item-dele" @click="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image> <image class="upload-item-dele" @click.stop="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image> </view> <view class="upload-item" @click="uploadImg"> <u-icon name="plus" color="#999999" size="24"></u-icon> <text>ç¹å»ä¸ä¼ </text> </view> <view style="width: 208rpx; height: 0;"></view> </view> </view> <!-- <view class="list-item-zk" @click="viewStatus = !viewStatus"> @@ -583,6 +584,10 @@ } }, methods: { preview(current, arr) { let urls = arr.map(item => item.url || item.fileurlFull) uni.previewImage({ current, urls }) }, goOrderDetail(id){ uni.navigateTo({ url: '/pages/order-details/order-details?id='+id @@ -1584,19 +1589,19 @@ width: 100%; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 30rpx 0; box-sizing: border-box; .upload-item { width: 156rpx; height: 156rpx; width: 208rpx; height: 208rpx; display: flex; align-items: center; flex-direction: column; justify-content: center; background: #F8F9FB; border-radius: 8rpx; margin-right: 20rpx; border: 2rpx solid #EEEEEE; position: relative; &:last-child { small-program/pages/mine/mine.vue
@@ -15,8 +15,9 @@ <view class="info-box-head-info" v-if="isLogin"> <view class="info-box-head-info-name" @click="jump(1)">{{userInfo.nickName||'å¿å'}}</view> <view class="info-box-head-info-type"> <view class="info-box-head-info-type-val">{{userInfo.useIdentity==1?'ç¨å·¥æ¥åæ¹':'ç¨å·¥å叿¹'}}</view> <view class="info-box-head-info-type-wz" @click="editUseIdentity">忢</view> <view class="info-box-head-info-type-val1" v-if="userInfo.useIdentity==1">ç¨å·¥æ¥åæ¹</view> <view class="info-box-head-info-type-val" v-else>ç¨å·¥å叿¹</view> <!-- <view class="info-box-head-info-type-wz" @click="editUseIdentity">忢</view> --> </view> </view> <view class="info-box-head-info" v-else @click="jump(5)"> @@ -24,6 +25,10 @@ <view class="info-box-head-info-type"> <view class="info-box-head-info-type-wz">微信ææç»å½</view> </view> </view> <view class="info-box-head-qiehuan" @click="editUseIdentity"> <image src="/static/icon/ic_change@2x.png" mode="widthFix"></image> <text>åæ¢èº«ä»½</text> </view> </view> <view class="info-box-label">è´¦æ·ä½é¢</view> @@ -484,7 +489,6 @@ width: 100%; height: 108rpx; display: flex; align-items: center; margin-bottom: 30rpx; .info-box-head-image { width: 108rpx; @@ -498,6 +502,20 @@ margin-right: 24rpx; image { width: 100%; } } .info-box-head-qiehuan { flex-shrink: 0; display: flex; image { width: 32rpx; height: 32rpx; margin-right: 10rpx; } text { font-weight: 400; font-size: 28rpx; color: #00BC12; } } .info-box-head-info { @@ -528,6 +546,19 @@ border: 2rpx solid #FD9E24; margin-right: 20rpx; } .info-box-head-info-type-val1 { width: 144rpx; height: 42rpx; line-height: 42rpx; text-align: center; background: rgba(91,190,56,0.06); border-radius: 8rpx; font-weight: 400; font-size: 24rpx; color: #00BC12; border: 2rpx solid #00BC12; margin-right: 20rpx; } .info-box-head-info-type-wz { font-weight: 400; font-size: 24rpx; small-program/pages/order-details/order-details.vue
@@ -58,14 +58,14 @@ <view v-if="info.type===0" class="order-info-wz"> {{info.categoryName || ''}}ï½{{info.priceNum1 || '' }}{{feeFrom.priceParam1.unit}}{{feeFrom.priceParam2.name!=null?(' | '+info.priceNum2+feeFrom.priceParam2.unit):''}}</view> <view v-if="info.type===1" class="order-info-wz">{{info.carUnit || ''}}{{' | '}}{{info.transportTypeName || ''}}{{' | '}}{{info.transportNum || '' }}{{info.transportUnit||''}}{{' | '}}é{{info.priceNum2 || '' }}è¾</view> <view class="order-info-address"> <view class="order-info-address" v-if="info.type!==1" @click="openAddr({ lat: info.lat, lgt: info.lgt, location: info.location })"> <image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image> <view class="order-info-address-info"> <text>{{info.location || '' }}</text> <text>{{info.locationRemark || '' }}</text> </view> </view> <view class="order-info-address"> <view class="order-info-address" v-if="info.type!==1"> <image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image> <view class="order-info-address-info"> <text>{{info.startDate || ''}}{{' è³ '}}{{info.endDate || ''}}({{info.totalDays||0}}天)</text> @@ -73,11 +73,14 @@ </view> <view class="address" v-if="info.type===1 && wayList && wayList.length>0"> <view class="address-xian"></view> <view class="address-row" v-for="(item,index) in wayList" style="display: block;margin: 10px" :key="index"> <view class="address-row" v-for="(item,index) in wayList" style="display: block;margin: 10px" :key="index" @click="openAddr(item)"> <image v-if="index === 0" src="/static/icon/ic_qidian@2x.png" mode="widthFix"></image> <image v-if="index >0 && index < wayList.length-1" src="/static/icon/ic_jingguo@2x.png" mode="widthFix"></image> <image v-if="index === wayList.length-1" src="/static/icon/ic_zhongdian@2x.png" mode="widthFix"></image> <text>{{item.location || ''}}</text> <view class="address-row-info"> {{item.location || ''}} <image class="address-row-right" src="/static/icon/ar_address@2x.png" mode="widthFix"></image> </view> </view> </view> <view class="order-info-x"></view> @@ -85,8 +88,8 @@ <view class="order-info-supplement-title">éæ±è¡¥å ï¼</view> <view class="order-info-supplement-val">{{info.supplement || '' }}</view> <view class="order-info-supplement-list"> <view class="order-info-supplement-list-item" v-for="(item,index) in info.multifileList" v-if="info.multifileList && info.multifileList.length>0" :key="item.imgurl"> <image v-if="item.fileurlFull" :src="item.fileurlFull" @click="previemImg(item.fileurlFull)" mode="widthFix"></image> <view class="order-info-supplement-list-item" v-for="(item,index) in info.multifileList" v-if="info.multifileList && info.multifileList.length>0" :key="item.imgurl" @click="previemImg(index, info.multifileList)"> <image v-if="item.fileurlFull" :src="item.fileurlFull" mode="widthFix"></image> </view> <view style="width: 156rpx; height: 0;"></view> <view style="width: 156rpx; height: 0;"></view> @@ -236,9 +239,9 @@ </view> <view style="width: 100%; height: calc(108rpx + env(safe-area-inset-bottom));" v-if="![99].includes(info.status)"></view> <view class="order-footer" v-if="![99].includes(info.status)"> <template v-if="isPushlishor && info.isUpdate!=1 &&info.status ===2"> <template v-if="isPushlishor && info.isUpdate != 1 && info.status === 2 && canStart==1"> <sunui-mverify v-if="1==2" hint="å¼å§ä½ä¸" @change="getaccept($event)"></sunui-mverify> <view class="order-footer-btn" > <view class="order-footer-btn" v-if="comparisonTime(info.startDate)"> <view class="order-footer-btn-b" @click="show8 = true">å¼å§ä½ä¸</view> </view> </template> @@ -251,7 +254,6 @@ <view class="order-footer-btn-b" v-if="isPushlishor && ((info.status ===3 && info.type===2))" @click="payment1">宿ä½ä¸</view> <view class="order-footer-btn-b" v-if="info.type !=2 && info.isUpdate!=1&& isPushlishor && (info.status ===0 || info.status ===1|| info.status ===2)" @click="jumpEdit()">ä¿®æ¹è®¢å</view> <view class="order-footer-btn-b" @click="show5 =true" v-if="isAcceptor&& (info.isUpdate==1 && info.status ===2)">ä¿®æ¹ç¡®è®¤</view> <!-- <view class="order-footer-btn-b" @click="startJobs()" v-if="userInfo.id === info.releaseMemberId && (info.status ===2)">å¼å§ä½ä¸</view> --> <view class="order-footer-btn-b" @click="show6 =true" v-if="!isPushlishor && (info.status ===1)">æ¢å</view> </view> <view style="width: 100%; height: env(safe-area-inset-bottom);"></view> @@ -490,8 +492,22 @@ }, onShow(options) { this.getOrderData() console.log(this.comparisonTime('2025-09-13')) }, methods:{ comparisonTime(start) { let startDate = new Date().getTime(); let endDate = new Date(start).getTime(); return startDate >= endDate; }, openAddr(e) { uni.openLocation({ latitude: e.lat, longitude: e.lgt, name: e.location }) }, beginDo(e) { var that = this uni.requestSubscribeMessage({ @@ -716,11 +732,9 @@ }) }, previemImg(src){ uni.previewImage({ current: src, urls: [src] }); previemImg(current, arr) { let urls = arr.map(item => item.fileurlFull) uni.previewImage({ current, urls }); }, contactPhone(phone){ if(phone !=null && phone!=''){ @@ -731,27 +745,7 @@ }, //订åç¶æ:0=å¾ æ¯ä» 1=å¾ æ¥åï¼2=å·²æ¥åï¼3=è¿è¡ä¸ï¼4=已宿ï¼99=已忶 getStatusInfo(){ if(this.userInfo.id === this.info.acceptMemberId){ //å¦ææ¯æ¥åæ¹ if(this.info.status === 0){ return '' }else if(this.info.status === 1){ return '' }else if(this.info.status === 2){ if(this.info.isUpdate==1){ return '' } return 'æ¨å·²æ¥åï¼è¯·ææ¶å®æè®¢åä»»å¡' }else if(this.info.status === 5){ return 'æ¨å·²ç¡®è®¤è´¹ç¨ï¼çå¾ ååæ¹æ¯ä»' }else if(this.info.status === 3){ return '订åè¿è¡ä¸ï¼è¯·ææ¶å®æè®¢åä»»å¡' }else if(this.info.status === 4){ return 'æ¨ç订å已宿' }else if(this.info.status === 99){ return '订å已忶' } }else{ if(this.isPushlishor){ //妿æ¯å叿¹ if(this.info.status === 0){ return 'è¯·å°½å¿«å®ææ¯ä»ï¼åå¸è®¢å' @@ -773,6 +767,27 @@ return 'æ¥åæ¹å·²ç¡®è®¤è´¹ç¨ï¼è¯·ç¹å»ä¸æ¹â宿并æ¯ä»âæé®' }else if(this.info.status === 4){ return this.info.commentStatus==1?'æ¨ç订åå·²å®æï¼æ¬¢è¿å次使ç¨': 'æ¨ç订å已宿ï¼è¯·åæ¶è¯ä»·' }else if(this.info.status === 99){ return '订å已忶' } //å¦ææ¯æ¥åæ¹ }else{ if(this.info.status === 0){ return '' }else if(this.info.status === 1){ return 'å忹已æåå起订åï¼æ¨å¯ä»¥è¿è¡æ¥å' }else if(this.info.status === 2){ if(this.info.isUpdate==1){ return '' } return 'æ¨å·²æ¥åï¼è¯·ææ¶å®æè®¢åä»»å¡' }else if(this.info.status === 5){ return 'æ¨å·²ç¡®è®¤è´¹ç¨ï¼çå¾ ååæ¹æ¯ä»' }else if(this.info.status === 3){ return '订åè¿è¡ä¸ï¼è¯·ææ¶å®æè®¢åä»»å¡' }else if(this.info.status === 4){ return 'æ¨ç订å已宿' }else if(this.info.status === 99){ return '订å已忶' } @@ -887,11 +902,11 @@ this.feeFrom.priceParam2.name ='ç¨å·¥äººæ°' this.feeFrom.priceParam2.unit ='人' }else if(this.info.carType==2){ //æå°æ¶ //æéé this.feeFrom.priceParam1.name ='å è£ éé' this.feeFrom.priceParam1.unit ='æ¤' this.feeFrom.priceParam2.name =null this.feeFrom.priceParam2.unit =null this.feeFrom.priceParam2.name ='ç¨å·¥äººæ°' this.feeFrom.priceParam2.unit ='人' } }else if(this.info.type==1 && this.info.carType==0){ //è¿è´§å æå¤©æ° @@ -1658,8 +1673,7 @@ z-index: 2; width: 100%; display: flex !important; align-items: center; margin-bottom: 30rpx ; margin-bottom: 32rpx ; margin-left: 0rpx !important; margin-top: 0rpx !important; &:last-child { @@ -1671,10 +1685,17 @@ flex-shrink: 0; margin-right: 24rpx; } text { .address-row-info { width: 100%; font-weight: 400; font-size: 28rpx; color: #333333; .address-row-right { width: 8rpx; height: 16rpx; margin-left: 12rpx; margin-top: 15rpx; } } } } small-program/pages/packaging-worker/packaging-worker.vue
@@ -81,7 +81,7 @@ <view class="list-item-row-label" v-if="form.carType === 1">工使¶é¿<b>*</b></view> <view class="list-item-row-label" v-if="form.carType === 2">å è£ éé<b>*</b></view> <view class="list-item-row-val"> <input v-model="form.priceNum1" :disabled="form.carType === 0" @blur="getPrice" type="number" placeholder="请è¾å ¥" /> <input v-model="form.priceNum1" :disabled="form.carType === 0" @blur="getPrice" type="digit" placeholder="请è¾å ¥" /> <text v-if="form.carType === 0">天</text> <text v-if="form.carType === 1">å°æ¶</text> <text v-if="form.carType === 2">æ¤</text> @@ -90,14 +90,14 @@ <view class="list-item-row"> <view class="list-item-row-label">ç¨å·¥æ°é<b>*</b></view> <view class="list-item-row-val"> <input type="number" v-model="form.priceNum2" @blur="getPrice" placeholder="请è¾å ¥" /> <input type="digit" v-model="form.priceNum2" @blur="getPrice" placeholder="请è¾å ¥" /> <text>人</text> </view> </view> <view class="list-item-row"> <view class="list-item-row-label">è´¹ç¨æ å<b>*</b></view> <view class="list-item-row-val"> <input v-model="form.price" type="number" @blur="getPrice" placeholder="请è¾å ¥" /> <input v-model="form.price" type="digit" @blur="getPrice" placeholder="请è¾å ¥" /> <text>{{form.priceUnit}}</text> </view> </view> @@ -227,6 +227,7 @@ if (!this.form.multifileList) { this.form.multifileList = [] } this.workDays = res.data.totalDays // this.clickType() } small-program/pages/using-workers/using-workers.vue
@@ -49,7 +49,7 @@ <view class="list-item-row"> <view class="list-item-row-label">éæéé<b>*</b></view> <view class="list-item-row-val"> <input type="number" v-model="form.priceNum1" @blur="getPrice" placeholder="请è¾å ¥" /> <input type="digit" v-model="form.priceNum1" @blur="getPrice" placeholder="请è¾å ¥" /> <text>æ¤</text> </view> </view> @@ -62,14 +62,15 @@ <view class="list-item-row" > <view class="list-item-row-label">å¾ç</view> <view class="list-item-row-upload"> <view class="upload-item" v-for="(item, index) in form.multifileList" :key="index"> <view class="upload-item" v-for="(item, index) in form.multifileList" :key="index" @click="preview(index, form.multifileList)"> <image :src="item.url || item.fileurlFull" mode="widthFix"></image> <image class="upload-item-dele" @click="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image> <image class="upload-item-dele" @click.stop="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image> </view> <view class="upload-item" @click="uploadImg"> <u-icon name="plus" color="#999999" size="24"></u-icon> <text>ç¹å»ä¸ä¼ </text> </view> <view style="width: 215rpx; height: 0;"></view> </view> </view> <!-- <view class="list-item-zk" @click="viewStatus = !viewStatus"> @@ -226,6 +227,10 @@ this.getCateList() }, methods: { preview(current, arr) { let urls = arr.map(item => item.url || item.fileurlFull) uni.previewImage({ current, urls }) }, // æäº¤è®¢å submit() { var that = this; @@ -629,21 +634,22 @@ width: 100%; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 30rpx 0; box-sizing: border-box; .upload-item { width: 156rpx; height: 156rpx; width: 215rpx; height: 215rpx; display: flex; align-items: center; flex-direction: column; justify-content: center; background: #F8F9FB; border-radius: 8rpx; margin-right: 20rpx; border: 2rpx solid #EEEEEE; position: relative; margin-bottom: 15rpx; &:last-child { margin: 0 !important; } small-program/static/icon/ar_address@2x.png
small-program/static/icon/ic_change@2x.png