From df9bed358a6c763e6efeef130307c54162bb9630 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 24 Sep 2021 18:44:24 +0800
Subject: [PATCH] add money flows

---
 src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java           |   38 +++++++++
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java       |   11 ++
 src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java                     |    2 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   27 ++++--
 src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java                         |   26 ++++++
 src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java                           |   40 ++++++++++
 src/main/resources/mapper/modules/MallMoneyFlowMapper.xml                       |   18 ++++
 src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java            |    6 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java               |    3 
 src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java                         |    2 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java    |   33 +++++++-
 11 files changed, 194 insertions(+), 12 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
new file mode 100644
index 0000000..efad520
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -0,0 +1,38 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+/**
+ * @author wzy
+ * @date 2021-09-24
+ * 1-分红收入 2-业绩奖励 3-订单支付 4-退款 5-转账
+ **/
+@Getter
+public enum MoneyFlowTypeEnum {
+    /**
+     * 分红
+     */
+    BONUS(1),
+    /**
+     * 业绩
+     */
+    ACHIEVE(2),
+    /**
+     * 支付
+     */
+    PAY(3),
+    /**
+     * 退款
+     */
+    REFUND(4),
+    /**
+     * 转账
+     */
+    TRANSFER(5);
+
+    private final int value;
+
+    MoneyFlowTypeEnum(int value) {
+        this.value = value;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index 5a3d2de..e1a238d 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -3,9 +3,11 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.mall.dto.ForgetPwdDto;
 import cc.mrbird.febs.mall.dto.ModifyMemberInfoDto;
+import cc.mrbird.febs.mall.dto.MoneyFlowDto;
 import cc.mrbird.febs.mall.dto.TeamListDto;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.vo.MallMemberVo;
+import cc.mrbird.febs.mall.vo.MoneyFlowVo;
 import cc.mrbird.febs.mall.vo.TeamListVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -69,4 +71,13 @@
     public FebsResponse teamList(@RequestBody TeamListDto teamListDto) {
         return memberService.teamList(teamListDto);
     }
+
+    @ApiOperation(value = "资金流水列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = MoneyFlowVo.class)
+    })
+    @PostMapping(value = "/moneyFlow")
+    public FebsResponse moneyFlow(@RequestBody MoneyFlowDto moneyFlowDto) {
+        return null;
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java
new file mode 100644
index 0000000..1ceb0a8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-24
+ **/
+@Data
+@ApiModel(value = "MoneyFlowDto", description = "资金流水接收参数类")
+public class MoneyFlowDto {
+
+    @ApiModelProperty(value = "一页多少个", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNum;
+
+    @ApiModelProperty(value = "类型 1-全部 2-支出 3-收入")
+    private Integer type;
+
+    @ApiModelProperty(hidden = true)
+    private Long memberId;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
index 1145624..946f33f 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
@@ -27,6 +27,8 @@
 
     private String description;
 
+    private String remark;
+
     private Long rtMemberId;
 
     /**
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
index 026adac..2a1f6e4 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
@@ -1,8 +1,10 @@
 package cc.mrbird.febs.mall.mapper;
 
+import cc.mrbird.febs.mall.dto.MoneyFlowDto;
 import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.entity.MallMoneyFlow;
 import cc.mrbird.febs.mall.vo.AdminMallMoneyFlowVo;
+import cc.mrbird.febs.mall.vo.MoneyFlowVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -12,4 +14,5 @@
 
     IPage<AdminMallMoneyFlowVo> selectMoneyFlowInPage(Page<AdminMallMoneyFlowVo> page, @Param("record")MallMember mallMember);
 
+    IPage<MoneyFlowVo> selectApiMoneyFlowInPage(IPage<MoneyFlowVo> page, @Param("record") MoneyFlowDto moneyFlowDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
index 8871a2b..03db35f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -5,6 +5,8 @@
 import cc.mrbird.febs.mall.entity.MallMember;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.math.BigDecimal;
+
 public interface IApiMallMemberService extends IService<MallMember> {
     FebsResponse register(RegisterDto registerDto);
 
@@ -23,4 +25,8 @@
     FebsResponse modifyMemberInfo(ModifyMemberInfoDto modifyMemberInfoDto);
 
     FebsResponse teamList(TeamListDto teamListDto);
+
+    FebsResponse moneyFlows(MoneyFlowDto moneyFlowDto);
+
+    void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description, String remark, Long rtMemberId, Integer status);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index ae844f8..9a61d7f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -10,14 +10,13 @@
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.entity.MallMemberWallet;
+import cc.mrbird.febs.mall.entity.MallMoneyFlow;
 import cc.mrbird.febs.mall.entity.MallShoppingCart;
-import cc.mrbird.febs.mall.mapper.MallMemberMapper;
-import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper;
-import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
-import cc.mrbird.febs.mall.mapper.MallShoppingCartMapper;
+import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.service.ICommonService;
 import cc.mrbird.febs.mall.vo.MallMemberVo;
+import cc.mrbird.febs.mall.vo.MoneyFlowVo;
 import cc.mrbird.febs.mall.vo.TeamListVo;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.IdUtil;
@@ -27,6 +26,8 @@
 import cn.hutool.crypto.asymmetric.KeyType;
 import cn.hutool.crypto.asymmetric.RSA;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -53,6 +54,7 @@
     private final RedisUtils redisUtils;
     private final MallOrderInfoMapper mallOrderInfoMapper;
     private final MallShoppingCartMapper mallShoppingCartMapper;
+    private final MallMoneyFlowMapper mallMoneyFlowMapper;
 
     @Value("${spring.profiles.active}")
     private String active;
@@ -290,4 +292,27 @@
         list.add(0, own);
         return new FebsResponse().success().data(list);
     }
+
+    @Override
+    public FebsResponse moneyFlows(MoneyFlowDto moneyFlowDto) {
+        IPage<MoneyFlowVo> page = new Page<>(moneyFlowDto.getPageNum(), moneyFlowDto.getPageSize());
+        Long id = LoginUserUtil.getLoginUser().getId();
+        moneyFlowDto.setMemberId(id);
+        IPage<MoneyFlowVo> pages = mallMoneyFlowMapper.selectApiMoneyFlowInPage(page, moneyFlowDto);
+        return new FebsResponse().success().data(pages);
+    }
+
+    @Override
+    public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description, String remark, Long rtMemberId, Integer status) {
+        MallMoneyFlow flow = new MallMoneyFlow();
+        flow.setMemberId(memberId);
+        flow.setAmount(amount);
+        flow.setType(type);
+        flow.setOrderNo(orderNo);
+        flow.setDescription(description);
+        flow.setRemark(remark);
+        flow.setRtMemberId(rtMemberId);
+        flow.setStatus(status);
+        mallMoneyFlowMapper.insert(flow);
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index b81522d..70da7dc 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -1,5 +1,6 @@
 package cc.mrbird.febs.mall.service.impl;
 
+import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
 import cc.mrbird.febs.common.enumerates.OrderRefundStatusEnum;
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
 import cc.mrbird.febs.common.exception.FebsException;
@@ -12,8 +13,10 @@
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
+import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
+import cc.mrbird.febs.mall.service.MallMemberService;
 import cc.mrbird.febs.mall.vo.OrderDetailVo;
 import cc.mrbird.febs.mall.vo.OrderListVo;
 import cc.mrbird.febs.mall.vo.OrderRefundVo;
@@ -55,6 +58,7 @@
     private final MallOrderRefundMapper mallOrderRefundMapper;
     private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper;
     private final MallShoppingCartMapper mallShoppingCartMapper;
+    private final IApiMallMemberService memberService;
     private final RedisUtils redisUtils;
 
     @Override
@@ -161,19 +165,32 @@
             throw new FebsException("订单状态不能支付");
         }
 
+        String orderNo = "";
         switch (payOrderDto.getType()) {
             case "1":
                 // TODO 微信支付
+                orderInfo.setPayMethod("微信支付");
                 break;
             case "2":
                 // TODO 支付宝支付
+                orderInfo.setPayMethod("支付宝支付");
                 break;
             case "3":
-                return balancePay(orderInfo, payOrderDto.getTradePwd());
+                orderNo = balancePay(orderInfo, payOrderDto.getTradePwd());
+
+                orderInfo.setPayMethod("积分支付");
             default:
 
         }
-        return "";
+
+        orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+        orderInfo.setPayTime(new Date());
+        orderInfo.setPayOrderNo(orderInfo.getOrderNo());
+        orderInfo.setPayResult("1");
+        this.baseMapper.updateById(orderInfo);
+
+        memberService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null);
+        return orderNo;
     }
 
     private String balancePay(MallOrderInfo orderInfo, String tradePwd) {
@@ -193,12 +210,6 @@
 
         memberWalletService.reduceBalance(orderInfo.getAmount(), mallMember.getId());
 
-        orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
-        orderInfo.setPayTime(new Date());
-        orderInfo.setPayMethod("积分支付");
-        orderInfo.setPayOrderNo(orderInfo.getOrderNo());
-        orderInfo.setPayResult("1");
-        this.baseMapper.updateById(orderInfo);
         return orderInfo.getOrderNo();
     }
 
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java
new file mode 100644
index 0000000..b961ce3
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java
@@ -0,0 +1,40 @@
+package cc.mrbird.febs.mall.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author wzy
+ * @date 2021-09-24
+ **/
+@Data
+@ApiModel(value = "MoneyFlowVo", description = "资金列表返回参数类")
+public class MoneyFlowVo {
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "金额,有正负")
+    private BigDecimal amount;
+
+    @ApiModelProperty(value = "类型 1-分红收入 2-业绩奖励 3-订单支付 4-退款 5-转账")
+    private Integer type;
+
+    @ApiModelProperty(value = "对方手机号")
+    private String phone;
+
+    @ApiModelProperty(value = "代理等级")
+    private String memberLevel;
+
+    @ApiModelProperty(value = "提现状态 1-提现中2-成功 3-拒绝")
+    private Integer status;
+
+    @ApiModelProperty(value = "时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
index 4a88c14..4eacd0c 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
@@ -1,5 +1,6 @@
 package cc.mrbird.febs.mall.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -23,6 +24,7 @@
     private String orderNo;
 
     @ApiModelProperty(value = "下单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date orderTime;
 
     @ApiModelProperty(value = "支付方式")
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index 9dfef8f..f5e1eb1 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -7,4 +7,22 @@
         order by a.CREATED_TIME desc
     </select>
 
+    <select id="selectApiMoneyFlowInPage" resultType="cc.mrbird.febs.mall.vo.MoneyFlowVo">
+        select
+            a.*,
+            b.phone
+        from mall_money_flow a
+            inner join mall_member on a.rt_member_id=b.member_id
+        <where>
+            <if test="record.type == 2">
+                and a.amount > 0
+            </if>
+            <if test="record.type == 3">
+                and 0 > a.amount
+            </if>
+            <if test="record.memberId != null">
+                and a.member_id=#{record.memberId}
+            </if>
+        </where>
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1