Pārlūkot izejas kodu

提现接口、订单接口联调

lixiaolong 1 dienu atpakaļ
vecāks
revīzija
93547339fa

+ 2 - 1
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TOrderController.java

@@ -631,7 +631,8 @@ public class TOrderController extends BaseController {
 
     @ApiOperation("商户收入明细")
     @RequestMapping(value = "wx/myIncomeDetail", method = RequestMethod.GET)
-    public R<Map<YearMonth, List<TOrder>>> myIncomeDetail(TWxUser user, Integer wStatus){
+    public R<List<Map<String, Object>>>
+    myIncomeDetail(TWxUser user, Integer wStatus){
         log.info("商户收入明细,查询开始:{}", LocalDateTime.now());
         return R.ok(orderService.myIncomeDetail(user, wStatus));
     }

+ 34 - 9
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TTxRecordController.java

@@ -16,11 +16,14 @@ import com.ylx.massage.service.TTxRecordService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.YearMonth;
 import java.util.*;
@@ -36,7 +39,8 @@ import java.util.stream.Collectors;
 public class TTxRecordController extends BaseController {
     @Resource
     private TTxRecordService recordService;
-
+    @Value("${percent}")
+    private String percent;
 
     /**
      * 添加申请记录
@@ -140,11 +144,10 @@ public class TTxRecordController extends BaseController {
                 eq(StringUtils.isNotBlank(txRecord.getcPhone()), TTxRecord::getcPhone, txRecord.getcPhone()).
                 eq(StringUtils.isNotBlank(txRecord.getcName()), TTxRecord::getcName, txRecord.getcName()).
                 eq(txRecord.getnStatus() != null, TTxRecord::getnStatus, txRecord.getnStatus()).
-                eq(StringUtils.isNotBlank(txRecord.getcOpenId()), TTxRecord::getcOpenId, txRecord.getcOpenId());
-        if(txRecord.getStartTime() != null && txRecord.getEndTime() != null) {
-            tTxRecordLambdaQueryWrapper.ge(TTxRecord::getDtCreateTime, txRecord.getStartTime()).
-                        le(StringUtils.isNotBlank(txRecord.getcOpenId()), TTxRecord::getcOpenId, txRecord.getcOpenId());
-        }
+                eq(StringUtils.isNotBlank(txRecord.getcOpenId()), TTxRecord::getcOpenId, txRecord.getcOpenId()).
+                ge(StringUtils.isNotBlank(txRecord.getStartTime()), TTxRecord::getDtCreateTime, txRecord.getStartTime()).
+                le(StringUtils.isNotBlank(txRecord.getEndTime()), TTxRecord::getDtCreateTime, txRecord.getEndTime());
+
         tTxRecordLambdaQueryWrapper.orderByDesc(TTxRecord::getDtCreateTime);
         if(null != this.getDeptId() && this.getDeptId() != 100){
             tTxRecordLambdaQueryWrapper.eq(TTxRecord::getDeptId,this.getDeptId());
@@ -160,15 +163,24 @@ public class TTxRecordController extends BaseController {
      */
     @ApiOperation("商家获取提现记录")
     @RequestMapping(value = "wx/select", method = RequestMethod.GET)
-    public R<Map<YearMonth, List<TTxRecord>>> wxSelect(TTxRecord txRecord) {
+    public R<List<Map<String, Object>>> wxSelect(TTxRecord txRecord) {
         log.info("商家获取提现记录,查询开始:{}", LocalDateTime.now());
         LambdaQueryWrapper<TTxRecord> tTxRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         tTxRecordLambdaQueryWrapper.eq(null != txRecord.getcOpenId(), TTxRecord::getcOpenId, txRecord.getcOpenId()).
+                eq(txRecord.getnStatus()!=null,TTxRecord::getnStatus,txRecord.getnStatus()).
                 orderByDesc(TTxRecord::getDtCreateTime);
         List<TTxRecord> listRecord = recordService.list(tTxRecordLambdaQueryWrapper);
         Map<YearMonth, List<TTxRecord>> sortedMonthlyGroupedOrders = new HashMap<>();
+        List<Map<String, Object>> listResult = new ArrayList<>();
         if (CollectionUtil.isNotEmpty(listRecord)) {
-
+            listRecord.forEach(record -> {
+                //提现到账金额
+                record.setrPrice(record.getdPrice().multiply(record.getPercent()).
+                        setScale(2, RoundingMode.DOWN));
+                //提现代扣税额
+                record.setWPrice(record.getdPrice().subtract(record.getrPrice()).
+                        setScale(2, RoundingMode.DOWN));
+            });
             Map<YearMonth, List<TTxRecord>> map = listRecord.stream()
                     .collect(Collectors.groupingBy(
                             order -> YearMonth.from(order.getDtCreateTime()),
@@ -181,7 +193,20 @@ public class TTxRecordController extends BaseController {
                     ));
             sortedMonthlyGroupedOrders = new TreeMap<>(Comparator.reverseOrder());
             sortedMonthlyGroupedOrders.putAll(map);
+
+
+            // 遍历原始Map,并为每个键生成新的键
+
+            for (Map.Entry<YearMonth, List<TTxRecord>> entry : sortedMonthlyGroupedOrders.entrySet()) {
+                YearMonth yearMonth = entry.getKey();
+                List<TTxRecord> tTxRecordList = entry.getValue();
+                Map<String, Object> newMap = new HashMap<>();
+                // 将新键和对应的值放入新的Map中
+                newMap.put("date", yearMonth);
+                newMap.put("records", tTxRecordList);
+                listResult.add(newMap);
+            }
         }
-        return R.ok(sortedMonthlyGroupedOrders);
+        return R.ok(listResult);
     }
 }

+ 12 - 1
nightFragrance-framework/src/main/java/com/ylx/framework/web/service/WxTokenService.java

@@ -52,6 +52,11 @@ public class WxTokenService {
     @Autowired
     private RedisCache redisCache;
 
+    @Value("${spring.profiles.active}")
+    private String env;
+
+    private static final String DEV = "dev";
+
     /**
      * 获取用户身份信息
      *
@@ -68,6 +73,11 @@ public class WxTokenService {
                 // 解析对应的权限以及用户信息
                 String uuid = (String) claims.get(wx_prefix);
                 String userKey = getTokenKey(uuid);
+                log.info("userKey: {}", userKey);
+                //测试环境使用缓存 WxLoginUser的信息直接返回
+                if(DEV.equals(env)) {
+                    userKey = "tf:e9df2769-5626-45f0-97f9-05a158fc0a6d";
+                }
                 WxLoginUser user = redisCache.getCacheObject(userKey);
                 log.info("user对象的值:{}", JSON.toJSONString(user));
                 return user;
@@ -204,6 +214,7 @@ public class WxTokenService {
      */
     public String getToken(HttpServletRequest request) {
         String token = request.getHeader(header);
+        log.info("weixinToken:{}", token);
         if (StringUtils.isNotEmpty(token) && token.startsWith(wx_prefix)) {
             token = token.replace(wx_prefix, "");
             return token;
@@ -213,7 +224,7 @@ public class WxTokenService {
     }
 
     private String getTokenKey(String uuid) {
-        return "tf: " + uuid;
+        return "tf:" + uuid;
     }
 }
 

+ 49 - 10
nightFragrance-massage/src/main/java/com/ylx/massage/domain/TTxRecord.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ylx.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -68,6 +69,30 @@ public class TTxRecord implements Serializable {
     @ApiModelProperty("提现金额")
     private BigDecimal dPrice;
 
+    /**
+     * 提现到账金额
+     */
+    @TableField("r_price")
+    @Excel(name = "提现到账金额")
+    @ApiModelProperty("提现到账金额")
+    private BigDecimal rPrice;
+
+    /**
+     * 提现代扣税额
+     */
+    @TableField(exist = false)
+    @Excel(name = "代扣税额")
+    @ApiModelProperty("代扣税额")
+    private BigDecimal wPrice;
+
+    /**
+     * 税率
+     */
+    @TableField("percent")
+    @Excel(name = "税率")
+    @ApiModelProperty("税率")
+    private BigDecimal percent;
+
     /**
      * 驳回说明
      */
@@ -135,6 +160,7 @@ public class TTxRecord implements Serializable {
     @Excel(name = "创建时间")
     @TableField("dt_create_time")
     @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
     private LocalDateTime dtCreateTime;
 
     @ApiModelProperty("是否删除0否1是")
@@ -143,11 +169,11 @@ public class TTxRecord implements Serializable {
 
     @TableField(exist = false)
     @ApiModelProperty("开始时间")
-    private LocalDateTime startTime ;
+    private String startTime ;
 
     @TableField(exist = false)
     @ApiModelProperty("结束时间")
-    private LocalDateTime endTime;
+    private String endTime;
 
     public String getcId() {
         return cId;
@@ -217,31 +243,44 @@ public class TTxRecord implements Serializable {
         return dtCreateTime;
     }
 
-    public void setDtCreateTime(LocalDateTime dtCreateTime) {
-        this.dtCreateTime = dtCreateTime;
-    }
-
-    public LocalDateTime getStartTime() {
+    public String getStartTime() {
         return startTime;
     }
 
-    public void setStartTime(LocalDateTime startTime) {
+    public void setStartTime(String startTime) {
         this.startTime = startTime;
     }
 
-    public LocalDateTime getEndTime() {
+    public String getEndTime() {
         return endTime;
     }
 
-    public void setEndTime(LocalDateTime endTime) {
+    public void setEndTime(String endTime) {
         this.endTime = endTime;
     }
 
     public String getReject() {
         return reject;
+
     }
 
     public void setReject(String reject) {
         this.reject = reject;
     }
+
+    public BigDecimal getPercent() {
+        return percent;
+    }
+
+    public void setPercent(BigDecimal percent) {
+        this.percent = percent;
+    }
+
+    public BigDecimal getrPrice() {
+        return rPrice;
+    }
+
+    public void setrPrice(BigDecimal rPrice) {
+        this.rPrice = rPrice;
+    }
 }

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/service/TOrderService.java

@@ -149,5 +149,5 @@ public interface TOrderService extends IService<TOrder> {
      * @param wStatus
      * @return
      */
-    public Map<YearMonth, List<TOrder>> myIncomeDetail(TWxUser user, Integer wStatus);
+    public List<Map<String, Object>> myIncomeDetail(TWxUser user, Integer wStatus);
 }

+ 23 - 15
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TOrderServiceImpl.java

@@ -1517,6 +1517,7 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         if(CollectionUtil.isNotEmpty(orderList)){
             // 所有订单的总金额
             BigDecimal tAmount = orderList.stream()
+                    .filter(order -> (order.getTotalPrice()!=null && order.getTotalPrice().compareTo(BigDecimal.ZERO) > 0))
                     .map(TOrder::getTotalPrice)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             tAmount = tAmount.multiply(new BigDecimal(hPercent)).setScale(2, RoundingMode.DOWN);
@@ -1535,15 +1536,21 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
             result.put("tAmount", tAmount.toPlainString());
             result.put("yAmount", yAmount.toPlainString());
             result.put("wAmount", wAmount.toPlainString());
+
         }
         List<TTxRecord> tTxRecords = recordService.tTxRecordList(user.getcOpenid());
         if(CollectionUtil.isNotEmpty(tTxRecords)){
             // 已提现
             BigDecimal gAmount = tTxRecords.stream()
+                    .filter(order -> (order.getdPrice()!=null && order.getdPrice().compareTo(BigDecimal.ZERO) > 0))
                     .map(TTxRecord::getdPrice)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             result.put("gAmount", gAmount.toPlainString());
         }
+        result.put("tAmount", StringUtils.isNotBlank(result.get("tAmount"))?result.get("tAmount"):"0.00");
+        result.put("yAmount", StringUtils.isNotBlank(result.get("yAmount"))?result.get("yAmount"):"0.00");
+        result.put("wAmount", StringUtils.isNotBlank(result.get("wAmount"))?result.get("wAmount"):"0.00");
+        result.put("gAmount", StringUtils.isNotBlank(result.get("gAmount"))?result.get("gAmount"):"0.00");
         return result;
     }
 
@@ -1553,19 +1560,20 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
      * @param wStatus
      * @return
      */
-    public Map<YearMonth, List<TOrder>> myIncomeDetail(TWxUser user, Integer wStatus) {
+    public List<Map<String, Object>> myIncomeDetail(TWxUser user, Integer wStatus) {
         List<TOrder> orderList = getTOrders(user, wStatus);
         Map<YearMonth, List<TOrder>> sortedMonthlyGroupedOrders = new HashMap<>();
+        List<Map<String, Object>> listResult = new ArrayList<>();
         if(CollectionUtil.isNotEmpty(orderList)){
             orderList.forEach(item->{
                 //商户应收金额 不进行四舍五入
-                item.setrPrice(String.valueOf(item.getTotalPrice().multiply(new BigDecimal(hPercent)).
-                        setScale(2, RoundingMode.DOWN)));
+                if(!Objects.isNull(item.getTotalPrice())){
+                    item.setrPrice(String.valueOf(item.getTotalPrice().multiply(new BigDecimal(hPercent)).
+                            setScale(2, RoundingMode.DOWN)));
+                }
                 item.setProjectNames(getProjectNames(item));
             });
 
-//        Map<YearMonth, List<TOrder>> monthlyGroupedOrders = orderList.stream()
-//                .collect(Collectors.groupingBy(o -> YearMonth.from(o.getEndTime())));
             Map<YearMonth, List<TOrder>> monthlyGroupedOrders = orderList.stream()
                     .collect(Collectors.groupingBy(
                             order -> YearMonth.from(order.getDtCreateTime()),
@@ -1578,18 +1586,18 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
                     ));
             sortedMonthlyGroupedOrders = new TreeMap<>(Comparator.reverseOrder());
             sortedMonthlyGroupedOrders.putAll(monthlyGroupedOrders);
-            // Sort the map by YearMonth
-//            monthlyGroupedOrders.entrySet().stream()
-//                    .sorted(Map.Entry.comparingByKey());
-                    //.forEach(entry -> {
-                    //    System.out.println("Month: " + entry.getKey());
-                    //    entry.getValue().forEach(od ->
-                    //            System.out.println("  Order ID: " + od.getOrderNo() + ", Amount: " + od.getTotalPrice()));
-                    //});
-
+            for (Map.Entry<YearMonth, List<TOrder>> entry : sortedMonthlyGroupedOrders.entrySet()) {
+                YearMonth yearMonth = entry.getKey();
+                List<TOrder> tTxRecordList = entry.getValue();
+                Map<String, Object> newMap = new HashMap<>();
+                // 将新键和对应的值放入新的Map中
+                newMap.put("date", yearMonth);
+                newMap.put("records", tTxRecordList);
+                listResult.add(newMap);
+            }
         }
 
-        return  sortedMonthlyGroupedOrders;
+        return listResult;
     }
 
     /**