| | |
| | | return ApiResponse.success(dataBoardService.revenueTrend(query)); |
| | | } |
| | | |
| | | @ApiOperation("è¥æ¶è¶å¿å¯¼åºï¼æé¨åºåç»ï¼") |
| | | @PostMapping("/revenueTrendExport") |
| | | public void revenueTrendExport(@RequestBody TrendQueryDTO query, HttpServletResponse response) { |
| | | dataBoardService.revenueTrendExport(query, response); |
| | | } |
| | | |
| | | @ApiOperation("é¨åºä¸ç»©ç»è®¡") |
| | | @PostMapping("/shopPerformance") |
| | | public ApiResponse<ShopPerformanceVO> shopPerformance(@RequestBody DataBoardQueryDTO query) { |
| | |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.core.annotation.excel.ExcelExporter; |
| | | import com.doumee.core.annotation.pr.PreventRepeat; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | |
| | | @RequiresPermissions("business:driverInfo:exportExcel") |
| | | public void exportExcel(@RequestBody PageWrap<DriverInfo> pageWrap, HttpServletResponse response) { |
| | | List<DriverInfo> driverInfoList = driverInfoService.findPage(pageWrap).getRecords(); |
| | | for (DriverInfo d : driverInfoList) { |
| | | if (d.getMemberAmount() != null) { |
| | | d.setMemberAmountStr(String.valueOf(Constants.getFormatMoney(d.getMemberAmount()))); |
| | | } |
| | | } |
| | | String fileName = "叿ºç®¡ç导åº_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); |
| | | ExcelExporter.build(DriverInfo.class).export(driverInfoList, fileName, response); |
| | | } |
| | |
| | | vo.setCode(o.getCode()); |
| | | vo.setRelationOrderCode(o.getRelationOrderCode()); |
| | | vo.setGoodsInfo(o.getGoodsInfo()); |
| | | vo.setTakeUser(o.getTakeUser()); |
| | | vo.setTakePhone(o.getTakePhone()); |
| | | vo.setDepositShopName(o.getDepositShopName()); |
| | | vo.setTakeShopName(o.getTakeShopName()); |
| | | vo.setTypeName(o.getType() != null ? (o.getType() == 0 ? "å°±å°å¯å" : "ååå¯é") : ""); |
| | | vo.setOrderLevel(StringUtils.isNotBlank(o.getOrderLevel()) ? Constants.getDriverLevelName(Integer.valueOf(o.getOrderLevel())) : Constants.getDriverLevelName(Constants.ZERO)); |
| | | vo.setDeclaredFee(String.valueOf(Constants.getFormatMoney(o.getDeclaredFee()))); |
| | |
| | | |
| | | com.wechat.pay.java.service.payments.jsapi.model.Amount amount = |
| | | new com.wechat.pay.java.service.payments.jsapi.model.Amount(); |
| | | amount.setTotal(totalCents.intValue()); |
| | | amount.setTotal(2);//totalCents.intValue()); |
| | | amount.setCurrency("CNY"); |
| | | request.setAmount(amount); |
| | | |
| | |
| | | request.setNotifyUrl(notifyUrl); |
| | | |
| | | AmountReq amount = new AmountReq(); |
| | | amount.setRefund(refundCents); |
| | | amount.setTotal(totalCents); |
| | | amount.setRefund(1L);//refundCents); |
| | | amount.setTotal(2L);//totalCents); |
| | | amount.setCurrency("CNY"); |
| | | request.setAmount(amount); |
| | | |
| | |
| | | public static final String APPID ="APPID" ; |
| | | public static final String SECRET ="SECRET" ; |
| | | public static final String ACCESS_TOKEN ="ACCESS_TOKEN" ; |
| | | public static final String SERVER_INTRODUCE ="SERVER_INTRODUCE" ; |
| | | public static final String FEE_STANDARDS ="FEE_STANDARDS" ; |
| | | public static final String ABOUT_US ="ABOUT_US" ; |
| | | public static final String SERVER_PHONE ="SERVER_PHONE" ; |
| | | public static final String ARRIVAL_PICK_UP_TIME ="ARRIVAL_PICK_UP_TIME" ;//å³å°å°è¾¾åä»¶æ¶é´é
ç½®(åé) |
| | |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum OrdersAttach { |
| | | STORAGE_ORDER("storageOrder", "å¯å订å"), |
| | | SHOP_DEPOSIT("shopDeposit", "åºéºæ¼é订å"), |
| | | DRIVER_DEPOSIT("driverDeposit", "叿ºæ¼é订å"), |
| | | OVERDUE_FEE("overdueFee", "订åé¾æè´¹ç¨") |
| | | STORAGE_ORDER("storageOrder", "å®ç
è¡è½»æ¾è¡-å¯å订å"), |
| | | DELIVERY_ORDER("deliveryOrder", "å®ç
è¡è½»æ¾è¡-å¯é订å"), |
| | | SHOP_DEPOSIT("shopDeposit", "å®ç
è¡è½»æ¾è¡-é¨åºæ¼é"), |
| | | DRIVER_DEPOSIT("driverDeposit", "å®ç
è¡è½»æ¾è¡-叿ºæ¼é订å"), |
| | | OVERDUE_FEE("overdueFee", "å®ç
è¡è½»æ¾è¡-å¯åé¾æè´¹ç¨"), |
| | | DELIVERY_OVERDUE_FEE("deliveryOverdueFee", "å®ç
è¡è½»æ¾è¡-å¯éé¾æè´¹ç¨") |
| | | ; |
| | | |
| | | private final String key; |
| | |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "å½åä½é¢(åä½:å)", example = "10000") |
| | | @ExcelColumn(name = "è´¦æ·ä½é¢", index = 5, width = 12) |
| | | private Long memberAmount; |
| | | |
| | | @TableField(exist = false) |
| | | @ExcelColumn(name = "è´¦æ·ä½é¢(å
)", index = 5, width = 12) |
| | | private String memberAmountStr; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "驾驶车è¾ç±»åï¼ æºå¨è½¦ = driving éæºå¨è½¦ = bicycling") |
| | | private String driverType; |
| | | |
| | |
| | | @ApiModelProperty(value = "é¨åºä¸»é®ï¼åæ¶æ¥è¯¢åä»¶/åä»¶é¨åºï¼") |
| | | private Integer shopId; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "æ¶ä»¶äººä¿¡æ¯ï¼æ¨¡ç³æ¥è¯¢åç§°/ææºå·ï¼") |
| | | private String takeKeyword; |
| | | |
| | | |
| | | @ApiModelProperty(value = "åºéºè®¢ååºå·") |
| | | private Long autoNum; |
| | |
| | | @ApiModel("æ°æ®çæ¿æ¥è¯¢æ¡ä»¶") |
| | | public class DataBoardQueryDTO implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "æ¥ææ®µç±»åï¼0=仿¥ï¼1=è¿ä¸å¤©ï¼2=è¿30天ï¼3=è¿åå¹´ï¼4=è¿ä¸å¹´", required = true) |
| | | @ApiModelProperty(value = "æ¥ææ®µç±»åï¼0=仿¥ï¼1=è¿ä¸å¤©ï¼2=è¿30天ï¼3=è¿åå¹´ï¼4=è¿ä¸å¹´ï¼5=èªå®ä¹", required = true) |
| | | private Integer dateType; |
| | | |
| | | @JsonIgnore |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "èªå®ä¹å¼å§æ¥æï¼dateType=5æ¶å¿
ä¼ ï¼") |
| | | private Date startDate; |
| | | |
| | | @JsonIgnore |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ApiModelProperty(value = "èªå®ä¹ç»ææ¥æï¼dateType=5æ¶å¿
ä¼ ï¼") |
| | | private Date endDate; |
| | | |
| | | @ApiModelProperty(value = "é¨åºä¸»é®ï¼å¯éï¼") |
| | | private Integer shopId; |
| | | |
| | | public void resolveDateRange() { |
| | | if (dateType != null && dateType == 5) { |
| | | if (startDate != null) { |
| | | Calendar start = Calendar.getInstance(); |
| | | start.setTime(startDate); |
| | | start.set(Calendar.HOUR_OF_DAY, 0); |
| | | start.set(Calendar.MINUTE, 0); |
| | | start.set(Calendar.SECOND, 0); |
| | | start.set(Calendar.MILLISECOND, 0); |
| | | this.startDate = start.getTime(); |
| | | } |
| | | if (endDate != null) { |
| | | Calendar end = Calendar.getInstance(); |
| | | end.setTime(endDate); |
| | | end.set(Calendar.HOUR_OF_DAY, 23); |
| | | end.set(Calendar.MINUTE, 59); |
| | | end.set(Calendar.SECOND, 59); |
| | | end.set(Calendar.MILLISECOND, 999); |
| | | this.endDate = end.getTime(); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | Calendar now = Calendar.getInstance(); |
| | | now.set(Calendar.MINUTE, 0); |
| | | now.set(Calendar.SECOND, 0); |
| | |
| | | @ApiModelProperty(value = "鿬¾æ»éé¢ï¼å
ï¼") |
| | | private BigDecimal refundAmount; |
| | | |
| | | @ExcelColumn(name = "é¾æè´¹ç¨ï¼å
ï¼", width = 18, index = 8) |
| | | // @ExcelColumn(name = "é¾æè´¹ç¨ï¼å
ï¼", width = 18, index = 8) |
| | | @ApiModelProperty(value = "é¾æè´¹ç¨ï¼å
ï¼") |
| | | private BigDecimal overdueAmount; |
| | | |
| | | @ExcelColumn(name = "å¹³å°åè¥æ¶ï¼å
ï¼", width = 18, index = 9) |
| | | @ExcelColumn(name = "å¹³å°åè¥æ¶ï¼å
ï¼", width = 18, index = 8) |
| | | @ApiModelProperty(value = "å¹³å°åè¥æ¶ï¼å
ï¼") |
| | | private BigDecimal netRevenue; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel("è®¢åæ¶é´è½´èç¹") |
| | | public class OrderTimelineVO { |
| | | |
| | | @ApiModelProperty("æ é¢å
容") |
| | | private String title; |
| | | |
| | | @ApiModelProperty("æä½æ¶é´") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date time; |
| | | |
| | | @ApiModelProperty("éä»¶å¾çURLå表") |
| | | private List<String> images; |
| | | } |
| | |
| | | @ExcelColumn(name = "ç©åä¿¡æ¯", index = 2) |
| | | private String goodsInfo; |
| | | |
| | | @ExcelColumn(name = "ç±»å", index = 3) |
| | | @ExcelColumn(name = "æ¶ä»¶äºº", index = 3) |
| | | private String takeUser; |
| | | |
| | | @ExcelColumn(name = "æ¶ä»¶äººçµè¯", index = 4) |
| | | private String takePhone; |
| | | |
| | | @ExcelColumn(name = "å¯ä»¶é¨åº", index = 5) |
| | | private String depositShopName; |
| | | |
| | | @ExcelColumn(name = "åä»¶é¨åº", index = 6) |
| | | private String takeShopName; |
| | | |
| | | @ExcelColumn(name = "ç±»å", index = 7) |
| | | private String typeName; |
| | | |
| | | @ExcelColumn(name = "订å级å«", index = 4) |
| | | @ExcelColumn(name = "订å级å«", index = 8) |
| | | private String orderLevel; |
| | | |
| | | @ExcelColumn(name = "ç©åä¿è´¹(å
)", index = 5) |
| | | @ExcelColumn(name = "ç©åä¿è´¹(å
)", index = 9) |
| | | private String declaredFee; |
| | | |
| | | @ExcelColumn(name = "åºç¡æå¡è´¹(å
)", index = 6) |
| | | @ExcelColumn(name = "åºç¡æå¡è´¹(å
)", index = 10) |
| | | private String basicAmount; |
| | | |
| | | @ExcelColumn(name = "è®¢åæ»ä»·(å
)", index = 7) |
| | | @ExcelColumn(name = "è®¢åæ»ä»·(å
)", index = 11) |
| | | private String totalAmount; |
| | | |
| | | @ExcelColumn(name = "å®ä»ç°é(å
)", index = 8) |
| | | @ExcelColumn(name = "å®ä»ç°é(å
)", index = 12) |
| | | private String payAmount; |
| | | |
| | | @ExcelColumn(name = "å æ¥è´¹(å
)", index = 9) |
| | | @ExcelColumn(name = "å æ¥è´¹(å
)", index = 13) |
| | | private String urgentAmount; |
| | | |
| | | @ExcelColumn(name = "鿬¾éé¢(å
)", index = 10) |
| | | @ExcelColumn(name = "鿬¾éé¢(å
)", index = 14) |
| | | private String refundAmount; |
| | | |
| | | @ExcelColumn(name = "è¶
æ¶éé¢(å
)", index = 11) |
| | | @ExcelColumn(name = "è¶
æ¶éé¢(å
)", index = 15) |
| | | private String overdueAmount; |
| | | |
| | | @ExcelColumn(name = "å¼å¸¸éé¢(å
)", index = 12) |
| | | @ExcelColumn(name = "å¼å¸¸éé¢(å
)", index = 16) |
| | | private String exceptionAmount; |
| | | |
| | | @ExcelColumn(name = "伿 叿æ£(å
)", index = 13) |
| | | @ExcelColumn(name = "伿 叿æ£(å
)", index = 17) |
| | | private String deductionAmount; |
| | | |
| | | @ExcelColumn(name = "叿ºè¡¥å¿è´¹ç¨(å
)", index = 14) |
| | | @ExcelColumn(name = "叿ºè¡¥å¿è´¹ç¨(å
)", index = 18) |
| | | private String exceptionFee; |
| | | |
| | | @ExcelColumn(name = "é¨åºä¿ç®¡è¡¥è´´(å
)", index = 15) |
| | | @ExcelColumn(name = "é¨åºä¿ç®¡è¡¥è´´(å
)", index = 19) |
| | | private String shopCompensationAmount; |
| | | |
| | | @ExcelColumn(name = "订åç¶æ", index = 16) |
| | | @ExcelColumn(name = "订åç¶æ", index = 20) |
| | | private String statusDesc; |
| | | |
| | | @ExcelColumn(name = "ç»ç®ç¶æ", index = 17) |
| | | @ExcelColumn(name = "ç»ç®ç¶æ", index = 21) |
| | | private String settlementDesc; |
| | | |
| | | @ExcelColumn(name = "æ¯ä»æ¶é´", index = 18, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16) |
| | | @ExcelColumn(name = "æ¯ä»æ¶é´", index = 22, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16) |
| | | private Date payTime; |
| | | |
| | | @ExcelColumn(name = "å建æ¶é´", index = 19, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16) |
| | | @ExcelColumn(name = "å建æ¶é´", index = 23, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16) |
| | | private Date createTime; |
| | | } |
| | |
| | | import com.doumee.dao.dto.TrendQueryDTO; |
| | | import com.doumee.dao.vo.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.List; |
| | | |
| | | public interface DataBoardService { |
| | |
| | | |
| | | List<DriverTopVO> driverTop(TrendQueryDTO query); |
| | | |
| | | void revenueTrendExport(TrendQueryDTO query, HttpServletResponse response); |
| | | |
| | | /** |
| | | * æ ¹æ®è®¢åIDå表æå»ºè¡æç±»ååå¸ |
| | | */ |
| | |
| | | Boolean checkOperationRadius(Integer orderId, Integer userId, Integer userType, Double lng, Double lat); |
| | | |
| | | ManualRefundDetailVO getManualRefundDetail(Integer orderId); |
| | | |
| | | List<OrderTimelineVO> getOrderTimeline(Integer orderId); |
| | | } |
| | |
| | | pageWrap.getModel().setDeleted(Constants.ZERO); |
| | | queryWrapper.selectAll(Category.class) |
| | | .selectAs(SystemUser::getUsername, Category::getUpdateUserName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Category::getUpdateUser); |
| | | .select("c2.name", Category::getRelationName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Category::getUpdateUser) |
| | | .leftJoin("category c2 on c2.id = t.relation_id"); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.eq(Category::getId, pageWrap.getModel().getId()); |
| | | } |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.xssf.streaming.SXSSFWorkbook; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | |
| | | vo.setNetRevenue(BigDecimal.valueOf(netRev).divide(hundred, 2, RoundingMode.HALF_UP)); |
| | | result.add(vo); |
| | | } |
| | | Collections.reverse(result); |
| | | return result; |
| | | } |
| | | |
| | |
| | | return qw; |
| | | } |
| | | |
| | | @Override |
| | | public void revenueTrendExport(TrendQueryDTO query, HttpServletResponse response) { |
| | | TrendDateRange range = parseTrendDateRange(query); |
| | | SimpleDateFormat sdf = new SimpleDateFormat(range.pattern); |
| | | |
| | | // æ¥è¯¢è®¢å |
| | | List<Orders> orders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda() |
| | | .eq(Orders::getDeleted, Constants.ZERO) |
| | | .in(Orders::getStatus, |
| | | Constants.OrderStatus.waitDeposit.getKey(), |
| | | Constants.OrderStatus.deposited.getKey(), |
| | | Constants.OrderStatus.accepted.getKey(), |
| | | Constants.OrderStatus.delivering.getKey(), |
| | | Constants.OrderStatus.arrived.getKey(), |
| | | Constants.OrderStatus.overdue.getKey(), |
| | | Constants.OrderStatus.finished.getKey()) |
| | | .ge(Orders::getCreateTime, range.startDate) |
| | | .le(Orders::getCreateTime, range.endDate)); |
| | | |
| | | // æ¥è¯¢é¾æè´¹ç¨ |
| | | List<Integer> orderIds = orders.stream().map(Orders::getId).collect(Collectors.toList()); |
| | | Map<Integer, Long> overduePaidMap = new HashMap<>(); |
| | | if (!orderIds.isEmpty()) { |
| | | List<OtherOrders> overdueOrders = otherOrdersMapper.selectList(new QueryWrapper<OtherOrders>().lambda() |
| | | .eq(OtherOrders::getType, 2) |
| | | .eq(OtherOrders::getPayStatus, Constants.ONE) |
| | | .eq(OtherOrders::getDeleted, Constants.ZERO) |
| | | .in(OtherOrders::getOrderId, orderIds)); |
| | | for (OtherOrders oo : overdueOrders) { |
| | | long amt = oo.getPayAccount() != null ? oo.getPayAccount() : 0L; |
| | | overduePaidMap.merge(oo.getOrderId(), amt, Long::sum); |
| | | } |
| | | } |
| | | |
| | | // çææ¥æå头 |
| | | List<String> dateKeys = new ArrayList<>(); |
| | | List<String> dateLabels = new ArrayList<>(); |
| | | if (range.byMonth) { |
| | | Calendar loop = Calendar.getInstance(); |
| | | loop.setTime(range.startDate); |
| | | Calendar end = Calendar.getInstance(); |
| | | end.setTime(range.endDate); |
| | | while (!loop.after(end)) { |
| | | dateKeys.add(sdf.format(loop.getTime())); |
| | | dateLabels.add(sdf.format(loop.getTime())); |
| | | loop.add(Calendar.DAY_OF_MONTH, 1); |
| | | } |
| | | } else { |
| | | Calendar endCal = Calendar.getInstance(); |
| | | endCal.setTime(range.endDate); |
| | | int endMonth = endCal.get(Calendar.MONTH); |
| | | for (int m = 0; m <= endMonth; m++) { |
| | | dateKeys.add(String.format("%02d", m + 1)); |
| | | dateLabels.add((m + 1) + "æ"); |
| | | } |
| | | } |
| | | |
| | | // æ¶éææé¨åº |
| | | Map<Integer, String> shopNameMap = new LinkedHashMap<>(); |
| | | for (Orders o : orders) { |
| | | if (o.getDepositShopId() != null && !shopNameMap.containsKey(o.getDepositShopId())) { |
| | | ShopInfo shop = shopInfoMapper.selectById(o.getDepositShopId()); |
| | | shopNameMap.put(o.getDepositShopId(), shop != null ? shop.getName() : "æªç¥é¨åº"); |
| | | } |
| | | } |
| | | |
| | | // æé¨åº+æ¥æåç»è®¡ç®è¥æ¶ |
| | | // key = shopId + "_" + dateKey |
| | | Map<String, Long> revenueMap = new HashMap<>(); |
| | | for (Orders o : orders) { |
| | | String date = sdf.format(o.getCreateTime()); |
| | | long pay = o.getPayAmount() != null ? o.getPayAmount() : 0L; |
| | | long refund = o.getRefundAmount() != null ? o.getRefundAmount() : 0L; |
| | | long overdue = overduePaidMap.getOrDefault(o.getId(), 0L); |
| | | long rev = pay - refund + overdue; |
| | | Integer shopId = o.getDepositShopId(); |
| | | if (shopId != null) { |
| | | String key = shopId + "_" + date; |
| | | revenueMap.merge(key, rev, Long::sum); |
| | | } |
| | | } |
| | | |
| | | // æå»ºExcel |
| | | try (SXSSFWorkbook wb = new SXSSFWorkbook()) { |
| | | Sheet sheet = wb.createSheet("è¥æ¶è¶å¿"); |
| | | |
| | | // åå»ºæ ·å¼ |
| | | CellStyle titleStyle = wb.createCellStyle(); |
| | | Font titleFont = wb.createFont(); |
| | | titleFont.setBold(true); |
| | | titleFont.setFontHeightInPoints((short) 16); |
| | | titleStyle.setFont(titleFont); |
| | | titleStyle.setAlignment(HorizontalAlignment.CENTER); |
| | | |
| | | CellStyle headerStyle = wb.createCellStyle(); |
| | | Font headerFont = wb.createFont(); |
| | | headerFont.setBold(true); |
| | | headerFont.setFontHeightInPoints((short) 12); |
| | | headerStyle.setFont(headerFont); |
| | | headerStyle.setAlignment(HorizontalAlignment.CENTER); |
| | | headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); |
| | | headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); |
| | | |
| | | CellStyle dataStyle = wb.createCellStyle(); |
| | | dataStyle.setAlignment(HorizontalAlignment.RIGHT); |
| | | |
| | | // çææ é¢ |
| | | String title; |
| | | int totalCols = dateLabels.size() + 1; |
| | | if (range.byMonth) { |
| | | String yearMonth = query.getMonth(); // yyyy-MM |
| | | String[] ym = yearMonth.split("-"); |
| | | title = "è¡æå¯åé¨åº" + ym[0] + "å¹´" + Integer.valueOf(ym[1]) + "ææ¥æ¥è¡¨"; |
| | | } else { |
| | | title = "è¡æå¯åé¨åº" + query.getYear() + "å¹´ææ¥è¡¨"; |
| | | } |
| | | |
| | | // åæ é¢è¡ï¼ç¬¬0è¡ï¼åå¹¶ææåï¼ |
| | | Row titleRow = sheet.createRow(0); |
| | | titleRow.setHeight((short) 600); |
| | | Cell titleCell = titleRow.createCell(0); |
| | | titleCell.setCellValue(title); |
| | | titleCell.setCellStyle(titleStyle); |
| | | sheet.addMergedRegion(new org.apache.poi.ss.util.CellRangeAddress(0, 0, 0, totalCols - 1)); |
| | | |
| | | // åå头ï¼ç¬¬1è¡ï¼ |
| | | Row headerRow = sheet.createRow(1); |
| | | Cell shopCell = headerRow.createCell(0); |
| | | shopCell.setCellValue("é¨åºåç§°"); |
| | | shopCell.setCellStyle(headerStyle); |
| | | sheet.setColumnWidth(0, 20 * 256); |
| | | |
| | | for (int i = 0; i < dateLabels.size(); i++) { |
| | | Cell cell = headerRow.createCell(i + 1); |
| | | cell.setCellValue(dateLabels.get(i)); |
| | | cell.setCellStyle(headerStyle); |
| | | sheet.setColumnWidth(i + 1, 14 * 256); |
| | | } |
| | | |
| | | // åæ°æ®è¡ï¼ç¬¬2è¡èµ·ï¼ |
| | | BigDecimal hundred = BigDecimal.valueOf(100); |
| | | int rowIndex = 2; |
| | | for (Map.Entry<Integer, String> entry : shopNameMap.entrySet()) { |
| | | Row row = sheet.createRow(rowIndex++); |
| | | row.createCell(0).setCellValue(entry.getValue()); |
| | | for (int i = 0; i < dateKeys.size(); i++) { |
| | | String mapKey = entry.getKey() + "_" + dateKeys.get(i); |
| | | long rev = revenueMap.getOrDefault(mapKey, 0L); |
| | | Cell cell = row.createCell(i + 1); |
| | | if (rev > 0) { |
| | | cell.setCellValue(BigDecimal.valueOf(rev).divide(hundred, 2, RoundingMode.HALF_UP).toPlainString()); |
| | | } else { |
| | | cell.setCellValue(""); |
| | | } |
| | | cell.setCellStyle(dataStyle); |
| | | } |
| | | } |
| | | |
| | | // è¾åº |
| | | String fileName; |
| | | if (StringUtils.isNotBlank(query.getMonth())) { |
| | | fileName = "è¥æ¶è¶å¿å¯¼åº_" + query.getMonth(); |
| | | } else { |
| | | fileName = "è¥æ¶è¶å¿å¯¼åº_" + query.getYear(); |
| | | } |
| | | String encodeFileName = java.net.URLEncoder.encode(fileName, "UTF-8") + ".xlsx"; |
| | | response.setContentType("application/octet-stream"); |
| | | response.setHeader("Content-Disposition", "attachment;filename=" + encodeFileName); |
| | | response.setHeader("doumee-opera-type", "download"); |
| | | response.setHeader("doumee-download-filename", encodeFileName); |
| | | wb.write(response.getOutputStream()); |
| | | response.getOutputStream().flush(); |
| | | } catch (Exception e) { |
| | | log.error("è¥æ¶è¶å¿å¯¼åºå¼å¸¸", e); |
| | | throw new RuntimeException("导åºå¤±è´¥: " + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | private TrendDateRange parseTrendDateRange(TrendQueryDTO query) { |
| | | Calendar now = Calendar.getInstance(); |
| | | TrendDateRange range = new TrendDateRange(); |
| | |
| | | if (pageWrap.getModel().getAuditStatus() != null) { |
| | | queryWrapper.eq(DriverInfo::getAuditStatus, pageWrap.getModel().getAuditStatus()); |
| | | } |
| | | // æ§å«ï¼æ ¹æ®èº«ä»½è¯ç¬¬17ä½å¤æï¼ |
| | | if (pageWrap.getModel().getGender() != null) { |
| | | if (pageWrap.getModel().getGender() == 1) { |
| | | queryWrapper.apply("CAST(SUBSTRING(t.IDCARD, 17, 1) AS UNSIGNED) % 2 = 1"); |
| | | } else if (pageWrap.getModel().getGender() == 2) { |
| | | queryWrapper.apply("CAST(SUBSTRING(t.IDCARD, 17, 1) AS UNSIGNED) % 2 = 0"); |
| | | } |
| | | } |
| | | // åå»ºæ¥æèå´ |
| | | if (pageWrap.getModel().getCreateTimeStart() != null) { |
| | | queryWrapper.ge(DriverInfo::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTimeStart())); |
| | |
| | | .selectAs(Category::getDetail, Orders::getOrderLevel) |
| | | .select("s1.name", Orders::getDepositShopName) |
| | | .select("o2.code", Orders::getRelationOrderCode) |
| | | .select("s2.name", Orders::getTakeShopName) |
| | | .leftJoin(Category.class, Category::getId, Orders::getGoodLevel) |
| | | .leftJoin(DriverInfo.class, DriverInfo::getId, Orders::getAcceptDriver) |
| | | .leftJoin("shop_info s1 on s1.id = t.DEPOSIT_SHOP_ID") |
| | |
| | | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()), Orders::getCode, pageWrap.getModel().getCode()); |
| | | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDepositShopName()), "s1.name", pageWrap.getModel().getDepositShopName()); |
| | | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getTakeShopName()), "s2.name", pageWrap.getModel().getTakeShopName()); |
| | | queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getTakeShopName()), Orders::getType,Constants.ONE); |
| | | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getGoodsInfo()), Orders::getGoodsInfo, pageWrap.getModel().getGoodsInfo()); |
| | | queryWrapper.ge(pageWrap.getModel().getCreateStartTime() != null, Orders::getCreateTime, pageWrap.getModel().getCreateStartTime()); |
| | | queryWrapper.le(pageWrap.getModel().getCreateEndTime() != null, Orders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime())); |
| | |
| | | .or().like(DriverInfo::getTelephone, pageWrap.getModel().getDriverKeyword())); |
| | | queryWrapper.eq(pageWrap.getModel().getSettlementStatus() != null, Orders::getSettlementStatus, pageWrap.getModel().getSettlementStatus()); |
| | | queryWrapper.eq(pageWrap.getModel().getAcceptDriver() != null, Orders::getAcceptDriver, pageWrap.getModel().getAcceptDriver()); |
| | | queryWrapper.and(pageWrap.getModel().getTakeKeyword() != null, i -> i.like(Orders::getTakeUser, pageWrap.getModel().getTakeKeyword()) |
| | | .or().like(Orders::getTakePhone, pageWrap.getModel().getTakeKeyword())); |
| | | queryWrapper.and(pageWrap.getModel().getShopId() != null, i -> i.eq(Orders::getDepositShopId, pageWrap.getModel().getShopId()) |
| | | .or().eq(Orders::getTakeShopId, pageWrap.getModel().getShopId())); |
| | | queryWrapper.orderByDesc(Orders::getId); |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ç¨æ·ä¿¡æ¯å¼å¸¸ï¼æ æ³åèµ·æ¯ä»"); |
| | | } |
| | | PayResponse payResponse = wxPayV3(orders.getOutTradeNo(), orders.getTotalAmount(), orders.getId(), |
| | | member.getOpenid(), Constants.OrdersAttach.STORAGE_ORDER); |
| | | member.getOpenid(), Constants.equalsInteger(orders.getType(), Constants.ONE) |
| | | ? Constants.OrdersAttach.DELIVERY_ORDER : Constants.OrdersAttach.STORAGE_ORDER); |
| | | payResponse.setLockKey(lockKey); |
| | | return payResponse; |
| | | } |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "ç¨æ·ä¿¡æ¯å¼å¸¸ï¼æ æ³åèµ·æ¯ä»"); |
| | | } |
| | | return wxPayV3(orders.getOutTradeNo(), orders.getTotalAmount(), orders.getId(), |
| | | member.getOpenid(), Constants.OrdersAttach.STORAGE_ORDER); |
| | | member.getOpenid(), Constants.equalsInteger(orders.getType(), Constants.ONE) |
| | | ? Constants.OrdersAttach.DELIVERY_ORDER : Constants.OrdersAttach.STORAGE_ORDER); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | |
| | | private void clearVerifyCodes(Integer orderId) { |
| | | ordersMapper.update(null, new UpdateWrapper<Orders>().lambda() |
| | | .eq(Orders::getId, orderId) |
| | | .set(Orders::getMemberVerifyCode, null) |
| | | .set(Orders::getDriverVerifyCode, null)); |
| | | } |
| | | |
| | | private String getOrdersPrefix() { |
| | | try { |
| | | return systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() |
| | |
| | | } |
| | | |
| | | // 计ç®èªé
¬ï¼åï¼ |
| | | long driverFee = new BigDecimal(totalAmount).multiply(driverRata).longValue(); |
| | | long depositShopFee = new BigDecimal(totalAmount).multiply(depositShopRata).longValue(); |
| | | long takeShopFee = new BigDecimal(totalAmount).multiply(takeShopRata).longValue(); |
| | | long driverFee = new BigDecimal(totalAmount).multiply(driverRata).setScale(0, RoundingMode.HALF_UP).longValue(); |
| | | long depositShopFee = new BigDecimal(totalAmount).multiply(depositShopRata).setScale(0, RoundingMode.HALF_UP).longValue(); |
| | | long takeShopFee = new BigDecimal(totalAmount).multiply(takeShopRata).setScale(0, RoundingMode.HALF_UP).longValue(); |
| | | |
| | | orders.setDriverFee(driverFee); |
| | | orders.setDepositShopFee(depositShopFee); |
| | |
| | | |
| | | // 5. å¤èµ·å¾®ä¿¡æ¯ä»V3 |
| | | return wxPayV3(otherOrders.getOutTradeNo(), otherOrders.getPayAccount(), otherOrders.getId(), |
| | | member.getOpenid(), Constants.OrdersAttach.OVERDUE_FEE); |
| | | member.getOpenid(), Constants.equalsInteger(order.getType(), Constants.ONE) |
| | | ? Constants.OrdersAttach.DELIVERY_OVERDUE_FEE : Constants.OrdersAttach.OVERDUE_FEE); |
| | | } |
| | | |
| | | @Override |
| | |
| | | originalOrder.setFinishTime(now); |
| | | originalOrder.setUpdateTime(now); |
| | | ordersMapper.updateById(originalOrder); |
| | | clearVerifyCodes(originalOrder.getId()); |
| | | // 触ååè®¢åæ¶çè®¡ç® |
| | | calculateAndSaveOrderFees(originalOrder.getId()); |
| | | generateRevenueRecords(originalOrder.getId()); |
| | |
| | | order.setFinishTime(now); |
| | | order.setInvoiceStatus(Constants.ONE); |
| | | ordersMapper.updateById(order); |
| | | // å°±å°å¯å(type=0)åä»¶æ¶å¾çä¸å¿
å¡«ï¼å
¶ä»ç±»ååä»¶å¿
å¡« |
| | | clearVerifyCodes(order.getId()); |
| | | if (!Constants.equalsInteger(order.getType(), Constants.ZERO)) { |
| | | if (images == null || images.isEmpty()) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请ä¸ä¼ åä»¶å¾ç"); |
| | |
| | | order.setInvoiceStatus(Constants.ONE); |
| | | order.setConfirmArriveTime(now); |
| | | ordersMapper.updateById(order); |
| | | clearVerifyCodes(order.getId()); |
| | | // 订å宿ï¼éæ¾æ ¸éç |
| | | releaseVerifyCode(verifyCode); |
| | | // ä¿ååºåºå¾çï¼obj_type=13 é¨åºåºåºå¾çï¼æå¤3å¼ ï¼ |
| | |
| | | order.setFinishTime(now); |
| | | order.setUpdateTime(now); |
| | | ordersMapper.updateById(order); |
| | | clearVerifyCodes(order.getId()); |
| | | |
| | | // 8. éæ¾æ ¸éç |
| | | if (StringUtils.isNotBlank(order.getMemberVerifyCode())) { |
| | |
| | | order.setFinishTime(now); |
| | | order.setUpdateTime(now); |
| | | ordersMapper.updateById(order); |
| | | clearVerifyCodes(order.getId()); |
| | | |
| | | // 7. çææ¶çè®°å½ |
| | | calculateAndSaveOrderFees(orderId); |
| | |
| | | order.setFinishTime(now); |
| | | order.setUpdateTime(now); |
| | | ordersMapper.updateById(order); |
| | | clearVerifyCodes(order.getId()); |
| | | |
| | | // éæ¾æ ¸éç |
| | | if (StringUtils.isNotBlank(order.getMemberVerifyCode())) { |
| | |
| | | return vo; |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderTimelineVO> getOrderTimeline(Integer orderId) { |
| | | Orders order = ordersMapper.selectById(orderId); |
| | | if (order == null || Constants.equalsInteger(order.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | List<OrderTimelineVO> timeline = new ArrayList<>(); |
| | | String imgPrefix = getOrdersPrefix(); |
| | | |
| | | // é¨åº/叿ºåç§° |
| | | String depositShopName = ""; |
| | | if (order.getDepositShopId() != null) { |
| | | ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId()); |
| | | if (depositShop != null) { |
| | | depositShopName = depositShop.getName(); |
| | | } |
| | | } |
| | | String takeShopName = ""; |
| | | if (order.getTakeShopId() != null) { |
| | | ShopInfo takeShop = shopInfoMapper.selectById(order.getTakeShopId()); |
| | | if (takeShop != null) { |
| | | takeShopName = takeShop.getName(); |
| | | } |
| | | } |
| | | String driverName = ""; |
| | | if (order.getAcceptDriver() != null) { |
| | | DriverInfo driver = driverInfoMapper.selectById(order.getAcceptDriver()); |
| | | if (driver != null) { |
| | | driverName = driver.getName(); |
| | | } |
| | | } |
| | | |
| | | boolean isLocal = Constants.equalsInteger(order.getType(), Constants.ZERO); |
| | | boolean hasTakeShop = order.getTakeShopId() != null; |
| | | boolean isException = Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE); |
| | | int status = order.getStatus() != null ? order.getStatus() : 0; |
| | | |
| | | // 1. é¨åºå¯å (status >= 2) |
| | | if (status >= Constants.OrderStatus.deposited.getKey() && order.getDepositTime() != null) { |
| | | OrderTimelineVO node = new OrderTimelineVO(); |
| | | node.setTitle("é¨åºã" + depositShopName + "ã确认æ¶ä»¶"); |
| | | node.setTime(order.getDepositTime()); |
| | | node.setImages(getFileUrls(orderId, Constants.FileType.ORDER_DEPOSIT.getKey(), imgPrefix)); |
| | | timeline.add(node); |
| | | } |
| | | |
| | | if (!isLocal) { |
| | | // 2. 叿ºåä»¶ (status >= 4) |
| | | if (status >= Constants.OrderStatus.delivering.getKey() && order.getDriverTakeTime() != null) { |
| | | OrderTimelineVO node = new OrderTimelineVO(); |
| | | node.setTitle("叿ºã" + driverName + "ã确认åä»¶"); |
| | | node.setTime(order.getDriverTakeTime()); |
| | | node.setImages(getFileUrls(orderId, Constants.FileType.DRIVER_TAKE.getKey(), imgPrefix)); |
| | | timeline.add(node); |
| | | } |
| | | |
| | | if (isException) { |
| | | // å¼å¸¸ï¼å
³èæ¥è¯¢å¼å¸¸è®¢å |
| | | Orders exceptionOrder = ordersMapper.selectOne(new QueryWrapper<Orders>().lambda() |
| | | .eq(Orders::getRelationOrderId, orderId) |
| | | .eq(Orders::getExceptionStatus, Constants.ONE) |
| | | .last("limit 1")); |
| | | if (exceptionOrder != null) { |
| | | OrderTimelineVO node = new OrderTimelineVO(); |
| | | node.setTitle("è¡æå·²å¼å¸¸è½¬åï¼æ°è®¢åå·ã" + exceptionOrder.getCode() + "ã"); |
| | | node.setTime(exceptionOrder.getCreateTime()); |
| | | timeline.add(node); |
| | | } |
| | | } else { |
| | | // 3. æ£å¸¸ï¼å¸æºéè¾¾ (status >= 5) |
| | | if(StringUtils.isBlank(takeShopName)){ |
| | | if (status >= Constants.OrderStatus.arrived.getKey() && order.getArriveTime() != null) { |
| | | OrderTimelineVO node = new OrderTimelineVO(); |
| | | node.setTitle("叿ºã" + driverName + "ã确认éè¾¾"); |
| | | node.setTime(order.getArriveTime()); |
| | | node.setImages(getFileUrls(orderId, Constants.FileType.DRIVER_DONE.getKey(), imgPrefix)); |
| | | timeline.add(node); |
| | | } |
| | | } |
| | | // 4. æé¨åºï¼é¨åºæ¶ä»¶ (status >= 5) |
| | | if (hasTakeShop && status >= Constants.OrderStatus.arrived.getKey() && order.getArriveTime() != null) { |
| | | OrderTimelineVO node = new OrderTimelineVO(); |
| | | node.setTitle("é¨åºã" + takeShopName + "ã确认æ¶ä»¶"); |
| | | node.setTime(order.getArriveTime()); |
| | | node.setImages(getFileUrls(orderId, Constants.FileType.ORDER_TAKE.getKey(), imgPrefix)); |
| | | timeline.add(node); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // æåï¼è®¢å宿 (status = 7) |
| | | if (status == Constants.OrderStatus.finished.getKey() && order.getFinishTime() != null) { |
| | | OrderTimelineVO node = new OrderTimelineVO(); |
| | | node.setTitle("订å已宿"); |
| | | node.setTime(order.getFinishTime()); |
| | | timeline.add(node); |
| | | } |
| | | |
| | | timeline.sort((a, b) -> b.getTime() != null && a.getTime() != null ? b.getTime().compareTo(a.getTime()) : 0); |
| | | return timeline; |
| | | } |
| | | |
| | | } |
| | |
| | | Category categoryQuery = new Category(); |
| | | categoryQuery.setType(Constants.FOUR); |
| | | categoryQuery.setDeleted(Constants.ZERO); |
| | | List<Category> allCategories = categoryMapper.selectList(new QueryWrapper<>(categoryQuery)); |
| | | List<Category> allCategories = categoryMapper.selectList(new QueryWrapper<>(categoryQuery) |
| | | .lambda().orderByAsc(Category::getSortnum)); |
| | | Map<Integer, String> categoryNameMap = allCategories.stream() |
| | | .collect(Collectors.toMap(Category::getId, Category::getName)); |
| | | |
| | |
| | | Category categoryQuery = new Category(); |
| | | categoryQuery.setType(Constants.FOUR); |
| | | categoryQuery.setDeleted(Constants.ZERO); |
| | | List<Category> allCategories = categoryMapper.selectList(new QueryWrapper<>(categoryQuery)); |
| | | List<Category> allCategories = categoryMapper.selectList(new QueryWrapper<>(categoryQuery) |
| | | .lambda().orderByAsc(Category::getSortnum)); |
| | | Map<Integer, String> categoryNameMap = allCategories.stream() |
| | | .collect(Collectors.toMap(Category::getId, Category::getName)); |
| | | |
| | |
| | | List<String> tagNames = new ArrayList<>(); |
| | | for (String tagId : locationTagIds.split(",")) { |
| | | Category tag = categoryMapper.selectById(Integer.valueOf(tagId.trim())); |
| | | if (tag != null) { |
| | | if (tag != null && tag.getDeleted() == Constants.ZERO && tag.getStatus() == Constants.ZERO ) { |
| | | tagNames.add(tag.getName()); |
| | | } |
| | | } |
| | |
| | | |
| | | import com.doumee.core.annotation.LoginRequired; |
| | | import com.doumee.core.annotation.LoginShopRequired; |
| | | import com.doumee.core.annotation.LoginDriverRequired; |
| | | import com.doumee.core.annotation.trace.Trace; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.model.ApiResponse; |
| | |
| | | return ApiResponse.success("确认æ¶è´§æå"); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "ä¼åæ¥è¯¢è®¢åæ¶é´è½´") |
| | | @GetMapping("/timeline/{orderId}") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true) |
| | | }) |
| | | public ApiResponse timelineForMember(@PathVariable Integer orderId) { |
| | | return ApiResponse.success(ordersService.getOrderTimeline(orderId)); |
| | | } |
| | | |
| | | @LoginShopRequired |
| | | @ApiOperation(value = "é¨åºæ¥è¯¢è®¢åæ¶é´è½´") |
| | | @GetMapping("/shop/timeline/{orderId}") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true) |
| | | }) |
| | | public ApiResponse timelineForShop(@PathVariable Integer orderId) { |
| | | return ApiResponse.success(ordersService.getOrderTimeline(orderId)); |
| | | } |
| | | |
| | | @LoginDriverRequired |
| | | @ApiOperation(value = "叿ºæ¥è¯¢è®¢åæ¶é´è½´") |
| | | @GetMapping("/driver/timeline/{orderId}") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true) |
| | | }) |
| | | public ApiResponse timelineForDriver(@PathVariable Integer orderId) { |
| | | return ApiResponse.success(ordersService.getOrderTimeline(orderId)); |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | if (Constants.SUCCESS.equals(result.getReturnCode())) { |
| | | switch (result.getAttach()) { |
| | | case "storageOrder": { |
| | | case "storageOrder": |
| | | case "deliveryOrder": { |
| | | ordersService.handleStorageOrderPayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | } |
| | |
| | | ordersService.handleShopDepositPayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | } |
| | | case "overdueFee": { |
| | | case "overdueFee": |
| | | case "deliveryOverdueFee": { |
| | | ordersService.handleOverdueFeePayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | } |
| | |
| | | if (StringUtils.isNotBlank(attach)) { |
| | | switch (attach) { |
| | | case "storageOrder": |
| | | case "deliveryOrder": |
| | | ordersService.handleStorageOrderPayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | case "shopDeposit": |
| | | ordersService.handleShopDepositPayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | case "overdueFee": |
| | | case "deliveryOverdueFee": |
| | | ordersService.handleOverdueFeePayNotify(outTradeNo, paymentNo); |
| | | break; |
| | | } |