| | |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | | @ApiOperation("ä¿®æ¹ç¶æ") |
| | | @PostMapping("/updateStatus") |
| | | @RequiresPermissions("business:areas:update") |
| | | public ApiResponse updateStatus(@RequestBody Areas areas) { |
| | | areasService.updateStatus(areas); |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/page") |
| | | // @RequiresPermissions("business:areas:query") |
| | |
| | | return ApiResponse.success("æä½æå"); |
| | | } |
| | | |
| | | @ApiOperation("å·²æ¯ä»æ¼é叿ºå表") |
| | | @GetMapping("/paidDepositList") |
| | | @RequiresPermissions("business:driverInfo:query") |
| | | public ApiResponse<List<DriverInfo>> paidDepositList() { |
| | | DriverInfo query = new DriverInfo(); |
| | | query.setAuditStatus(3); |
| | | query.setDeleted(0); |
| | | return ApiResponse.success(driverInfoService.findList(query)); |
| | | } |
| | | |
| | | } |
| | |
| | | package com.doumee.api.business; |
| | | |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.core.annotation.excel.ExcelExporter; |
| | | import com.doumee.core.annotation.pr.PreventRepeat; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.OrdersRefund; |
| | | import com.doumee.dao.dto.OrdersRefundPageDTO; |
| | | import com.doumee.dao.vo.OrdersRefundPageVO; |
| | | import com.doumee.service.business.OrdersRefundService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/page") |
| | | @RequiresPermissions("business:ordersRefund:query") |
| | | public ApiResponse<PageData<OrdersRefund>> findPage(@RequestBody PageWrap<OrdersRefund> pageWrap) { |
| | | return ApiResponse.success(ordersRefundService.findPage(pageWrap)); |
| | | public ApiResponse<PageData<OrdersRefundPageVO>> findPage(@RequestBody PageWrap<OrdersRefundPageDTO> pageWrap) { |
| | | return ApiResponse.success(ordersRefundService.refundPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDæ¥è¯¢") |
| | |
| | | public ApiResponse findById(@PathVariable Integer id) { |
| | | return ApiResponse.success(ordersRefundService.findById(id)); |
| | | } |
| | | |
| | | @PreventRepeat |
| | | @ApiOperation("鿰鿬¾") |
| | | @PostMapping("/retryRefund/{id}") |
| | | @RequiresPermissions("business:ordersRefund:update") |
| | | public ApiResponse retryRefund(@PathVariable Integer id) { |
| | | ordersRefundService.retryRefund(id); |
| | | return ApiResponse.success("æä½æå"); |
| | | } |
| | | |
| | | @ApiOperation("导åºExcel") |
| | | @PostMapping("/exportExcel") |
| | | @RequiresPermissions("business:ordersRefund:exportExcel") |
| | | public void exportExcel(@RequestBody PageWrap<OrdersRefundPageDTO> pageWrap, HttpServletResponse response) { |
| | | pageWrap.setPage(1); |
| | | pageWrap.setCapacity(99999); |
| | | PageData<OrdersRefundPageVO> pageData = ordersRefundService.refundPage(pageWrap); |
| | | ExcelExporter.build(OrdersRefundPageVO.class).export(pageData.getRecords(), "鿬¾è®°å½", response); |
| | | } |
| | | } |
| | |
| | | @Autowired |
| | | private PricingRuleService pricingRuleService; |
| | | |
| | | @PreventRepeat |
| | | /*@PreventRepeat |
| | | @ApiOperation("æ°å»º") |
| | | @PostMapping("/create") |
| | | @RequiresPermissions("business:pricingRule:create") |
| | |
| | | @RequiresPermissions("business:pricingRule:query") |
| | | public ApiResponse findById(@PathVariable Integer id) { |
| | | return ApiResponse.success(pricingRuleService.findById(id)); |
| | | } |
| | | }*/ |
| | | |
| | | @PreventRepeat |
| | | @ApiOperation("æ¹éä¿åå°±å°ååè§å") |
| | |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.dao.system.dto.CreateSystemUserDTO; |
| | | import com.doumee.dao.system.dto.CreateUserRoleDTO; |
| | | import com.doumee.dao.system.dto.QuerySystemUserDTO; |
| | |
| | | public ApiResponse<PageData<SystemUserListVO>> findPage (@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) { |
| | | return ApiResponse.success(systemUserService.findPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("ç¨æ·å表ï¼ä»
主é®åå§åï¼") |
| | | @GetMapping("/list") |
| | | @RequiresPermissions("system:user:query") |
| | | public ApiResponse<List<SystemUser>> list() { |
| | | SystemUser query = new SystemUser(); |
| | | query.setDeleted(false); |
| | | return ApiResponse.success(systemUserService.findList(query)); |
| | | } |
| | | } |
| | |
| | | dto.setAutoConfirmReceipt(getValue(Constants.OP_AUTO_CONFIRM_RECEIPT)); |
| | | dto.setNoGrabNotifyTime(getValue(Constants.OP_NO_GRAB_NOTIFY_TIME)); |
| | | dto.setNoGrabNotifyUsers(getValue(Constants.OP_NO_GRAB_NOTIFY_USERS)); |
| | | dto.setDefaultDeliveryRange(getValue(Constants.OP_DEFAULT_DELIVERY_RANGE)); |
| | | return dto; |
| | | } |
| | | |
| | |
| | | saveOrUpdate(Constants.OP_AUTO_CONFIRM_RECEIPT, "èªå¨ç¡®è®¤æ¶è´§", dto.getAutoConfirmReceipt()); |
| | | saveOrUpdate(Constants.OP_NO_GRAB_NOTIFY_TIME, "æ 人æ¢åéç¥æ¶é´", dto.getNoGrabNotifyTime()); |
| | | saveOrUpdate(Constants.OP_NO_GRAB_NOTIFY_USERS, "æ 人æ¢åçä¿¡éç¥äººå", dto.getNoGrabNotifyUsers()); |
| | | saveOrUpdate(Constants.OP_DEFAULT_DELIVERY_RANGE, "é»è®¤é
éèå´", dto.getDefaultDeliveryRange()); |
| | | } |
| | | |
| | | private String getValue(String label) { |
| | |
| | | || StringUtils.isBlank(dto.getOrderAcceptLimit()) |
| | | || StringUtils.isBlank(dto.getAutoConfirmReceipt()) |
| | | || StringUtils.isBlank(dto.getNoGrabNotifyTime()) |
| | | || StringUtils.isBlank(dto.getNoGrabNotifyUsers())) { |
| | | || StringUtils.isBlank(dto.getNoGrabNotifyUsers()) |
| | | || StringUtils.isBlank(dto.getDefaultDeliveryRange())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ææé
置项å为å¿
å¡«"); |
| | | } |
| | | } |
| | |
| | | |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.utils.ID; |
| | | import com.wechat.pay.java.core.notification.RequestParam; |
| | | import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest; |
| | | import com.wechat.pay.java.service.payments.jsapi.model.PrepayWithRequestPaymentResponse; |
| | | import com.wechat.pay.java.service.refund.model.AmountReq; |
| | | import com.wechat.pay.java.service.refund.model.CreateRequest; |
| | | import com.wechat.pay.java.service.refund.model.QueryByOutRefundNoRequest; |
| | | import com.wechat.pay.java.service.refund.model.Refund; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | /** |
| | | * V3鿬¾ |
| | | * |
| | | * @param outRefundNo 忷鿬¾åå·ï¼ç±è°ç¨æ¹çæï¼ |
| | | * @param outTradeNo åæ·è®¢åå· |
| | | * @param totalCents å订åéé¢ï¼åï¼ |
| | | * @param refundCents 鿬¾éé¢ï¼åï¼ |
| | |
| | | * @param notifyUrl 鿬¾åè°å°å |
| | | * @return Refund 鿬¾ç»æï¼å
å« outRefundNoãstatus çï¼ |
| | | */ |
| | | public Refund refund(String outTradeNo, Long totalCents, Long refundCents, |
| | | public Refund refund(String outRefundNo, String outTradeNo, Long totalCents, Long refundCents, |
| | | String reason, String notifyUrl) { |
| | | if (WxMiniConfig.v3RefundService == null) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "微信æ¯ä»V3æªåå§å"); |
| | | } |
| | | try { |
| | | String outRefundNo = ID.nextGUID(); |
| | | |
| | | CreateRequest request = new CreateRequest(); |
| | | request.setOutTradeNo(outTradeNo); |
| | | request.setOutRefundNo(outRefundNo); |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鿬¾åè°éªç¾å¤±è´¥"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢åç¬é款 |
| | | * |
| | | * @param outRefundNo 忷鿬¾åå· |
| | | * @return Refund 鿬¾ç»æ |
| | | */ |
| | | public Refund queryRefund(String outRefundNo) { |
| | | if (WxMiniConfig.v3RefundService == null) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "微信æ¯ä»V3æªåå§å"); |
| | | } |
| | | try { |
| | | QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest(); |
| | | request.setOutRefundNo(outRefundNo); |
| | | Refund result = WxMiniConfig.v3RefundService.queryByOutRefundNo(request); |
| | | log.info("微信æ¯ä»V3æ¥è¯¢åç¬é款, outRefundNo={}, status={}", outRefundNo, result.getStatus()); |
| | | return result; |
| | | } catch (Exception e) { |
| | | log.error("微信æ¯ä»V3æ¥è¯¢é款失败: {}", e.getMessage(), e); |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ¥è¯¢é款失败ï¼" + e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | |
| | | public static final String OP_AUTO_CONFIRM_RECEIPT = "AUTO_CONFIRM_RECEIPT"; |
| | | public static final String OP_NO_GRAB_NOTIFY_TIME = "NO_GRAB_NOTIFY_TIME"; |
| | | public static final String OP_NO_GRAB_NOTIFY_USERS = "NO_GRAB_NOTIFY_USERS"; |
| | | public static final String OP_DEFAULT_DELIVERY_RANGE = "DEFAULT_DELIVERY_RANGE"; |
| | | public static boolean WORKORDER_SHE_EMAIL_SENDING = false; |
| | | public static boolean DEALING_COMPANY_SYNC = false ; |
| | | public static boolean DEALING_MEMBER_SYNC = false ; |
| | |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum OrderLogType { |
| | | createOrder(1, "å建订å", "ä¼åå建å¯å订åï¼è®¢åç¼å·ã{param}ã"), |
| | | payOrder(1, "è®¢åæ¯ä»", "ä¼åæ¯ä»æåï¼æ¯ä»éé¢ã{param}ãå
"), |
| | | urgent(2, "å¹³å°å æ¥", "å¹³å°å æ¥ï¼å¥å±éã{param}ãå
"), |
| | | assignDriver(3, "å¹³å°ææ´¾", "å¹³å°ææ´¾å¸æºã{param}ãæ¥åï¼å¥å±éã{param1}ãå
"), |
| | | memberCancel(4, "ä¼ååæ¶è®¢å", "{param}"), |
| | |
| | | throw new RuntimeException("é«å¾·å°å¾è·¯å¾è§åå¼å¸¸", e); |
| | | } |
| | | } |
| | | |
| | | public static JSONObject directionInfo(String mode, String from, String to) { |
| | | // é«å¾·åæ 系为 lng,lat |
| | | String[] fromArr = from.split(","); |
| | | String[] toArr = to.split(","); |
| | | String origin = fromArr[1] + "," + fromArr[0]; // lng,lat |
| | | String destination = toArr[1] + "," + toArr[0]; // lng,lat |
| | | |
| | | try { |
| | | String url; |
| | | if ("bicycling".equals(mode)) { |
| | | url = BICYCLING_URL |
| | | + "?key=" + amapKey |
| | | + "&origin=" + URLEncoder.encode(origin, "UTF-8") |
| | | + "&destination=" + URLEncoder.encode(destination, "UTF-8"); |
| | | } else { |
| | | // é»è®¤é©¾è½¦ |
| | | url = DRIVING_URL |
| | | + "?key=" + amapKey |
| | | + "&origin=" + URLEncoder.encode(origin, "UTF-8") |
| | | + "&destination=" + URLEncoder.encode(destination, "UTF-8"); |
| | | } |
| | | |
| | | log.info("é«å¾·å°å¾è·¯å¾è§å请æ±: mode={}, from={}, to={}", mode, from, to); |
| | | |
| | | JSONObject json = new Http().build(url) |
| | | .setConnectTimeout(5000) |
| | | .setReadTimeout(10000) |
| | | .get() |
| | | .toJSONObject(); |
| | | |
| | | log.info("é«å¾·å°å¾è·¯å¾è§åååº: {}", json); |
| | | return json; |
| | | } catch (IOException e) { |
| | | log.error("é«å¾·å°å¾è·¯å¾è§åå¼å¸¸", e); |
| | | throw new RuntimeException("é«å¾·å°å¾è·¯å¾è§åå¼å¸¸", e); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "徿 å
¨è·¯å¾") |
| | | @TableField(exist = false) |
| | | private String iconFull; |
| | | |
| | | @ApiModelProperty(value = "èªå
³è对象åç§°") |
| | | @TableField(exist = false) |
| | | private String relationName; |
| | | } |
| | |
| | | private String goodLevelName; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "ç©åç±»ååç§°ï¼å
³èæ¥è¯¢ï¼") |
| | | private String goodTypeName; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "æ¯å¦åå¨ç¹å¤§å°ºå¯¸ï¼0=å¦ 1=æ¯ï¼å
³èæ¥è¯¢ï¼") |
| | | private Integer hasOversized; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "订åç¶ææè¿°") |
| | | private String statusDesc; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "叿ºå§åï¼å
³èæ¥è¯¢ï¼") |
| | | private String driverName; |
| | | |
| | |
| | | package com.doumee.dao.business.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | |
| | | @ApiModelProperty(value = "鿬¾å订åç¶æ", example = "1") |
| | | private Integer beforeStatus; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "订åç¼å·ï¼å
³èæ¥è¯¢ï¼") |
| | | private String orderCode; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "ç©åä¿¡æ¯ï¼å
³èæ¥è¯¢ï¼") |
| | | private String goodsInfo; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "订åç±»åï¼å
³èæ¥è¯¢ï¼") |
| | | private Integer orderType; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "订å级å«ï¼å
³èæ¥è¯¢ï¼") |
| | | private Integer goodLevel; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "ç©åç级åç§°ï¼å
³èæ¥è¯¢ï¼") |
| | | private String goodLevelName; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "è®¢åæ»ä»·ï¼å
³èæ¥è¯¢ï¼") |
| | | private Long totalAmount; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "å®ä»éé¢ï¼å
³èæ¥è¯¢ï¼") |
| | | private Long payAmount; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "鿬¾ç³è¯·å¼å§æ¶é´(æ¥è¯¢ç¨)") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createStartTime; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "鿬¾ç³è¯·ç»ææ¶é´(æ¥è¯¢ç¨)") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date createEndTime; |
| | | |
| | | } |
| | |
| | | private Integer isUrgent; |
| | | |
| | | @ApiModelProperty(value = "ä¿ä»·éé¢(å
,éå¿
å¡«)") |
| | | @NotNull(message = "ä¿ä»·éé¢ä¸è½ä¸ºç©º") |
| | | private BigDecimal declaredAmount; |
| | | |
| | | @ApiModelProperty(value = "订å夿³¨(éå¿
å¡«)") |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * è·¯å¾è§åæ¥è¯¢æ¡ä»¶ |
| | | * @author rk |
| | | * @date 2026/04/27 |
| | | */ |
| | | @Data |
| | | @ApiModel("è·¯å¾è§åæ¥è¯¢æ¡ä»¶") |
| | | public class DirectionInfoDTO implements Serializable { |
| | | |
| | | @NotBlank(message = "åºè¡æ¹å¼ä¸è½ä¸ºç©º") |
| | | @ApiModelProperty(value = "åºè¡æ¹å¼ï¼driving=驾车ï¼bicycling=éªè¡", example = "driving") |
| | | private String mode; |
| | | |
| | | @NotBlank(message = "èµ·ç¹åæ ä¸è½ä¸ºç©º") |
| | | @ApiModelProperty(value = "èµ·ç¹åæ ï¼æ ¼å¼ï¼lat,lng", example = "30.123,120.456") |
| | | private String from; |
| | | |
| | | @NotBlank(message = "ç»ç¹åæ ä¸è½ä¸ºç©º") |
| | | @ApiModelProperty(value = "ç»ç¹åæ ï¼æ ¼å¼ï¼lat,lng", example = "30.789,120.123") |
| | | private String to; |
| | | } |
| | |
| | | @ApiModelProperty(value = "æ 人æ¢åçä¿¡éç¥äººå主é®(å¤ä¸ªä»¥,åå²)", required = true) |
| | | private String noGrabNotifyUsers; |
| | | |
| | | @ApiModelProperty(value = "é»è®¤é
éèå´(km)", required = true) |
| | | private String defaultDeliveryRange; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.dto; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 鿬¾è®°å½å页æ¥è¯¢æ¡ä»¶ |
| | | * @author rk |
| | | * @date 2026/04/27 |
| | | */ |
| | | @Data |
| | | @ApiModel("鿬¾è®°å½å页æ¥è¯¢æ¡ä»¶") |
| | | public class OrdersRefundPageDTO implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "订åç¼å·") |
| | | private String orderCode; |
| | | |
| | | @ApiModelProperty(value = "ç©åä¿¡æ¯") |
| | | private String goodsInfo; |
| | | |
| | | @ApiModelProperty(value = "订åç±»åï¼0=å°±å°ååï¼1=å¼å°åå") |
| | | private Integer orderType; |
| | | |
| | | @ApiModelProperty(value = "鿬¾ç¶æï¼0=鿬¾ä¸ï¼1=鿬¾æåï¼2=鿬¾å¤±è´¥") |
| | | private Integer refundStatus; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ApiModelProperty(value = "鿬¾ç³è¯·å¼å§æ¶é´", example = "2026-01-01 00:00:00") |
| | | private Date createStartTime; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ApiModelProperty(value = "鿬¾ç³è¯·ç»ææ¶é´", example = "2026-12-31 00:00:00") |
| | | private Date createEndTime; |
| | | } |
| | |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | @ApiModelProperty(value = "è·åä»¶é¨åºè·ç¦»ï¼å¦ 500mã1.2kmï¼") |
| | | private String depositDistance; |
| | | |
| | | @ApiModelProperty(value = "åä»¶ç¹ç»åº¦") |
| | | private Double depositLng; |
| | | |
| | | @ApiModelProperty(value = "åä»¶ç¹çº¬åº¦") |
| | | private Double depositLat; |
| | | |
| | | @ApiModelProperty(value = "åä»¶é¨åºåç§°") |
| | | private String takeName; |
| | | |
| | |
| | | @ApiModelProperty(value = "åä»¶è·ç¦»ï¼å¦ 500mã1.2kmï¼") |
| | | private String takeDistance; |
| | | |
| | | @ApiModelProperty(value = "åä»¶ç¹ç»åº¦") |
| | | private Double takeLng; |
| | | |
| | | @ApiModelProperty(value = "åä»¶ç¹çº¬åº¦") |
| | | private Double takeLat; |
| | | |
| | | @ApiModelProperty(value = "èç³»çµè¯ï¼status=2åä»¶é¨åºçµè¯ï¼status=3/4æåä»¶é¨åºè¿åé¨åºçµè¯ï¼æ åè¿åå件人çµè¯ï¼") |
| | | private String contactPhone; |
| | | |
| | |
| | | |
| | | @ApiModelProperty(value = "å æ¥è´¹ç¨ï¼åï¼") |
| | | private Long urgentAmount; |
| | | |
| | | @ApiModelProperty(value = "å¹³å°å¥å±éé¢ï¼åï¼") |
| | | private Long platformRewardAmount; |
| | | |
| | | @ApiModelProperty(value = "ç©åæç»å表") |
| | | private List<OrderItem> items; |
| | |
| | | @ApiModelProperty(value = "叿ºåè´§ç ï¼å¾
åè´§ç¶ææ¶è¿åï¼") |
| | | private String driverVerifyCode; |
| | | |
| | | @ApiModelProperty(value = "订åç¶æ") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty(value = "订åç¶ææè¿°") |
| | | private String statusDesc; |
| | | |
| | | @com.fasterxml.jackson.annotation.JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ApiModelProperty(value = "订åå建æ¶é´") |
| | | private Date createTime; |
| | | |
| | | @Data |
| | | @ApiModel("æ¢å大å
ç©å项") |
| | | public static class OrderItem implements Serializable { |
| | |
| | | @ApiModelProperty(value = "åä»¶è·ç¦»ï¼å¦ 500mã1.2kmï¼") |
| | | private String takeDistance; |
| | | |
| | | @ApiModelProperty(value = "èç³»çµè¯") |
| | | private String contactPhone; |
| | | @ApiModelProperty(value = "åä»¶é¨åºçµè¯") |
| | | private String depositShopPhone; |
| | | |
| | | @ApiModelProperty(value = "åä»¶èç³»çµè¯ï¼åä»¶é¨åºçµè¯æåä»¶äººææºå·ï¼") |
| | | private String takeContactPhone; |
| | | |
| | | @ApiModelProperty(value = "叿ºèªé
¬ï¼åï¼") |
| | | private Long driverFee; |
| | | |
| | | @ApiModelProperty(value = "å æ¥è´¹ç¨ï¼åï¼") |
| | | private Long urgentAmount; |
| | | |
| | | @ApiModelProperty(value = "å¹³å°å¥å±éé¢ï¼åï¼") |
| | | private Long platformRewardAmount; |
| | | |
| | | @ApiModelProperty(value = "ç©åæç»å表") |
| | | private List<OrderItem> items; |
| | |
| | | |
| | | @ApiModelProperty(value = "ç©åç级åç§°") |
| | | private String goodLevelName; |
| | | |
| | | @ApiModelProperty(value = "ç©åç±»ååç§°") |
| | | private String goodTypeName; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦åå¨ç¹å¤§å°ºå¯¸ï¼0=å¦ 1=æ¯") |
| | | private Integer hasOversized; |
| | |
| | | @ApiModelProperty(value = "ä¸åéä»¶å¾çå
¨è·¯å¾å表") |
| | | private List<String> orderImages; |
| | | |
| | | // ---- æ¶é´ä¿¡æ¯ ---- |
| | | |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | @com.fasterxml.jackson.annotation.JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date createTime; |
| | | |
| | | @ApiModelProperty(value = "叿ºæ¥åæ¶é´") |
| | | @com.fasterxml.jackson.annotation.JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date acceptTime; |
| | | |
| | | @ApiModelProperty(value = "叿ºåä»¶æ¶é´") |
| | | @com.fasterxml.jackson.annotation.JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date driverTakeTime; |
| | | |
| | | @ApiModelProperty(value = "订å宿æ¶é´") |
| | | @com.fasterxml.jackson.annotation.JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date finishTime; |
| | | |
| | | @ApiModelProperty(value = "订å夿³¨") |
| | | private String remark; |
| | | |
| | | // ---- 宿¶ç»çº¬åº¦ï¼å¼å°å¯åæç¶æè¿åï¼ ---- |
| | | |
| | | @ApiModelProperty(value = "åä»¶é¨åºç»åº¦") |
| | |
| | | |
| | | @ApiModelProperty(value = "æ¥å叿ºå§å") |
| | | private String driverName; |
| | | |
| | | @ApiModelProperty(value = "订åç¶ææè¿°") |
| | | private String statusDesc; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.vo; |
| | | |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 鿬¾è®°å½å页å表项 |
| | | * @author rk |
| | | * @date 2026/04/27 |
| | | */ |
| | | @Data |
| | | @ApiModel("鿬¾è®°å½å页å表项") |
| | | public class OrdersRefundPageVO implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "鿬¾è®°å½ä¸»é®") |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "订å主é®") |
| | | private Integer orderId; |
| | | |
| | | @ExcelColumn(name = "订åç¼å·") |
| | | @ApiModelProperty(value = "订åç¼å·") |
| | | private String orderCode; |
| | | |
| | | @ExcelColumn(name = "ç©åä¿¡æ¯") |
| | | @ApiModelProperty(value = "ç©åä¿¡æ¯") |
| | | private String goodsInfo; |
| | | |
| | | @ExcelColumn(name = "订åç±»å", valueMapping = "0=å°±å°åå;1=å¼å°åå;") |
| | | @ApiModelProperty(value = "订åç±»åï¼0=å°±å°ååï¼1=å¼å°åå") |
| | | private Integer orderType; |
| | | |
| | | @ExcelColumn(name = "订å级å«") |
| | | @ApiModelProperty(value = "订å级å«åç§°") |
| | | private String goodLevelName; |
| | | |
| | | @ExcelColumn(name = "è®¢åæ»ä»·ï¼å
ï¼") |
| | | @ApiModelProperty(value = "è®¢åæ»ä»·ï¼åï¼") |
| | | private Long totalAmount; |
| | | |
| | | @ExcelColumn(name = "å®ä»éé¢ï¼å
ï¼") |
| | | @ApiModelProperty(value = "å®ä»éé¢ï¼åï¼") |
| | | private Long payAmount; |
| | | |
| | | @ExcelColumn(name = "鿬¾éé¢ï¼å
ï¼") |
| | | @ApiModelProperty(value = "鿬¾éé¢ï¼åï¼") |
| | | private Long refundAmount; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ExcelColumn(name = "å建æ¶é´", width = 16, dateFormat = "yyyy-MM-dd HH:mm:ss") |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | private Date createTime; |
| | | |
| | | @ExcelColumn(name = "鿬¾ç¶æ", valueMapping = "0=鿬¾ä¸;1=鿬¾æå;2=鿬¾å¤±è´¥;") |
| | | @ApiModelProperty(value = "鿬¾ç¶æï¼0=鿬¾ä¸ï¼1=鿬¾æåï¼2=鿬¾å¤±è´¥") |
| | | private Integer refundStatus; |
| | | } |
| | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * å¹³å°ä¿¡æ¯ï¼å
³äºæä»¬ãåè®®çï¼ |
| | | * |
| | |
| | | @ApiModelProperty(value = "å
³äºæä»¬") |
| | | private String aboutUs; |
| | | |
| | | @ApiModelProperty(value = "å议须ç¥å表ï¼key=æä¸¾ç¼ç ï¼value=坿æ¬å
容") |
| | | private Map<String, String> agreements; |
| | | @ApiModelProperty(value = "é¨åºé£é©æ¿è¯ºä¹¦") |
| | | private String storeRiskCommitment; |
| | | |
| | | @ApiModelProperty(value = "é¨åºåä½åè®®") |
| | | private String storeCooperationAgreement; |
| | | |
| | | @ApiModelProperty(value = "é¨åºè¡æå¯åé¡»ç¥") |
| | | private String storeLuggageStorageNotice; |
| | | |
| | | @ApiModelProperty(value = "é¨åºéç§æ¿ç") |
| | | private String storePrivacyPolicy; |
| | | |
| | | @ApiModelProperty(value = "å¯åäººè¡æå¯åé¡»ç¥") |
| | | private String ownerLuggageStorageNotice; |
| | | |
| | | @ApiModelProperty(value = "å¯å人æå¡åè®®") |
| | | private String ownerServiceAgreement; |
| | | |
| | | @ApiModelProperty(value = "å¯å人é£é©æ¿è¯ºä¹¦") |
| | | private String ownerRiskCommitment; |
| | | |
| | | @ApiModelProperty(value = "è·è
¿é£é©æ¿è¯ºä¹¦") |
| | | private String errandRiskCommitment; |
| | | |
| | | @ApiModelProperty(value = "è·è
¿æå¡åè®®") |
| | | private String errandServiceAgreement; |
| | | |
| | | @ApiModelProperty(value = "è·è
¿è¡æå¯åé¡»ç¥") |
| | | private String errandLuggageStorageNotice; |
| | | |
| | | @ApiModelProperty(value = "ç¨æ·æå¡åè®®") |
| | | private String userServiceAgreement; |
| | | |
| | | @ApiModelProperty(value = "ç¨æ·éç§æ¿ç") |
| | | private String userPrivacyPolicy; |
| | | |
| | | @ApiModelProperty(value = "叿ºéç§æ¿ç") |
| | | private String driverPrivacyPolicy; |
| | | |
| | | @ApiModelProperty(value = "ä»·æ ¼è¯´æ") |
| | | private String priceDescription; |
| | | |
| | | @ApiModelProperty(value = "ç¦å¯ç©å") |
| | | private String prohibitedItems; |
| | | } |
| | |
| | | */ |
| | | Areas getOpenedCityByName(String cityName); |
| | | |
| | | /** |
| | | * ä¿®æ¹ç¶æ |
| | | * |
| | | * @param areas å®ä½å¯¹è±¡ï¼id + statusï¼ |
| | | */ |
| | | void updateStatus(Areas areas); |
| | | |
| | | } |
| | |
| | | * @param newPassword æ°å¯ç |
| | | * @param token å½åtokenï¼ä¿®æ¹æå忏
é¤ï¼ |
| | | */ |
| | | void changePassword(Integer driverId, String newPassword, String token); |
| | | void changePassword(Integer driverId, String oldPassword, String newPassword, String token); |
| | | |
| | | /** |
| | | * è·å叿ºè¿è¡ä¸è®¢åæ°é |
| | |
| | | */ |
| | | com.doumee.dao.vo.DriverCancelLimitVO getTodayCancelLimit(Integer driverId); |
| | | |
| | | /** |
| | | * æ ¡éªå¸æºtokenæ¯å¦ææ |
| | | * |
| | | * @param token 叿ºtoken |
| | | * @return true=ææ false=æ æ |
| | | */ |
| | | boolean checkDriverToken(String token); |
| | | |
| | | } |
| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.OrdersRefund; |
| | | import com.doumee.dao.dto.OrdersRefundPageDTO; |
| | | import com.doumee.dao.vo.OrdersRefundPageVO; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | * @return long |
| | | */ |
| | | long count(OrdersRefund ordersRefund); |
| | | |
| | | /** |
| | | * 鿬¾è®°å½å页æ¥è¯¢ï¼å
³è订åä¿¡æ¯ï¼ |
| | | * |
| | | * @param pageWrap å页对象 |
| | | * @return PageData<OrdersRefundPageVO> |
| | | */ |
| | | PageData<OrdersRefundPageVO> refundPage(PageWrap<OrdersRefundPageDTO> pageWrap); |
| | | |
| | | /** |
| | | * 鿰鿬¾ï¼é款失败æ¶å次åèµ·ï¼ |
| | | * |
| | | * @param id 鿬¾è®°å½ä¸»é® |
| | | */ |
| | | void retryRefund(Integer id); |
| | | } |
| | |
| | | * é¨åºä¿®æ¹å¯ç |
| | | * |
| | | * @param shopId é¨åºä¸»é® |
| | | * @param oldPassword æ§å¯ç |
| | | * @param newPassword æ°å¯ç |
| | | * @param token å½åtokenï¼ä¿®æ¹æå忏
é¤ï¼ |
| | | */ |
| | | void changePassword(Integer shopId, String newPassword, String token); |
| | | void changePassword(Integer shopId, String oldPassword, String newPassword, String token); |
| | | |
| | | } |
| | |
| | | return areasMapper.selectOne(qw); |
| | | } |
| | | |
| | | @Override |
| | | public void updateStatus(Areas areas) { |
| | | if (areas == null || areas.getId() == null) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Areas update = new Areas(); |
| | | update.setId(areas.getId()); |
| | | update.setStatus(areas.getStatus()); |
| | | areasMapper.updateById(update); |
| | | } |
| | | |
| | | } |
| | |
| | | if (pageWrap.getModel().getType() != null) { |
| | | queryWrapper.lambda().eq(Banner::getType, pageWrap.getModel().getType()); |
| | | } |
| | | for (PageWrap.SortData sortData : pageWrap.getSorts()) { |
| | | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { |
| | | queryWrapper.orderByDesc(sortData.getProperty()); |
| | | } else { |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | } |
| | | } |
| | | // é»è®¤æåºï¼æåºç ååºã主é®é¡ºåº |
| | | queryWrapper.lambda().orderByDesc(Banner::getSortnum).orderByAsc(Banner::getId); |
| | | PageData<Banner> result = PageData.from(bannerMapper.selectPage(page, queryWrapper)); |
| | |
| | | } |
| | | if (requireId && Objects.isNull(banner.getId())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | if (StringUtils.isBlank(banner.getTitle())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ é¢ä¸è½ä¸ºç©º"); |
| | | } |
| | | if (StringUtils.isBlank(banner.getImgurl())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å¾çä¸è½ä¸ºç©º"); |
| | |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryList)){ |
| | | String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() |
| | | +systemDictDataBiz.queryByCode(Constants.OSS,Constants.CATEGORY_FILES).getCode(); |
| | | // æ¶éé空ç relationId æ¹éæ¥è¯¢ |
| | | java.util.Set<Integer> relationIds = new java.util.HashSet<>(); |
| | | for (Category category : categoryList) { |
| | | if (category.getRelationId() != null) { |
| | | relationIds.add(category.getRelationId()); |
| | | } |
| | | } |
| | | java.util.Map<Integer, String> relationNameMap = new java.util.HashMap<>(); |
| | | if (!relationIds.isEmpty()) { |
| | | categoryMapper.selectList(new QueryWrapper<Category>().lambda() |
| | | .in(Category::getId, relationIds) |
| | | .eq(Category::getDeleted, Constants.ZERO)) |
| | | .forEach(c -> relationNameMap.put(c.getId(), c.getName())); |
| | | } |
| | | for (Category category:categoryList) { |
| | | if(StringUtils.isNotBlank(category.getIcon())){ |
| | | category.setIconFull(path + category.getIcon()); |
| | | } |
| | | if (category.getRelationId() != null) { |
| | | category.setRelationName(relationNameMap.get(category.getRelationId())); |
| | | } |
| | | } |
| | | } |
| | |
| | | .orderByAsc(Category::getSortnum)); |
| | | // 3. æ¼æ¥å¾æ å
¨è·¯å¾ |
| | | if (!CollectionUtils.isEmpty(sizeList)) { |
| | | String path = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.RESOURCE_PATH).getCode() |
| | | String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() |
| | | + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_FILES).getCode(); |
| | | for (Category cate : sizeList) { |
| | | if (StringUtils.isNotBlank(cate.getIcon())) { |
| | |
| | | } |
| | | // ç¶ææ ¡éªï¼auditStatus=null(æªæäº¤)æauditStatus=2(审æ¹é©³å)å¯æäº¤è®¤è¯ |
| | | if (driverInfo.getAuditStatus() != null |
| | | && !Constants.equalsInteger(driverInfo.getAuditStatus(), Constants.TWO)) { |
| | | && !(Constants.equalsInteger(driverInfo.getAuditStatus(), Constants.TWO)||Constants.equalsInteger(driverInfo.getAuditStatus(), 99))) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "å½åç¶æä¸å
许æäº¤è®¤è¯"); |
| | | } |
| | | // æ ¹æ®è½¦è¾ç±»å夿æ¯å¦éè¦é©¾é©¶è¯ |
| | |
| | | // 审æ¹ç»æï¼auditDTO.auditStatus 0=éè¿âauditStatus=1ï¼1=æç»âauditStatus=2 |
| | | Integer newAuditStatus; |
| | | if (Constants.equalsInteger(auditDTO.getAuditStatus(), Constants.ZERO)) { |
| | | newAuditStatus = Constants.ONE; // 审æ¹éè¿ |
| | | newAuditStatus = Constants.THREE; // 审æ¹éè¿ |
| | | // 审æ¹éè¿æ¶å¸æºå®çº§ä¸ºå¿
å¡« |
| | | if (auditDTO.getDriverLevel() == null || auditDTO.getDriverLevel() < 1 || auditDTO.getDriverLevel() > 5) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "审æ¹éè¿æ¶å¿
须填å叿ºå®çº§"); |
| | |
| | | wrapper.selectAll(Orders.class) |
| | | .select("s1.name", Orders::getDepositShopName) |
| | | .select("s1.address", Orders::getDepositShopAddress) |
| | | .select("s1.telephone", Orders::getDepositShopLinkPhone) |
| | | .select("s2.name", Orders::getTakeShopName) |
| | | .select("s2.address", Orders::getTakeShopAddress) |
| | | .select("s2.link_phone as takeShopLinkPhone") |
| | | .select("s2.telephone", Orders::getTakeShopLinkPhone) |
| | | .select("c2.other_field as c2OtherField") |
| | | .select("c1.name as goodTypeName") |
| | | .select("IF(EXISTS(SELECT 1 FROM orders_detail od JOIN category c3 ON c3.id = od.LUGGAGE_ID AND c3.TYPE = 4 AND c3.OTHER_FIELD = '1' WHERE od.ORDER_ID = t.ID AND od.DELETED = 0), 1, 0) as hasOversized") |
| | | .leftJoin("shop_info s1 on s1.id = t.DEPOSIT_SHOP_ID and s1.DELETED = 0") |
| | | .leftJoin("shop_info s2 on s2.id = t.TAKE_SHOP_ID and s2.DELETED = 0") |
| | |
| | | vo.setTakeShopId(base.getTakeShopId()); |
| | | |
| | | vo.setTakeDistance(base.getTakeDistance()); |
| | | vo.setContactPhone(base.getContactPhone()); |
| | | |
| | | // èç³»çµè¯ï¼æè®¢åç¶æè¿å |
| | | vo.setDepositShopPhone(order.getDepositShopLinkPhone()); |
| | | if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getStatus()) |
| | | || Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.arrived.getStatus())) { |
| | | if (order.getTakeShopId() != null && StringUtils.isNotBlank(order.getTakeShopLinkPhone())) { |
| | | vo.setTakeContactPhone(order.getTakeShopLinkPhone()); |
| | | } else { |
| | | vo.setTakeContactPhone(order.getTakePhone()); |
| | | } |
| | | } |
| | | vo.setDriverFee(base.getDriverFee()); |
| | | vo.setUrgentAmount(base.getUrgentAmount()); |
| | | vo.setPlatformRewardAmount(order.getPlatformRewardAmount()); |
| | | vo.setIsValuable(base.getIsValuable()); |
| | | vo.setGoodLevelName(base.getGoodLevelName()); |
| | | vo.setGoodTypeName(order.getGoodTypeName()); |
| | | vo.setHasOversized(base.getHasOversized()); |
| | | vo.setDriverVerifyCode(base.getDriverVerifyCode()); |
| | | |
| | |
| | | // 详æ
ç¹æåæ®µ |
| | | vo.setStatus(order.getStatus()); |
| | | vo.setStatusDesc(getStatusDesc(order.getStatus())); |
| | | vo.setCreateTime(order.getCreateTime()); |
| | | vo.setAcceptTime(order.getAcceptTime()); |
| | | vo.setDriverTakeTime(order.getDriverTakeTime()); |
| | | vo.setFinishTime(order.getFinishTime()); |
| | | vo.setRemark(order.getRemark()); |
| | | |
| | | // 客æ·ä¿¡æ¯ |
| | | String customerInfo = ""; |
| | |
| | | vo.setCustomerInfo(customerInfo); |
| | | |
| | | // 导èªç»çº¬åº¦ï¼ä½¿ç¨Ordersèªå¸¦åæ ï¼ |
| | | if (Constants.equalsInteger(order.getStatus(), Constants.TWO)) { |
| | | if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.accepted.getStatus())) { |
| | | if (order.getDepositLgt() != null && order.getDepositLat() != null) { |
| | | vo.setNavigateLat(order.getDepositLgt().doubleValue()); |
| | | vo.setNavigateLng(order.getDepositLat().doubleValue()); |
| | | } |
| | | } else { |
| | | } else if(Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getStatus())){ |
| | | if (order.getTakeLgt() != null && order.getTakeLat() != null) { |
| | | vo.setNavigateLat(order.getTakeLgt().doubleValue()); |
| | | vo.setNavigateLng(order.getTakeLat().doubleValue()); |
| | | } |
| | | } |
| | | |
| | | // å¼å°å¯å宿¶ç»çº¬åº¦ï¼æç¶æè¿åï¼ |
| | | if (Constants.ONE.equals(order.getType())) { |
| | | // 叿ºèªèº«ç»çº¬åº¦ |
| | | vo.setDriverLng(driverLng); |
| | | vo.setDriverLat(driverLat); |
| | | |
| | | // status=3(å·²æ¥å)ï¼è¿ååä»¶é¨åºç»çº¬åº¦ |
| | | if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.accepted.getStatus())) { |
| | | if (order.getDepositShopId() != null) { |
| | | ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId()); |
| | | if (depositShop != null) { |
| | | vo.setDepositShopLng(depositShop.getLongitude()); |
| | | vo.setDepositShopLat(depositShop.getLatitude()); |
| | | } |
| | | } |
| | | } |
| | | // status=4(é
éä¸)ï¼è¿ååä»¶ç¹ç»çº¬åº¦ |
| | | if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getStatus())) { |
| | | if (order.getTakeShopId() != null) { |
| | | ShopInfo takeShop = shopInfoMapper.selectById(order.getTakeShopId()); |
| | | if (takeShop != null) { |
| | | vo.setTakeLng(takeShop.getLongitude()); |
| | | vo.setTakeLat(takeShop.getLatitude()); |
| | | } |
| | | } else if (order.getTakeLgt() != null && order.getTakeLat() != null) { |
| | | vo.setTakeLng(order.getTakeLgt().doubleValue()); |
| | | vo.setTakeLat(order.getTakeLat().doubleValue()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | vo.setDepositShopLng(order.getDepositLgt().doubleValue()); |
| | | vo.setDepositShopLat(order.getDepositLat().doubleValue()); |
| | | vo.setTakeLng(order.getTakeLgt().doubleValue()); |
| | | vo.setTakeLat(order.getTakeLat().doubleValue()); |
| | | vo.setDriverLng(driverLng); |
| | | vo.setDriverLat(driverLat); |
| | | // ä¸åéä»¶å¾ç |
| | | String imgPrefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() |
| | | + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILES).getCode(); |
| | | + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ORDERS_FILES).getCode(); |
| | | vo.setOrderImages(getFileUrls(orderId, Constants.FileType.ORDER_FILE.getKey(), imgPrefix)); |
| | | |
| | | // è¯ä»·ä¿¡æ¯ |
| | |
| | | if (!Constants.ONE.equals(order.getType())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ä»
å¼å°å¯å订åå¯åæ¶"); |
| | | } |
| | | if (!Constants.TWO.equals(order.getStatus())) { |
| | | if (!Constants.equalsInteger(Constants.OrderStatus.accepted.getStatus(), order.getStatus())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å½å订åç¶æä¸å
è®¸åæ¶"); |
| | | } |
| | | if (!driverId.equals(order.getAcceptDriver())) { |
| | |
| | | .set(Orders::getAcceptDriver, null) |
| | | .set(Orders::getAcceptTime, null) |
| | | .set(Orders::getAcceptType, null) |
| | | .set(Orders::getStatus, Constants.OrderStatus.deposited.getStatus()) |
| | | .eq(Orders::getId, orderId)); |
| | | |
| | | // 5. åå
¥åæ¶æ¥å¿ |
| | |
| | | // éç¥åä»¶é¨åºï¼è®¢åå·²æ¢åå¾
åä»¶ |
| | | if (order.getDepositShopId() != null) { |
| | | sendShopNotice(order.getDepositShopId(), Constants.ShopOrderNotify.WAIT_PICKUP, orderId, |
| | | "orderNo", order.getCode()); |
| | | "orderNo", order.getCode(), |
| | | "name", driver.getName()); |
| | | } |
| | | |
| | | // éç¥å¸æºï¼æ¢åæå |
| | |
| | | // 4. æ´æ°è®¢åç¶æä¸ºæ´¾éä¸(4) |
| | | ordersMapper.update(new UpdateWrapper<Orders>().lambda() |
| | | .set(Orders::getStatus, Constants.OrderStatus.delivering.getStatus()) |
| | | .set(Orders::getTakeTime, now) |
| | | .set(Orders::getUpdateTime, now) |
| | | .eq(Orders::getId, orderId)); |
| | | |
| | |
| | | vo.setIsUrgent(order.getIsUrgent()); |
| | | vo.setDriverFee(order.getDriverFee()); |
| | | vo.setUrgentAmount(order.getUrgentAmount()); |
| | | vo.setPlatformRewardAmount(order.getPlatformRewardAmount()); |
| | | |
| | | // åä»¶é¨åºï¼ä½¿ç¨Ordersèªå¸¦åæ ï¼ |
| | | vo.setDepositShopName(order.getDepositShopName()); |
| | | vo.setDepositShopAddress(order.getDepositShopAddress()); |
| | | vo.setDepositLng(order.getDepositLgt() != null ? order.getDepositLgt().doubleValue() : null); |
| | | vo.setDepositLat(order.getDepositLat() != null ? order.getDepositLat().doubleValue() : null); |
| | | if (needDepositDist && driverLat != null && driverLng != null |
| | | && order.getDepositLgt() != null && order.getDepositLat() != null) { |
| | | double distKm = haversine(driverLat, driverLng, |
| | | order.getDepositLgt().doubleValue(), order.getDepositLat().doubleValue()); |
| | | double distKm = haversine(driverLat, driverLng, order.getDepositLat().doubleValue(), |
| | | order.getDepositLgt().doubleValue()); |
| | | vo.setDepositDistance(formatDistance(distKm)); |
| | | } |
| | | |
| | |
| | | vo.setTakeAddress(order.getTakeLocationRemark()); |
| | | vo.setContactPhone(order.getTakePhone()); |
| | | } |
| | | vo.setTakeLng(order.getTakeLgt() != null ? order.getTakeLgt().doubleValue() : null); |
| | | vo.setTakeLat(order.getTakeLat() != null ? order.getTakeLat().doubleValue() : null); |
| | | if (driverLat != null && driverLng != null |
| | | && order.getTakeLgt() != null && order.getTakeLat() != null) { |
| | | double takeDist = haversine(driverLat, driverLng, |
| | | order.getTakeLgt().doubleValue(), order.getTakeLat().doubleValue()); |
| | | double takeDist = haversine(driverLat, driverLng, order.getTakeLat().doubleValue(), |
| | | order.getTakeLgt().doubleValue()); |
| | | vo.setTakeDistance(formatDistance(takeDist)); |
| | | } |
| | | |
| | |
| | | if (Constants.equalsInteger(order.getStatus(), Constants.THREE)||Constants.equalsInteger(order.getStatus(), Constants.FOUR)) { |
| | | vo.setDriverVerifyCode(order.getDriverVerifyCode()); |
| | | } |
| | | |
| | | // 订åç¶æ |
| | | vo.setStatus(order.getStatus()); |
| | | vo.setStatusDesc(getStatusDesc(order.getStatus())); |
| | | vo.setCreateTime(order.getCreateTime()); |
| | | |
| | | // ç©åæç» |
| | | List<OrdersDetail> details = detailMap.getOrDefault(order.getId(), Collections.emptyList()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void changePassword(Integer driverId, String newPassword, String token) { |
| | | if (StringUtils.isBlank(newPassword)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å¯ç ä¸è½ä¸ºç©º"); |
| | | public void changePassword(Integer driverId, String oldPassword, String newPassword, String token) { |
| | | if (StringUtils.isBlank(oldPassword)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ§å¯ç ä¸è½ä¸ºç©º"); |
| | | } |
| | | // æ ¡éªå¯ç å¿
须忶å
å«åæ¯åæ°å |
| | | if (StringUtils.isBlank(newPassword)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ°å¯ç ä¸è½ä¸ºç©º"); |
| | | } |
| | | // æ ¡éªæ°å¯ç å¿
须忶å
å«åæ¯åæ°å |
| | | boolean hasLetter = newPassword.chars().anyMatch(Character::isLetter); |
| | | boolean hasDigit = newPassword.chars().anyMatch(Character::isDigit); |
| | | if (!hasLetter || !hasDigit) { |
| | |
| | | Member member = memberMapper.selectById(driverInfo.getMemberId()); |
| | | if (member == null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | // æ ¡éªæ§å¯ç |
| | | String oldEncryptPwd = secure.encryptPassword(oldPassword, member.getSalt()); |
| | | if (!oldEncryptPwd.equals(member.getPassword())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ§å¯ç é误"); |
| | | } |
| | | // å 坿°å¯ç å¹¶æ´æ° |
| | | String salt = RandomStringUtils.randomAlphanumeric(6); |
| | |
| | | List<Integer> validStatuses = Arrays.asList( |
| | | Constants.OrderStatus.accepted.getStatus(), |
| | | Constants.OrderStatus.delivering.getStatus(), |
| | | Constants.OrderStatus.arrived.getStatus(), |
| | | Constants.OrderStatus.finished.getStatus()); |
| | | if (status != null && !validStatuses.contains(status)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ç¶æåªè½ä¸º3(å¾
åä»¶)ã4(é
éä¸)ã7(已宿)"); |
| | |
| | | return vo; |
| | | } |
| | | |
| | | @Override |
| | | public boolean checkDriverToken(String token) { |
| | | if (StringUtils.isBlank(token) || !token.startsWith(Constants.ONE + "")) { |
| | | return false; |
| | | } |
| | | String tokenRedis = (String) redisTemplate.opsForValue().get(Constants.REDIS_TOKEN_KEY + token); |
| | | if (StringUtils.isBlank(tokenRedis)) { |
| | | return false; |
| | | } |
| | | try { |
| | | int lastIndex = token.lastIndexOf("_") + 1; |
| | | Integer memberId = Integer.valueOf(token.substring(lastIndex)); |
| | | Member member = memberMapper.selectById(memberId); |
| | | return member != null |
| | | && !Constants.ONE.equals(member.getDeleted()) |
| | | && !Constants.ONE.equals(member.getStatus()) |
| | | && Constants.ONE.equals(member.getUserType()); |
| | | } catch (Exception e) { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.LinkedHashMap; |
| | |
| | | public PlatformAboutVO getPlatformAboutUs(){ |
| | | PlatformAboutVO vo = new PlatformAboutVO(); |
| | | vo.setAboutUs(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ABOUT_US).getCode())); |
| | | |
| | | Map<String, String> agreements = new LinkedHashMap<>(); |
| | | String[] agreementKeys = { |
| | | Constants.STORE_RISK_COMMITMENT, |
| | | Constants.STORE_COOPERATION_AGREEMENT, |
| | | Constants.STORE_LUGGAGE_STORAGE_NOTICE, |
| | | Constants.STORE_PRIVACY_POLICY, |
| | | Constants.OWNER_LUGGAGE_STORAGE_NOTICE, |
| | | Constants.OWNER_SERVICE_AGREEMENT, |
| | | Constants.OWNER_RISK_COMMITMENT, |
| | | Constants.ERRAND_RISK_COMMITMENT, |
| | | Constants.ERRAND_SERVICE_AGREEMENT, |
| | | Constants.ERRAND_LUGGAGE_STORAGE_NOTICE, |
| | | Constants.USER_SERVICE_AGREEMENT, |
| | | Constants.USER_PRIVACY_POLICY, |
| | | Constants.DRIVER_PRIVACY_POLICY, |
| | | Constants.PRICE_DESCRIPTION, |
| | | Constants.PROHIBITED_ITEMS |
| | | }; |
| | | for (String key : agreementKeys) { |
| | | try { |
| | | String value = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM, key).getCode()); |
| | | agreements.put(key, value); |
| | | } catch (Exception e) { |
| | | agreements.put(key, null); |
| | | } |
| | | } |
| | | vo.setAgreements(agreements); |
| | | vo.setStoreRiskCommitment(getDictValue(Constants.STORE_RISK_COMMITMENT)); |
| | | vo.setStoreCooperationAgreement(getDictValue(Constants.STORE_COOPERATION_AGREEMENT)); |
| | | vo.setStoreLuggageStorageNotice(getDictValue(Constants.STORE_LUGGAGE_STORAGE_NOTICE)); |
| | | vo.setStorePrivacyPolicy(getDictValue(Constants.STORE_PRIVACY_POLICY)); |
| | | vo.setOwnerLuggageStorageNotice(getDictValue(Constants.OWNER_LUGGAGE_STORAGE_NOTICE)); |
| | | vo.setOwnerServiceAgreement(getDictValue(Constants.OWNER_SERVICE_AGREEMENT)); |
| | | vo.setOwnerRiskCommitment(getDictValue(Constants.OWNER_RISK_COMMITMENT)); |
| | | vo.setErrandRiskCommitment(getDictValue(Constants.ERRAND_RISK_COMMITMENT)); |
| | | vo.setErrandServiceAgreement(getDictValue(Constants.ERRAND_SERVICE_AGREEMENT)); |
| | | vo.setErrandLuggageStorageNotice(getDictValue(Constants.ERRAND_LUGGAGE_STORAGE_NOTICE)); |
| | | vo.setUserServiceAgreement(getDictValue(Constants.USER_SERVICE_AGREEMENT)); |
| | | vo.setUserPrivacyPolicy(getDictValue(Constants.USER_PRIVACY_POLICY)); |
| | | vo.setDriverPrivacyPolicy(getDictValue(Constants.DRIVER_PRIVACY_POLICY)); |
| | | vo.setPriceDescription(getDictValue(Constants.PRICE_DESCRIPTION)); |
| | | vo.setProhibitedItems(getDictValue(Constants.PROHIBITED_ITEMS)); |
| | | return vo; |
| | | } |
| | | |
| | | private String getDictValue(String key) { |
| | | try { |
| | | return StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM, key).getCode()); |
| | | } catch (Exception e) { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void logOut(String token,Integer userId,Integer userType){ |
| | | if(Constants.equalsInteger(userType,Constants.ZERO)){ |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.doumee.config.wx.WxPayProperties; |
| | | import com.doumee.config.wx.WxPayV3Service; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.OrdersMapper; |
| | | import com.doumee.dao.business.OrdersRefundMapper; |
| | | import com.doumee.dao.business.model.Orders; |
| | | import com.doumee.dao.business.model.OrdersRefund; |
| | | import com.doumee.dao.dto.OrdersRefundPageDTO; |
| | | import com.doumee.dao.vo.OrdersRefundPageVO; |
| | | import com.doumee.service.business.OrdersRefundService; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | * @author rk |
| | | * @date 2026/04/13 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class OrdersRefundServiceImpl implements OrdersRefundService { |
| | | |
| | | @Autowired |
| | | private OrdersRefundMapper ordersRefundMapper; |
| | | |
| | | @Autowired |
| | | private OrdersMapper ordersMapper; |
| | | |
| | | @Autowired |
| | | private WxPayV3Service wxPayV3Service; |
| | | |
| | | @Autowired |
| | | private WxPayProperties wxPayProperties; |
| | | |
| | | @Override |
| | | public Integer create(OrdersRefund ordersRefund) { |
| | |
| | | QueryWrapper<OrdersRefund> wrapper = new QueryWrapper<>(ordersRefund); |
| | | return ordersRefundMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | @Override |
| | | public PageData<OrdersRefundPageVO> refundPage(PageWrap<OrdersRefundPageDTO> pageWrap) { |
| | | OrdersRefundPageDTO model = pageWrap.getModel(); |
| | | IPage<OrdersRefund> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | |
| | | MPJLambdaWrapper<OrdersRefund> wrapper = new MPJLambdaWrapper<>(); |
| | | wrapper.selectAll(OrdersRefund.class) |
| | | .select("o.code as orderCode") |
| | | .select("o.goods_info as goodsInfo") |
| | | .select("o.type as orderType") |
| | | .select("o.good_level as goodLevel") |
| | | .select("o.total_amount as totalAmount") |
| | | .select("o.pay_amount as payAmount") |
| | | .select("c2.name as goodLevelName") |
| | | .leftJoin("orders o on o.id = t.ORDER_ID and o.DELETED = 0") |
| | | .leftJoin("category c1 on c1.id = o.GOOD_TYPE and c1.DELETED = 0") |
| | | .leftJoin("category c2 on c2.id = c1.RELATION_ID and c2.DELETED = 0 and c2.TYPE = 3") |
| | | .eq(OrdersRefund::getDeleted, 0); |
| | | |
| | | if (model != null) { |
| | | if (StringUtils.isNotBlank(model.getOrderCode())) { |
| | | wrapper.like("o.code", model.getOrderCode()); |
| | | } |
| | | if (StringUtils.isNotBlank(model.getGoodsInfo())) { |
| | | wrapper.like("o.goods_info", model.getGoodsInfo()); |
| | | } |
| | | if (model.getOrderType() != null) { |
| | | wrapper.eq("o.type", model.getOrderType()); |
| | | } |
| | | if (model.getRefundStatus() != null) { |
| | | wrapper.eq(OrdersRefund::getStatus, model.getRefundStatus()); |
| | | } |
| | | if (model.getCreateStartTime() != null) { |
| | | wrapper.ge(OrdersRefund::getCreateTime, model.getCreateStartTime()); |
| | | } |
| | | if (model.getCreateEndTime() != null) { |
| | | wrapper.le(OrdersRefund::getCreateTime, model.getCreateEndTime()); |
| | | } |
| | | } |
| | | |
| | | wrapper.orderByDesc(OrdersRefund::getCreateTime); |
| | | |
| | | IPage<OrdersRefund> refundPage = ordersRefundMapper.selectJoinPage(page, OrdersRefund.class, wrapper); |
| | | |
| | | // 转æ¢ä¸º VO |
| | | List<OrdersRefundPageVO> voList = new ArrayList<>(); |
| | | if (refundPage != null && refundPage.getRecords() != null) { |
| | | for (OrdersRefund r : refundPage.getRecords()) { |
| | | OrdersRefundPageVO vo = new OrdersRefundPageVO(); |
| | | vo.setId(r.getId()); |
| | | vo.setOrderId(r.getOrderId()); |
| | | vo.setOrderCode(r.getOrderCode()); |
| | | vo.setGoodsInfo(r.getGoodsInfo()); |
| | | vo.setOrderType(r.getOrderType()); |
| | | vo.setGoodLevelName(r.getGoodLevelName()); |
| | | vo.setTotalAmount(r.getTotalAmount()); |
| | | vo.setPayAmount(r.getPayAmount()); |
| | | vo.setRefundAmount(r.getRefundAmount()); |
| | | vo.setCreateTime(r.getCreateTime()); |
| | | vo.setRefundStatus(r.getStatus()); |
| | | voList.add(vo); |
| | | } |
| | | } |
| | | |
| | | PageData<OrdersRefundPageVO> result = new PageData<>( |
| | | refundPage != null ? refundPage.getCurrent() : pageWrap.getPage(), |
| | | refundPage != null ? refundPage.getSize() : pageWrap.getCapacity()); |
| | | result.setRecords(voList); |
| | | if (refundPage != null) { |
| | | result.setTotal(refundPage.getTotal()); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void retryRefund(Integer id) { |
| | | // 1. æ¥è¯¢éæ¬¾è®°å½ |
| | | OrdersRefund refundRecord = ordersRefundMapper.selectById(id); |
| | | if (refundRecord == null || Constants.ONE.equals(refundRecord.getDeleted())) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鿬¾è®°å½ä¸åå¨"); |
| | | } |
| | | if (!Constants.TWO.equals(refundRecord.getStatus())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ä»
鿬¾å¤±è´¥çè®°å½å¯éæ°é款"); |
| | | } |
| | | |
| | | // 2. æ¥è¯¢å
³è订å |
| | | Orders order = ordersMapper.selectById(refundRecord.getOrderId()); |
| | | if (order == null || Constants.ONE.equals(order.getDeleted())) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "å
³è订åä¸åå¨"); |
| | | } |
| | | if (StringUtils.isBlank(order.getOutTradeNo())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "订å缺å°å¾®ä¿¡æ¯ä»åå·"); |
| | | } |
| | | |
| | | // 3. åèµ·å¾®ä¿¡éæ¬¾ |
| | | String outRefundNo = com.doumee.core.utils.ID.nextGUID(); |
| | | com.wechat.pay.java.service.refund.model.Refund refundResult; |
| | | try { |
| | | refundResult = wxPayV3Service.refund( |
| | | outRefundNo, |
| | | order.getOutTradeNo(), |
| | | order.getPayAmount(), |
| | | refundRecord.getRefundAmount(), |
| | | "鿰鿬¾", |
| | | wxPayProperties.getV3RefundNotifyUrl()); |
| | | } catch (Exception e) { |
| | | log.error("鿰鿬¾è°ç¨å¼å¸¸, refundRecordId={}", id, e); |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鿬¾å¤±è´¥ï¼è¯·ç¨åéè¯"); |
| | | } |
| | | |
| | | // 4. æ´æ°éæ¬¾è®°å½ |
| | | Date now = new Date(); |
| | | com.wechat.pay.java.service.refund.model.Status wxStatus = refundResult.getStatus(); |
| | | OrdersRefund update = new OrdersRefund(); |
| | | update.setId(id); |
| | | update.setRefundCode(outRefundNo); |
| | | update.setUpdateTime(now); |
| | | |
| | | if (com.wechat.pay.java.service.refund.model.Status.SUCCESS.equals(wxStatus)) { |
| | | update.setStatus(Constants.ONE); |
| | | update.setRefundTime(now); |
| | | } else if (com.wechat.pay.java.service.refund.model.Status.PROCESSING.equals(wxStatus)) { |
| | | update.setStatus(Constants.ZERO); |
| | | } else { |
| | | update.setStatus(Constants.TWO); |
| | | update.setRefundRemark("鿰鿬¾ä»ç¶å¤±è´¥"); |
| | | } |
| | | ordersRefundMapper.updateById(update); |
| | | } |
| | | } |
| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.ID; |
| | | import com.doumee.core.utils.geocode.MapUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.core.utils.aliyun.AliSmsService; |
| | |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | } |
| | | } |
| | | return PageData.from(ordersMapper.selectJoinPage(page, Orders.class, queryWrapper)); |
| | | PageData<Orders> pageData = PageData.from(ordersMapper.selectJoinPage(page, Orders.class, queryWrapper)); |
| | | for (Orders o : pageData.getRecords()) { |
| | | if (o.getStatus() != null) { |
| | | Constants.OrderStatus os = Constants.OrderStatus.getByKey(o.getStatus()); |
| | | o.setStatusDesc(os != null ? os.getValue() : ""); |
| | | } |
| | | } |
| | | return pageData; |
| | | } |
| | | |
| | | @Override |
| | |
| | | // æ åä»¶é¨åºï¼æ ¡éªåä»¶ç¹ä¸èªéåä»¶ç¹æ¯å¦å¨åä¸åå¸ |
| | | if (!MapUtil.isSameCity(depositShop.getLatitude(), depositShop.getLongitude(), |
| | | dto.getTakeLat().doubleValue(), dto.getTakeLgt().doubleValue())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å¼å°å¯å订åååç¹ä¸å¨åä¸åå¸ï¼å¦éè¯·éæ©ååé¨åº"); |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ååç¹ä¸å¨åä¸åå¸ï¼"); |
| | | } |
| | | takeLat = dto.getTakeLat(); |
| | | takeLgt = dto.getTakeLgt(); |
| | |
| | | // å¼å°ï¼åä»¶ç¹ä¿¡æ¯ |
| | | orders.setTakeShopId(dto.getTakeShopId()); |
| | | orders.setTakeLocation(takeLocationValue); |
| | | orders.setTakeLocationRemark(takeLocationValue); |
| | | orders.setTakeLat(takeLat); |
| | | orders.setTakeLgt(takeLgt); |
| | | orders.setIsUrgent(dto.getIsUrgent()); |
| | |
| | | // å°±å°ï¼åä»¶ç¹åå¯ä»¶åºéº |
| | | orders.setTakeShopId(dto.getDepositShopId()); |
| | | orders.setTakeLocation(depositShop.getAddress()); |
| | | orders.setTakeLocationRemark(depositShop.getAddress()); |
| | | orders.setTakeLat(BigDecimal.valueOf(depositShop.getLatitude())); |
| | | orders.setTakeLgt(BigDecimal.valueOf(depositShop.getLongitude())); |
| | | orders.setIsUrgent(Constants.ZERO); |
| | |
| | | |
| | | ordersMapper.insert(orders); |
| | | Integer orderId = orders.getId(); |
| | | |
| | | // åå»ºè®¢åæ¥å¿ |
| | | OrderLog createLog = new OrderLog(); |
| | | createLog.setOrderId(orderId); |
| | | createLog.setTitle(Constants.OrderLogType.createOrder.getTitle()); |
| | | createLog.setLogInfo(Constants.OrderLogType.createOrder.format(orderCode)); |
| | | createLog.setObjType(Constants.OrderLogType.createOrder.getStatus()); |
| | | createLog.setOrderStatus(orders.getStatus()); |
| | | createLog.setOptUserId(memberId); |
| | | createLog.setOptUserType(0); |
| | | createLog.setCreateTime(now); |
| | | createLog.setDeleted(Constants.ZERO); |
| | | orderLogService.create(createLog); |
| | | |
| | | // ========== 7. å建订åæç» ========== |
| | | for (ItemPriceVO itemVO : priceResult.getItemList()) { |
| | |
| | | OrderDetailVO vo = new OrderDetailVO(); |
| | | vo.setOrder(order); |
| | | |
| | | // 订åç¶ææè¿° |
| | | if (order.getStatus() != null) { |
| | | Constants.OrderStatus os = Constants.OrderStatus.getByKey(order.getStatus()); |
| | | vo.setStatusDesc(os != null ? os.getValue() : ""); |
| | | } |
| | | |
| | | // å¾çè·¯å¾åç¼ |
| | | String imgPrefix = getOrdersPrefix(); |
| | | |
| | |
| | | |
| | | String optUserName = getCurrentUserName(); |
| | | |
| | | // å æ¥è´¹æ¥å¿ |
| | | OrderLog feeLog = new OrderLog(); |
| | | feeLog.setOrderId(order.getId()); |
| | | feeLog.setTitle(Constants.OrderLogType.urgent.getTitle()); |
| | | feeLog.setLogInfo(Constants.OrderLogType.urgent.format(dto.getUrgentFee().toPlainString())); |
| | | feeLog.setObjType(Constants.OrderLogType.urgent.getStatus()); |
| | | feeLog.setOrderStatus(order.getStatus()); |
| | | feeLog.setOptUserType(3); |
| | | feeLog.setOptUserName(optUserName); |
| | | feeLog.setCreateTime(new Date()); |
| | | feeLog.setDeleted(Constants.ZERO); |
| | | orderLogService.create(feeLog); |
| | | |
| | | // å æ¥è´¹ç¨ å
âå |
| | | long urgentFeeFen = dto.getUrgentFee().multiply(new BigDecimal(100)).longValue(); |
| | | |
| | |
| | | updateWrapper.set(Orders::getRemark, dto.getRemark()); |
| | | } |
| | | |
| | | // ææ´¾å¸æºï¼éå¿
å¡«ï¼ |
| | | // æ¥å¿ï¼åªå䏿¡ï¼æå¸æºç¨ assignDriverï¼æ 叿ºç¨ urgent |
| | | if (dto.getDriverId() != null) { |
| | | // æ ¡éªå¸æºä¿¡æ¯ |
| | | DriverInfo driverInfo = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda() |
| | | .eq(DriverInfo::getMemberId, dto.getDriverId()) |
| | | .eq(DriverInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (driverInfo == null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "叿ºä¿¡æ¯ä¸åå¨"); |
| | | } |
| | | if (!Integer.valueOf(3).equals(driverInfo.getAuditStatus())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "叿ºæªæ¯ä»æ¼éï¼æ æ³æ´¾å"); |
| | | } |
| | | if (!Constants.ZERO.equals(driverInfo.getStatus())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "叿ºå·²è¢«ç¦ç¨ï¼æ æ³æ´¾å"); |
| | | } |
| | | |
| | | // æ´æ°æ¥å叿ºä¿¡æ¯å订åç¶æ |
| | | Date now = new Date(); |
| | | updateWrapper.set(Orders::getAssignDriverId, dto.getDriverId()); |
| | | updateWrapper.set(Orders::getAcceptDriver, dto.getDriverId()); |
| | | updateWrapper.set(Orders::getAcceptTime, now); |
| | | updateWrapper.set(Orders::getAcceptType, 1); // 1=ç³»ç»æ´¾å |
| | | updateWrapper.set(Orders::getStatus, Constants.OrderStatus.accepted.getStatus()); |
| | | |
| | | Member driver = memberMapper.selectById(dto.getDriverId()); |
| | | String driverName = driver != null ? driver.getName() : String.valueOf(dto.getDriverId()); |
| | |
| | | driverLog.setTitle(Constants.OrderLogType.assignDriver.getTitle()); |
| | | driverLog.setLogInfo(Constants.OrderLogType.assignDriver.format(driverName, dto.getUrgentFee().toPlainString())); |
| | | driverLog.setObjType(Constants.OrderLogType.assignDriver.getStatus()); |
| | | driverLog.setOrderStatus(order.getStatus()); |
| | | driverLog.setOrderStatus(Constants.OrderStatus.accepted.getStatus()); |
| | | driverLog.setOptUserType(3); |
| | | driverLog.setOptUserName(optUserName); |
| | | driverLog.setCreateTime(new Date()); |
| | | driverLog.setCreateTime(now); |
| | | driverLog.setDeleted(Constants.ZERO); |
| | | orderLogService.create(driverLog); |
| | | |
| | | // çä¿¡éç¥ææ´¾å¸æºï¼å æ¥æ´¾åï¼ |
| | | DriverInfo driverInfo = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda() |
| | | .eq(DriverInfo::getMemberId, dto.getDriverId()) |
| | | .eq(DriverInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1")); |
| | | if (driverInfo != null) { |
| | | String address1 = order.getDepositShopAddress() != null ? order.getDepositShopAddress() : order.getDepositShopName(); |
| | | String address2 = order.getTakeShopAddress() != null ? order.getTakeShopAddress() : |
| | | (order.getTakeLocation() != null ? order.getTakeLocation() : ""); |
| | | // é
éè´¹ = 叿ºé
éè´¹ + å æ¥è´¹ |
| | | long totalDriverFee = (order.getDriverFee() != null ? order.getDriverFee() : 0L) + urgentFeeFen; |
| | | sendSmsNotify(driverInfo.getTelephone(), |
| | | Constants.SmsNotify.DRIVER_URGENT_DISPATCH, |
| | | "orderNo", order.getCode(), |
| | | "address1", address1, |
| | | "address2", address2, |
| | | "money1", String.valueOf(totalDriverFee / 100.0), |
| | | "money2", String.valueOf(urgentFeeFen / 100.0)); |
| | | } |
| | | String address1 = order.getDepositLocationRemark(); |
| | | String address2 = order.getTakeLocationRemark(); |
| | | long totalDriverFee = (order.getDriverFee() != null ? order.getDriverFee() : 0L) + urgentFeeFen; |
| | | sendSmsNotify(driverInfo.getTelephone(), |
| | | Constants.SmsNotify.DRIVER_URGENT_DISPATCH, |
| | | "orderNo", order.getCode(), |
| | | "address1", address1, |
| | | "address2", address2, |
| | | "money1", String.valueOf(totalDriverFee / 100.0), |
| | | "money2", String.valueOf(urgentFeeFen / 100.0)); |
| | | } else { |
| | | // æªææ´¾å¸æºï¼åªè®°å½å æ¥æ¥å¿ |
| | | OrderLog feeLog = new OrderLog(); |
| | | feeLog.setOrderId(order.getId()); |
| | | feeLog.setTitle(Constants.OrderLogType.urgent.getTitle()); |
| | | feeLog.setLogInfo(Constants.OrderLogType.urgent.format(dto.getUrgentFee().toPlainString())); |
| | | feeLog.setObjType(Constants.OrderLogType.urgent.getStatus()); |
| | | feeLog.setOrderStatus(order.getStatus()); |
| | | feeLog.setOptUserType(3); |
| | | feeLog.setOptUserName(optUserName); |
| | | feeLog.setCreateTime(new Date()); |
| | | feeLog.setDeleted(Constants.ZERO); |
| | | orderLogService.create(feeLog); |
| | | } |
| | | |
| | | ordersMapper.update(updateWrapper); |
| | |
| | | Constants.SmsNotify.MEMBER_CANCELLED, "orderNo", order.getCode()); |
| | | |
| | | // è°ç¨å¾®ä¿¡é款V3ï¼å
¨é¢é款 |
| | | String outRefundNo = ID.nextGUID(); |
| | | com.wechat.pay.java.service.refund.model.Refund refundResult; |
| | | try { |
| | | refundResult = wxPayV3Service.refund(order.getOutTradeNo(), order.getPayAmount(), order.getPayAmount(), |
| | | refundResult = wxPayV3Service.refund(outRefundNo, order.getOutTradeNo(), order.getPayAmount(), order.getPayAmount(), |
| | | "订å鿬¾", wxPayProperties.getV3RefundNotifyUrl()); |
| | | } catch (Exception e) { |
| | | log.error("å¾
å¯å订å鿬¾è°ç¨å¼å¸¸, orderId={}", orderId, e); |
| | |
| | | refund.setDeleted(Constants.ZERO); |
| | | refund.setBeforeStatus(Constants.OrderStatus.waitDeposit.getStatus()); |
| | | refund.setRefundAmount(order.getPayAmount()); |
| | | refund.setRefundCode(refundResult.getOutRefundNo()); |
| | | refund.setRefundCode(outRefundNo); |
| | | |
| | | if (com.wechat.pay.java.service.refund.model.Status.SUCCESS.equals(refundStatus)) { |
| | | // 鿬¾æå |
| | |
| | | } |
| | | } |
| | | ordersMapper.updateById(order); |
| | | |
| | | // æ¯ä»æåæ¥å¿ |
| | | OrderLog payLog = new OrderLog(); |
| | | payLog.setOrderId(order.getId()); |
| | | payLog.setTitle(Constants.OrderLogType.payOrder.getTitle()); |
| | | payLog.setLogInfo(Constants.OrderLogType.payOrder.format( |
| | | String.valueOf(order.getTotalAmount() != null ? order.getTotalAmount() / 100.0 : 0))); |
| | | payLog.setObjType(Constants.OrderLogType.payOrder.getStatus()); |
| | | payLog.setOrderStatus(order.getStatus()); |
| | | payLog.setOptUserId(order.getMemberId()); |
| | | payLog.setOptUserType(0); |
| | | payLog.setCreateTime(now); |
| | | payLog.setDeleted(Constants.ZERO); |
| | | orderLogService.create(payLog); |
| | | |
| | | // éç¥ä¼åï¼è®¢åå¾
æ ¸éª |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_VERIFY, order.getId(), |
| | |
| | | "orderNo", order.getCode(), |
| | | "settleDays", settleDays != null ? settleDays : "7"); |
| | | } |
| | | } else { |
| | | }else if(Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getKey())){ |
| | | // ä»
å¼å°å¯å + æåä»¶é¨åº + æ´¾éä¸(4) 坿 ¸é |
| | | if (!Constants.equalsInteger(order.getType(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ä»
å¼å°å¯åè®¢åæ¯æå¸æºæ ¸é"); |
| | | } |
| | | if (order.getTakeShopId() == null) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "è¯¥è®¢åæ åä»¶é¨åºï¼æ é叿ºæ ¸é"); |
| | | } |
| | | if (!Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getStatus())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å½å订åç¶æä¸å
è®¸æ ¸é"); |
| | | } |
| | | // æ ¡éªåä»¶é¨åºä¸å½åç»å½é¨åºä¸è´ |
| | | if (!shopId.equals(order.getTakeShopId())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "该订åä¸å±äºå½åé¨åºï¼æ æ³æ ¸é"); |
| | | } |
| | | // æ´¾éä¸(4) â å·²å°åº(5) |
| | | order.setStatus(Constants.OrderStatus.arrived.getStatus()); |
| | | order.setArriveTime(new Date()); |
| | | if (StringUtils.isNotBlank(remark)) { |
| | | order.setRemark(remark); |
| | | } |
| | | ordersMapper.updateById(order); |
| | | |
| | | // 鿾叿ºæ ¸éç |
| | | releaseVerifyCode(order.getDriverVerifyCode()); |
| | | |
| | | // ä¿åéä»¶ï¼obj_type=3 é¨åºå
¥åºå¾çï¼æå¤3å¼ ï¼ |
| | | saveVerifyImages(order.getId(), images, Constants.FileType.ORDER_TAKE.getKey(), order.getAcceptDriver()); |
| | | |
| | | // éç¥ä¼åï¼è®¢åå·²éè¾¾ |
| | | String destination = order.getTakeShopAddress() != null ? order.getTakeShopAddress() : ""; |
| | | if (order.getMemberVerifyCode() != null) { |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.ARRIVED_HAS_SHOP, order.getId(), |
| | | "orderNo", order.getCode(), |
| | | "destination", destination, |
| | | "pickupCode", order.getMemberVerifyCode()); |
| | | } else { |
| | | sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.ARRIVED_NO_SHOP, order.getId(), |
| | | "orderNo", order.getCode(), |
| | | "destination", destination); |
| | | } |
| | | |
| | | // éç¥åä»¶é¨åºï¼è®¢åå·²éè¾¾ |
| | | if (order.getTakeShopId() != null) { |
| | | sendShopNotice(order.getTakeShopId(), Constants.ShopOrderNotify.ARRIVED, order.getId(), |
| | | "orderNo", order.getCode(), |
| | | "destination", destination); |
| | | } |
| | | |
| | | // çä¿¡éç¥ä¼åï¼è¡æå·²éè¾¾ |
| | | Member arrivedMember = memberMapper.selectById(order.getMemberId()); |
| | | if (arrivedMember != null) { |
| | | sendSmsNotify(arrivedMember.getTelephone(), Constants.SmsNotify.MEMBER_ARRIVED, |
| | | "orderNo", order.getCode(), |
| | | "address", destination, |
| | | "code", order.getMemberVerifyCode() != null ? order.getMemberVerifyCode() : ""); |
| | | } |
| | | }else { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å½å订åç¶æä¸å
è®¸æ ¸é"); |
| | | } |
| | | } |
| | |
| | | ordersRefundMapper.insert(refundRecord); |
| | | |
| | | // è°ç¨å¾®ä¿¡é款V3ï¼æ¾å¨æåï¼ç¡®ä¿åç½®æä½å
¨é¨æåï¼ |
| | | String outRefundNo2 = ID.nextGUID(); |
| | | Refund refundResult = wxPayV3Service.refund( |
| | | order.getOutTradeNo(), order.getPayAmount(), order.getRefundAmount(), |
| | | outRefundNo2, order.getOutTradeNo(), order.getPayAmount(), order.getRefundAmount(), |
| | | "订å鿬¾", wxPayProperties.getV3RefundNotifyUrl()); |
| | | |
| | | // 鿬¾æååå填鿬¾åå·ï¼æ è®°éæ¬¾ä¸ |
| | | refundRecord.setRefundCode(refundResult.getOutRefundNo()); |
| | | refundRecord.setRefundCode(outRefundNo2); |
| | | refundRecord.setStatus(Constants.ZERO); // 鿬¾ä¸ |
| | | ordersRefundMapper.updateById(refundRecord); |
| | | } |
| | |
| | | PricingRule existing = pricingRuleMapper.selectOne(qw); |
| | | |
| | | if (existing != null) { |
| | | // æ´æ° |
| | | existing.setFieldB(item.getUnitPrice()); |
| | | // æ´æ°ï¼å
转åï¼ |
| | | existing.setFieldB(yuanToFen(item.getUnitPrice())); |
| | | existing.setUpdateTime(now); |
| | | pricingRuleMapper.updateById(existing); |
| | | } else { |
| | | // æ°å»º |
| | | // æ°å»ºï¼å
转åï¼ |
| | | PricingRule rule = new PricingRule(); |
| | | rule.setType(Constants.ZERO); |
| | | rule.setFieldA(String.valueOf(item.getCategoryId())); |
| | | rule.setFieldB(item.getUnitPrice()); |
| | | rule.setFieldB(yuanToFen(item.getUnitPrice())); |
| | | rule.setCityId(request.getCityId()); |
| | | rule.setDeleted(Constants.ZERO); |
| | | rule.setCreateTime(now); |
| | |
| | | PricingRule rule = existingMap.get(String.valueOf(category.getId())); |
| | | if (rule != null) { |
| | | vo.setPricingRuleId(rule.getId()); |
| | | vo.setUnitPrice(rule.getFieldB()); |
| | | vo.setUnitPrice(fenToYuan(rule.getFieldB())); |
| | | } |
| | | return vo; |
| | | }).collect(Collectors.toList()); |
| | |
| | | |
| | | if (existing != null) { |
| | | existing.setFieldB(item.getStartDistance()); |
| | | existing.setFieldC(item.getStartPrice()); |
| | | existing.setFieldC(yuanToFen(item.getStartPrice())); |
| | | existing.setFieldD(item.getExtraDistance()); |
| | | existing.setFieldE(item.getExtraPrice()); |
| | | existing.setFieldE(yuanToFen(item.getExtraPrice())); |
| | | existing.setUpdateTime(now); |
| | | pricingRuleMapper.updateById(existing); |
| | | } else { |
| | |
| | | rule.setType(Constants.ONE); |
| | | rule.setFieldA(String.valueOf(item.getCategoryId())); |
| | | rule.setFieldB(item.getStartDistance()); |
| | | rule.setFieldC(item.getStartPrice()); |
| | | rule.setFieldC(yuanToFen(item.getStartPrice())); |
| | | rule.setFieldD(item.getExtraDistance()); |
| | | rule.setFieldE(item.getExtraPrice()); |
| | | rule.setFieldE(yuanToFen(item.getExtraPrice())); |
| | | rule.setCityId(request.getCityId()); |
| | | rule.setDeleted(Constants.ZERO); |
| | | rule.setCreateTime(now); |
| | |
| | | if (rule != null) { |
| | | vo.setPricingRuleId(rule.getId()); |
| | | vo.setStartDistance(rule.getFieldB()); |
| | | vo.setStartPrice(rule.getFieldC()); |
| | | vo.setStartPrice(fenToYuan(rule.getFieldC())); |
| | | vo.setExtraDistance(rule.getFieldD()); |
| | | vo.setExtraPrice(rule.getFieldE()); |
| | | vo.setExtraPrice(fenToYuan(rule.getFieldE())); |
| | | } |
| | | return vo; |
| | | }).collect(Collectors.toList()); |
| | |
| | | PricingRule rule = existingMap.get(String.valueOf(i)); |
| | | if (rule != null) { |
| | | vo.setPricingRuleId(rule.getId()); |
| | | vo.setDepositAmount(rule.getFieldB()); |
| | | vo.setDepositAmount(fenToYuan(rule.getFieldB())); |
| | | } |
| | | result.add(vo); |
| | | } |
| | |
| | | return result; |
| | | } |
| | | |
| | | private String yuanToFen(String yuan) { |
| | | if (yuan == null || yuan.isEmpty()) return "0"; |
| | | return String.valueOf(new BigDecimal(yuan) |
| | | .multiply(new BigDecimal("100")) |
| | | .setScale(0, RoundingMode.HALF_UP) |
| | | .longValue()); |
| | | } |
| | | |
| | | private String fenToYuan(String fen) { |
| | | if (fen == null || fen.isEmpty()) return "0"; |
| | | return new BigDecimal(fen) |
| | | .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP) |
| | | .toPlainString(); |
| | | } |
| | | |
| | | } |
| | |
| | | import com.doumee.dao.business.model.PricingRule; |
| | | import com.doumee.dao.business.model.ShopInfo; |
| | | import com.doumee.dao.dto.*; |
| | | import com.doumee.dao.system.model.SystemDictData; |
| | | import com.doumee.dao.system.SystemUserMapper; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.dao.vo.ShopDetailVO; |
| | |
| | | Integer shopId; |
| | | if (existing != null) { |
| | | // æ ¡éªç¶æï¼åªæå¾
审æ¹(0)å被驳å(2)å¯ä¿®æ¹ |
| | | if (!Constants.equalsInteger(existing.getAuditStatus(), Constants.ZERO) |
| | | && !Constants.equalsInteger(existing.getAuditStatus(), Constants.TWO)) { |
| | | if (!Constants.equalsInteger(existing.getAuditStatus(), Constants.TWO)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å½åé¨åºç¶æä¸å
许修æ¹"); |
| | | } |
| | | // æ ¡éªopenidå¹é
ï¼å½åç»å½ä¼åçopenidå¿
é¡»ä¸é¨åºçopenidä¸è´ |
| | |
| | | shopInfo.setSalt(salt); |
| | | shopInfo.setAliAccount(request.getAliAccount()); |
| | | shopInfo.setAliName(request.getAliName()); |
| | | shopInfo.setAuditStatus(Constants.ZERO); |
| | | shopInfo.setStatus(Constants.ZERO); |
| | | shopInfo.setDeleted(Constants.ZERO); |
| | | shopInfo.setCreateTime(now); |
| | |
| | | shopInfo.setRegionMemberId(member.getId()); |
| | | // è¯»åæ¼ééé¢ |
| | | setDepositAmountFromPricingRule(shopInfo); |
| | | // 设置é»è®¤é
éèå´ |
| | | setDefaultDeliveryRange(shopInfo); |
| | | shopInfoMapper.insert(shopInfo); |
| | | shopId = shopInfo.getId(); |
| | | } |
| | |
| | | if (Constants.equalsInteger(newAuditStatus, Constants.ONE)) { |
| | | // å®¡æ ¸éè¿ â éç¥ç¼´çº³æ¼é |
| | | String depositMoney = shopInfo.getDepositAmount() != null |
| | | ? String.valueOf(shopInfo.getDepositAmount() / 100.0) : "0"; |
| | | ? new java.math.BigDecimal(shopInfo.getDepositAmount()) |
| | | .divide(new java.math.BigDecimal(100), 2, java.math.RoundingMode.HALF_UP).toPlainString() : "0"; |
| | | sendSmsNotify(shopInfo.getTelephone(), |
| | | Constants.SmsNotify.SHOP_AUTH_APPROVED_DEPOSIT, |
| | | "storeName", shopInfo.getName(), |
| | |
| | | |
| | | // é¨åºåç§°æ¨¡ç³æ¥è¯¢ |
| | | if (StringUtils.isNotBlank(dto.getName())) { |
| | | qw.lambda().like(ShopInfo::getName, dto.getName()); |
| | | qw.lambda().and(q -> q.like(ShopInfo::getName, dto.getName()).or() |
| | | .like(ShopInfo::getAddress, dto.getName())); |
| | | } |
| | | |
| | | // åå¸çéï¼areaIdæ¯åºå¿ï¼éå¹é
å
¶parentIdçäºåå¸IDï¼ |
| | |
| | | public ShopLoginVO shopPasswordLogin(ShopLoginDTO dto){ |
| | | if(StringUtils.isBlank(dto.getTelephone()) |
| | | || StringUtils.isBlank(dto.getPassword()) |
| | | || StringUtils.isBlank(dto.getOpenid()) |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ç¨æ·åæå¯ç ä¸è½ä¸ºç©º"); |
| | | } |
| | |
| | | ); |
| | | if(shop==null){ |
| | | throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); |
| | | } |
| | | if(!Constants.equalsInteger(shop.getAuditStatus(),Constants.THREE)){ |
| | | if(Constants.equalsInteger(shop.getAuditStatus(),Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"è¯·å®æå®¡æ¹æµç¨ - æ¯ä»æ¼é"); |
| | | } |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"é¨åºå®¡æ¹æµç¨æªå®æï¼è¯·å®æå®¡æ¹æµç¨"); |
| | | } |
| | | //å å¯å¯ç |
| | | String pwd = Utils.Secure.encryptPassword( dto.getPassword(), shop.getSalt()); |
| | |
| | | |
| | | // å建tokenï¼generateTokenForRedis å·²èªå¨æ¸
é¤è¯¥ç¨æ·æ§tokenï¼ä¿è¯å¯ä¸ææï¼ |
| | | String token = JwtTokenUtil.generateTokenForRedis(shop.getId(), Constants.TWO, JSONObject.toJSONString(shop), redisTemplate); |
| | | |
| | | // æå»ºååº |
| | | ShopLoginVO vo = new ShopLoginVO(); |
| | | vo.setToken(token); |
| | |
| | | } |
| | | |
| | | /** |
| | | * ä»è¿è¥é
置读åé»è®¤é
éèå´å¹¶èµå¼å°é¨åºè®°å½ |
| | | */ |
| | | private void setDefaultDeliveryRange(ShopInfo shopInfo) { |
| | | SystemDictData data = systemDictDataBiz.queryByCode(Constants.OPERATION_CONFIG, Constants.OP_DEFAULT_DELIVERY_RANGE); |
| | | if (data != null && StringUtils.isNotBlank(data.getCode())) { |
| | | shopInfo.setDeliveryArea(new java.math.BigDecimal(data.getCode())); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * åéçä¿¡éç¥ï¼å¤±è´¥ä¸å½±å主ä¸å¡ï¼ |
| | | */ |
| | | private void sendSmsNotify(String phone, Constants.SmsNotify smsNotify, String... paramPairs) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void changePassword(Integer shopId, String newPassword, String token) { |
| | | if (StringUtils.isBlank(newPassword)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "å¯ç ä¸è½ä¸ºç©º"); |
| | | public void changePassword(Integer shopId, String oldPassword, String newPassword, String token) { |
| | | if (StringUtils.isBlank(oldPassword)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ§å¯ç ä¸è½ä¸ºç©º"); |
| | | } |
| | | // æ ¡éªå¯ç å¿
须忶å
å«åæ¯åæ°å |
| | | if (StringUtils.isBlank(newPassword)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ°å¯ç ä¸è½ä¸ºç©º"); |
| | | } |
| | | // æ ¡éªæ°å¯ç å¿
须忶å
å«åæ¯åæ°å |
| | | boolean hasLetter = newPassword.chars().anyMatch(Character::isLetter); |
| | | boolean hasDigit = newPassword.chars().anyMatch(Character::isDigit); |
| | | if (!hasLetter || !hasDigit) { |
| | |
| | | if (shopInfo == null || Constants.equalsInteger(shopInfo.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | // æ ¡éªæ§å¯ç |
| | | String oldEncryptPwd = Utils.Secure.encryptPassword(oldPassword, shopInfo.getSalt()); |
| | | if (!oldEncryptPwd.equals(shopInfo.getPassword())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "æ§å¯ç é误"); |
| | | } |
| | | // éæ°çæsaltï¼å 坿°å¯ç å¹¶æ´æ° |
| | | String salt = RandomStringUtils.randomAlphabetic(6); |
| | | shopInfo.setPassword(Utils.Secure.encryptPassword(newPassword, salt)); |
| | |
| | | queryWrapper.select("IFNULL(SUM(amount), 0) as amount"); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getDeleted, Constants.ZERO); |
| | | queryWrapper.lambda().in(WithdrawalOrders::getStatus, Arrays.asList(Constants.ZERO, Constants.ONE)); |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getStatus, Constants.ONE); |
| | | if (pageWrap.getModel().getMemberType() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getMemberType, pageWrap.getModel().getMemberType()); |
| | | } |
| | | if (pageWrap.getModel().getOutBillNo() != null) { |
| | | queryWrapper.lambda().like(WithdrawalOrders::getOutBillNo, pageWrap.getModel().getOutBillNo()); |
| | | } |
| | |
| | | tencent_key: |
| | | |
| | | # é«å¾·å°å¾apikey |
| | | geocode_map_key: 9a6c1f0eff2e5aa91989ca9d4c21e262 |
| | | geocode_map_key: 9a62636d82d6c7c2372e57d80f99287c |
| | | |
| | | qiwei: |
| | | serviceurl: https://qyapi.weixin.qq.com |
| | |
| | | import com.doumee.dao.business.model.Banner; |
| | | import com.doumee.dao.business.model.Category; |
| | | import com.doumee.dao.business.model.Notice; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.dao.dto.AreasDto; |
| | | import com.doumee.dao.dto.CalculateLocalPriceDTO; |
| | | import com.doumee.dao.dto.CalculateRemotePriceDTO; |
| | | import com.doumee.dao.dto.DirectionInfoDTO; |
| | | import com.doumee.dao.dto.SameCityCheckDTO; |
| | | import com.doumee.dao.vo.PriceCalculateVO; |
| | | import com.doumee.dao.vo.ActiveOrderTipVO; |
| | |
| | | } |
| | | |
| | | @LoginDriverRequired |
| | | @ApiOperation(value = "è·¯å¾è§å", notes = "è°ç¨é«å¾·å°å¾è·¯å¾è§åæ¥å£ï¼è¿å路线信æ¯") |
| | | @PostMapping("/directionInfo") |
| | | public ApiResponse<JSONObject> directionInfo(@RequestBody @Valid DirectionInfoDTO dto) { |
| | | return ApiResponse.success("æä½æå", MapUtil.directionInfo(dto.getMode(), dto.getFrom(), dto.getTo())); |
| | | } |
| | | |
| | | @LoginDriverRequired |
| | | @ApiOperation(value = "叿ºæ è®°å
¨é¨å·²è¯»", notes = "æ è®°å½åç¨æ·æææªè¯»éç¥ä¸ºå·²è¯»") |
| | | @PostMapping("/driverReadAllNotice") |
| | | @ApiImplicitParams({ |
| | |
| | | import com.doumee.dao.dto.DriverRegisterRequest; |
| | | import com.doumee.dao.dto.DriverVerifyRequest; |
| | | import com.doumee.dao.vo.AccountResponse; |
| | | import com.doumee.dao.dto.CancelOrderDTO; |
| | | import com.doumee.dao.vo.DriverActiveOrderCountVO; |
| | | import com.doumee.dao.vo.DriverCancelLimitVO; |
| | | import com.doumee.dao.vo.DriverCenterVO; |
| | |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true) |
| | | }) |
| | | public ApiResponse cancelOrder(@RequestParam Integer orderId, |
| | | @RequestParam(required = false) String reason) { |
| | | driverInfoService.cancelOrder(this.getDriverId(), orderId, reason); |
| | | public ApiResponse cancelOrder(@RequestBody @Valid CancelOrderDTO dto) { |
| | | driverInfoService.cancelOrder(this.getDriverId(), dto.getOrderId(), dto.getCancelReason()); |
| | | return ApiResponse.success("åæ¶æå"); |
| | | } |
| | | |
| | |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true), |
| | | }) |
| | | public ApiResponse changePassword(@RequestParam String newPassword) { |
| | | public ApiResponse changePassword(@RequestParam String oldPassword, |
| | | @RequestParam String newPassword) { |
| | | String token = this.getRequest().getHeader(JwtTokenUtil.HEADER_KEY); |
| | | driverInfoService.changePassword(this.getDriverId(), newPassword, token); |
| | | driverInfoService.changePassword(this.getDriverId(), oldPassword, newPassword, token); |
| | | return ApiResponse.success("å¯ç ä¿®æ¹æåï¼è¯·éæ°ç»å½"); |
| | | } |
| | | |
| | |
| | | return ApiResponse.success("æä½æå", driverInfoService.getTodayCancelLimit(this.getDriverId())); |
| | | } |
| | | |
| | | @ApiOperation("æ ¡éªå¸æºtokenæ¯å¦ææ") |
| | | @GetMapping("/checkToken") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "query", dataType = "String", name = "token", value = "叿ºtoken", required = true) |
| | | }) |
| | | public ApiResponse<Boolean> checkToken(@RequestParam String token) { |
| | | return ApiResponse.success(driverInfoService.checkDriverToken(token)); |
| | | } |
| | | |
| | | } |
| | |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "é¨åºtokenå¼", required = true), |
| | | }) |
| | | public ApiResponse changePassword(@RequestParam String newPassword) { |
| | | public ApiResponse changePassword(@RequestParam String oldPassword, |
| | | @RequestParam String newPassword) { |
| | | String token = this.getRequest().getHeader(JwtTokenUtil.HEADER_KEY); |
| | | shopInfoService.changePassword(this.getShopId(), newPassword, token); |
| | | shopInfoService.changePassword(this.getShopId(), oldPassword, newPassword, token); |
| | | return ApiResponse.success("å¯ç ä¿®æ¹æåï¼è¯·éæ°ç»å½"); |
| | | } |
| | | |