Browse Source

维沙组织和机构逻辑修改part1

Aslee 4 years ago
parent
commit
3abfa2f22a

+ 12 - 0
src/main/java/com/caimei/controller/OrderSubmitApi.java

@@ -146,4 +146,16 @@ public class OrderSubmitApi {
         log.info("****** 提交订单参数:【机构自己下单】:" + params);
         return orderSubmitService.orderSubmit(clubUserId, addressId, orderInfo, payInfo, orderInvoice);
     }
+
+
+    /**
+     * 余额抵扣
+     */
+    @PostMapping("/balanceDeduction")
+    public ResponseJson<Map<String, Object>> balanceDeduction(Integer orderId) {
+        if (null == orderId) {
+            return ResponseJson.error("参数异常", null);
+        }
+        return orderSubmitService.balanceDeduction(orderId);
+    }
 }

+ 32 - 0
src/main/java/com/caimei/mapper/UserMapper.java

@@ -0,0 +1,32 @@
+package com.caimei.mapper;
+
+import com.caimei.model.po.*;
+import com.caimei.model.vo.*;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Aslee
+ * @date : 2021/6/30
+ */
+@Mapper
+public interface UserMapper {
+    /**
+     * 更新余额抵扣
+     * @param userMoney 用户余额
+     * @param ableUserMoney 用户可用余额
+     * @param userID 用户id
+     */
+    void updateMoney(BigDecimal userMoney, BigDecimal ableUserMoney, Integer userID);
+
+    /**
+     * 保存余额钉扣记录
+     * @param balanceRecord
+     */
+    void insertBalanceRecord(BalanceRecordPo balanceRecord);
+}

+ 76 - 0
src/main/java/com/caimei/model/po/BalanceRecordPo.java

@@ -0,0 +1,76 @@
+package com.caimei.model.po;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * cm_user_balance_record
+ *
+ * @author
+ */
+@Data
+public class BalanceRecordPo implements Serializable {
+    private Long id;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 收支类型:1收入,2支出
+     */
+    private String type;
+
+    /**
+     * 余额类型:1余额抵扣,2多收退款到余额,3申请退款,4余额充值,5余额提现,6订金订单充值,7余额订单充值,8订金订单退款,9余额订单退款
+     */
+    private String balanceType;
+
+    /**
+     * 添加时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date addDate;
+
+    /**
+     * 金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 主订单ID(适用余额类型1,3[类型为3多次退款存在相同记录ID则需通过退款ID唯一区分])
+     */
+    private Long orderId;
+
+    /**
+     * 收款ID(适用余额类型2)
+     */
+    private Long receiptId;
+
+    /**
+     * 退货退款ID(适用余额类型3)
+     */
+    private Long returnedId;
+
+    /**
+     * 用户提现ID对应表(cm_user_balance_withdrawals)
+     */
+    private Long withdrawalsId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 删除标记 0 否,其余是
+     */
+    private String delFlag;
+
+    private static final long serialVersionUID = 1L;
+}

+ 8 - 0
src/main/java/com/caimei/service/OrderService.java

@@ -1,6 +1,7 @@
 package com.caimei.service;
 
 import com.caimei.model.ResponseJson;
+import com.caimei.model.vo.DiscernReceiptVo;
 import com.caimei.model.vo.LogisticsBatchVo;
 import com.caimei.model.vo.OrderVo;
 import com.github.pagehelper.PageInfo;
@@ -112,4 +113,11 @@ public interface OrderService {
      * @return
      */
     ResponseJson<String> deleteSearchHistory(Integer organizeId);
+
+    /**
+     * 订单收款记录
+     * @param order
+     * @return
+     */
+    List<DiscernReceiptVo> getDiscernReceipt(OrderVo order);
 }

+ 23 - 0
src/main/java/com/caimei/service/OrderSubmitService.java

@@ -2,6 +2,7 @@ package com.caimei.service;
 
 import com.caimei.model.ResponseJson;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -32,4 +33,26 @@ public interface OrderSubmitService {
      * @return
      */
     ResponseJson<Map<String, String>> orderSubmit(Integer clubUserId, Integer addressId, List<Map<String, Object>> orderInfo, Map<String, Object> payInfo, Map<String, Object> orderInvoice);
+
+    /**
+     * 订单余额抵扣
+     * @param orderId 订单id
+     * @return
+     */
+    ResponseJson<Map<String, Object>> balanceDeduction(Integer orderId);
+
+    /**
+     * 保存余额抵扣记录
+     * @param balancePayFee 余额支付金额
+     * @param orderId       订单id
+     * @param userId        用户id
+     */
+    void saveBalanceRecord(BigDecimal balancePayFee, Integer orderId, Integer userId);
+
+    /**
+     * 保存收款记录
+     * @param balancePayFee 余额支付金额
+     * @param orderId       订单id
+     */
+    void saveDiscernReceipt(BigDecimal balancePayFee, Integer orderId);
 }

+ 1 - 0
src/main/java/com/caimei/service/impl/OrderServiceImpl.java

@@ -415,6 +415,7 @@ public class OrderServiceImpl implements OrderService {
     /**
      * 支付金额,待付金额
      */
+    @Override
     public List<DiscernReceiptVo> getDiscernReceipt(OrderVo order) {
         //支付记录
         List<DiscernReceiptVo> discernReceiptList = orderMapper.findDiscernReceipt(order.getOrderId());

+ 200 - 12
src/main/java/com/caimei/service/impl/OrderSubmitServiceImpl.java

@@ -1,14 +1,10 @@
 package com.caimei.service.impl;
 
-import com.caimei.mapper.OrderSubmitMapper;
-import com.caimei.mapper.ProductMapper;
-import com.caimei.mapper.ShoppingCartMapper;
+import com.caimei.mapper.*;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.po.*;
-import com.caimei.model.vo.AddressVo;
-import com.caimei.model.vo.CartProductVo;
-import com.caimei.model.vo.LadderPriceVo;
-import com.caimei.model.vo.ShopVo;
+import com.caimei.model.vo.*;
+import com.caimei.service.OrderService;
 import com.caimei.service.OrderSubmitService;
 import com.caimei.service.ShoppingCartService;
 import com.caimei.util.MathUtil;
@@ -16,6 +12,7 @@ import com.caimei.util.OrderNoUtils;
 import com.caimei.util.ProductUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -45,18 +42,32 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
     private ProductMapper productMapper;
     @Resource
     private ShoppingCartMapper shoppingCartMapper;
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private OrderMapper orderMapper;
+    @Resource
+    private PayOrderMapper payOrderMapper;
     @Value("${caimei.oldapi}")
     private String domain;
 
+    private OrderService orderService;
+
+    @Autowired
+    public void setOrderService(OrderService orderService) {
+        this.orderService = orderService;
+    }
+
+
     @Override
     public ResponseJson<Map<String, Object>> orderConfirm(String productIds, Integer userId) {
         Map<String, Object> confirmData = new HashMap<>(5);
         if (userId != null) {
             log.info("<<<<< 结算订单 >>>>>");
             //商品总金额
-            AtomicReference<BigDecimal> totalPrice = new AtomicReference<BigDecimal>(BigDecimal.ZERO);
+            AtomicReference<BigDecimal> totalPrice = new AtomicReference<>(BigDecimal.ZERO);
             //促销满减
-            AtomicReference<BigDecimal> totalFullReduction = new AtomicReference<BigDecimal>(BigDecimal.ZERO);
+            AtomicReference<BigDecimal> totalFullReduction = new AtomicReference<>(BigDecimal.ZERO);
             String[] productId = productIds.split(",");
             List<Integer> shopIds = new ArrayList<>();
             List<CartProductVo> productGifts = new ArrayList<>();
@@ -123,6 +134,16 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
         if (null == user) {
             return ResponseJson.error("用户信息异常", null);
         }
+        // 用户余额
+        BigDecimal ableUserMoney = user.getAbleUserMoney();
+        BigDecimal userMoney = user.getUserMoney();
+        Integer balancePayFlag = (Integer) payInfo.get("balancePayFlag");
+        if (1 == balancePayFlag && null != ableUserMoney) {
+            // 使用余额
+            if (MathUtil.compare(ableUserMoney, BigDecimal.ZERO) == 0) {
+                return ResponseJson.error("用户可用余额为0",null);
+            }
+        }
         // 商品总数量
         Integer productCount = 0;
         // 赠品数量
@@ -137,6 +158,8 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
         BigDecimal payTotalFee = BigDecimal.ZERO;
         // 真实支付金额(订单总额减去抵扣的账户余额)
         BigDecimal payableAmount = BigDecimal.ZERO;
+        // 余额支付金额
+        BigDecimal balancePayFee = BigDecimal.ZERO;
         // 促销满减优惠
         BigDecimal promotionFullReduction = BigDecimal.ZERO;
         // 运费
@@ -405,9 +428,39 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
         // 订单状态
         order.setStatus("11");
         order.setConfirmTime(curDateStr);
-
+        // 是否完成支付(默认不是,只有余额抵扣才算)
+        boolean isPaySuccessFlag = false;
+        // 余额支付标识,0不使用,1使用
+        if (1 == balancePayFlag) {
+            // 部分抵扣
+            if (MathUtil.compare(payTotalFee, ableUserMoney) > 0) {
+                balancePayFee = ableUserMoney;
+                payableAmount = MathUtil.sub(payTotalFee, balancePayFee);
+                // 余额抵扣用完
+                user.setAbleUserMoney(new BigDecimal(0));
+                // 部收款待发货
+                order.setStatus("21");
+                user.setUserMoney(MathUtil.sub(userMoney, balancePayFee));
+                order.setReceiptStatus("2");
+            } else {
+                // 全部用余额抵扣, 直接变成支付完成
+                balancePayFee = payTotalFee;
+                payableAmount = BigDecimal.ZERO;
+                user.setAbleUserMoney(MathUtil.sub(ableUserMoney, balancePayFee));
+                // 已收款待发货
+                order.setStatus("31");
+                user.setUserMoney(MathUtil.sub(userMoney, balancePayFee));
+                order.setReceiptStatus("3");
+                order.setPayFlag("1");
+                isPaySuccessFlag = true;
+            }
+            userMapper.updateMoney(user.getUserMoney(), user.getAbleUserMoney(), user.getUserID());
+            log.info(">>>>>更新余额抵扣:[userMoney:" + user.getUserMoney() + "] ,ableUserMoney:" + user.getAbleUserMoney());
+            // 支付时间
+            order.setPayTime(curDateStr);
+        }
         // 余额支付金额
-        order.setBalancePayFee(BigDecimal.ZERO);
+        order.setBalancePayFee(balancePayFee);
         // 实际支付金额(商品金额+运费-余额抵扣)
         order.setPayableAmount(payableAmount);
         // 售后条款
@@ -542,6 +595,16 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
             return ResponseJson.error("订单地址异常", null);
         }
 
+        /*
+         *保存余额到余额收支记录
+         */
+        if (1 == balancePayFlag && MathUtil.compare(balancePayFee, 0) > 0) {
+            // 余额支付标识,0不使用,1使用
+            saveBalanceRecord(balancePayFee, order.getOrderID().intValue(), user.getUserID());
+            //保存余额到收款记录
+            saveDiscernReceipt(balancePayFee, order.getOrderID().intValue());
+        }
+
         /*
          * 保存 订单发票信息
          */
@@ -573,7 +636,40 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
         info.put("payTotalFee", String.valueOf(order.getPayTotalFee()));
         //真实需要付款金额
         info.put("payableAmount", String.valueOf(order.getPayableAmount()));
-        return ResponseJson.success(info);
+        if (isPaySuccessFlag) {
+            // 余额抵扣成功
+            // 1提交成功[且支付完成]
+            info.put("code", "1");
+            info.put("msg", "提交成功且已支付");
+            return ResponseJson.success(info);
+        } else {
+            info.put("code", "2");
+            info.put("msg", "提交成功但未支付");
+            return ResponseJson.success(info);
+        }
+    }
+
+    /**
+     * 新增余额抵扣收支记录
+     *
+     * @param balancePayFee 余额支付金额
+     * @param orderId       订单id
+     * @param userId        用户id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void saveBalanceRecord(BigDecimal balancePayFee, Integer orderId, Integer userId) {
+        //保存余额到余额收支记录
+        BalanceRecordPo balanceRecord = new BalanceRecordPo();
+        balanceRecord.setUserId(userId.longValue());
+        balanceRecord.setType("2");
+        balanceRecord.setBalanceType("1");
+        balanceRecord.setAddDate(new Date());
+        balanceRecord.setAmount(balancePayFee);
+        balanceRecord.setOrderId(orderId.longValue());
+        balanceRecord.setDelFlag("0");
+        userMapper.insertBalanceRecord(balanceRecord);
+        log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])id:" + balanceRecord.getId());
     }
 
     /**
@@ -1056,4 +1152,96 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
         shopOrderIds += (("".equals(shopOrderIds) ? "" : ",") + newShopOrder.getShopOrderID());
         return shopOrderIds;
     }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ResponseJson<Map<String, Object>> balanceDeduction(Integer orderId) {
+        OrderVo order = orderMapper.findOrder(orderId);
+        orderService.getDiscernReceipt(order);
+        UserPo user = orderSubmitMapper.findUser(order.getUserId().intValue());
+        //本次余额抵扣金额
+        BigDecimal balancePayFee = BigDecimal.ZERO;
+        if (MathUtil.compare(user.getAbleUserMoney(), 0) > 0) {
+            if (MathUtil.compare(user.getAbleUserMoney(), order.getPendingPayments()) < 0) {
+                if (!"0".equals(order.getStatus())) {
+                    //待确认状态,不修改订单状态
+                    if ("1".equals(order.getSendOutStatus())) {
+                        order.setStatus("21");
+                    } else if ("2".equals(order.getSendOutStatus())) {
+                        order.setStatus("22");
+                    } else {
+                        order.setStatus("23");
+                    }
+                }
+                order.setReceiptStatus("2");
+                balancePayFee = user.getAbleUserMoney();
+            } else {
+                if (!"0".equals(order.getStatus())) {
+                    if ("1".equals(order.getSendOutStatus())) {
+                        order.setStatus("31");
+                    } else if ("2".equals(order.getSendOutStatus())) {
+                        order.setStatus("32");
+                    } else {
+                        order.setStatus("33");
+                    }
+                }
+                order.setReceiptStatus("3");
+                balancePayFee = order.getPendingPayments();
+            }
+            order.setBalancePayFee(MathUtil.add(order.getBalancePayFee(), balancePayFee));
+            order.setPayableAmount(MathUtil.sub(order.getPayableAmount(), balancePayFee));
+            payOrderMapper.updateSelective(order);
+            //剩余待付金额
+            order.setPendingPayments(MathUtil.sub(order.getPendingPayments(), balancePayFee));
+            //修改账户余额
+            if (!"0".equals(order.getStatus())) {
+                user.setUserMoney(MathUtil.sub(user.getUserMoney(), balancePayFee));
+                //保存收款记录
+                saveDiscernReceipt(balancePayFee, orderId);
+            }
+            user.setAbleUserMoney(MathUtil.sub(user.getAbleUserMoney(), balancePayFee));
+            userMapper.updateMoney(user.getUserMoney(), user.getAbleUserMoney(), user.getUserID());
+            //保存余额收支记录
+            saveBalanceRecord(balancePayFee, orderId, user.getUserID());
+        }
+        Map<String, Object> map = new HashMap<>(2);
+        map.put("order", order);
+        map.put("balancePayFee", balancePayFee);
+        return ResponseJson.success(map);
+    }
+
+
+    /**
+     * 保存余额到收款记录,余额收支记录
+     *
+     * @param balancePayFee 余额支付金额
+     * @param orderId       订单id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void saveDiscernReceipt(BigDecimal balancePayFee, Integer orderId) {
+        String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date());
+        CmDiscernReceiptPo discernReceipt = new CmDiscernReceiptPo();
+        discernReceipt.setPayWay("3");
+        discernReceipt.setPayType("16");
+        discernReceipt.setReceiptType("1");
+        discernReceipt.setReceiptStatus("3");
+        discernReceipt.setReceiptAmount(balancePayFee);
+        discernReceipt.setConfirmType("4");
+        discernReceipt.setReceiptDate(curDateStr);
+        discernReceipt.setConfirmDate(curDateStr);
+        discernReceipt.setReviewDate(curDateStr);
+        discernReceipt.setUpdateDate(curDateStr);
+        discernReceipt.setDelFlag("0");
+        payOrderMapper.insertDiscernReceipt(discernReceipt);
+        CmReceiptOrderRelationPo relation = new CmReceiptOrderRelationPo();
+        relation.setReceiptID(discernReceipt.getId().intValue());
+        relation.setOrderID(orderId);
+        relation.setAssociateAmount(balancePayFee);
+        relation.setRelationType("2");
+        relation.setDelFlag("0");
+        payOrderMapper.insertOrderRelation(relation);
+        log.info(">>>>>>>>>>>>>>>>>>>>>>>保存余额到收款记录," + balancePayFee);
+    }
 }

+ 53 - 1
src/main/resources/backup.sql

@@ -120,4 +120,56 @@ ALTER TABLE `cm_mall_cart`
 -- 直播添加开始时间和结束时间
 ALTER TABLE `new_page_live`
     ADD COLUMN `startTime` DATETIME NULL COMMENT '开始时间' AFTER `createTime`,
-    ADD COLUMN `endTime` DATETIME NULL COMMENT '结束时间' AFTER `startTime`;
+    ADD COLUMN `endTime` DATETIME NULL COMMENT '结束时间' AFTER `startTime`;
+# ---------------------------------------------------维沙组织和机构逻辑修改start-----------------------------------------------------------
+CREATE TABLE `cm_organize_store` (
+                                          `id` INT NOT NULL AUTO_INCREMENT,
+                                          `organizeId` INT NULL COMMENT '组织id',
+                                          `userId` INT NULL COMMENT '之前的用户id',
+                                          `name` VARCHAR(30) NULL COMMENT '门店名称',
+                                          `linkMan` VARCHAR(15) NULL COMMENT '联系人',
+                                          `mobile` VARCHAR(15) NULL COMMENT '手机号',
+                                          `provinceId` INT NULL COMMENT '省id',
+                                          `cityId` INT NULL COMMENT '市id',
+                                          `townId` INT NULL COMMENT '区id',
+                                          `address` VARCHAR(255) NULL COMMENT '详细地址',
+                                          `status` INT NULL COMMENT '门店状态:1已上线,2已下线',
+                                          `addTime` DATETIME NULL COMMENT '添加时间',
+                                          PRIMARY KEY (`id`))
+    ENGINE = InnoDB
+    DEFAULT CHARACTER SET = utf8
+    COLLATE = utf8_bin
+    COMMENT = '采美组织门店表';
+
+# 将门店机构转移到门店表中
+insert into cm_organize_store(`organizeId`,`userId`,`name`,`linkMan`,`mobile`,`provinceId`,`cityId`,`townId`,`address`,`status`,`addTime`)
+select 3,u.userID,u.name,u.userName,u.bindMobile,b.provinceID,b.cityID,b.townID,b.address,1,u.registerTime from user u left join club b on u.userID = b.userID where u.userOrganizeId = 3;
+
+# 订单表添加门店id字段
+ALTER TABLE `cm_order`
+    ADD COLUMN `organizeStoreId` INT NULL COMMENT '组织门店id' AFTER `buyUserID`;
+
+# 将订单门店id置为原用户id对应的门店id
+update cm_order o join cm_organize_store s on o.userID = s.userId set o.organizeStoreId = s.id where o.organizeID = 3;
+
+# 删除门店表的用户id字段
+alter table cm_organize_store drop column `userId`;
+
+# 删除用户表和机构表里的门店
+delete from club where userID in (select u.userID from user u where u.userOrganizeID = 3);
+delete from user where userOrganizeID = 3;
+
+# 将维沙订单和子订单用户id置为维沙用户id
+update cm_order set userID = 7263,buyUserID = 7263 where organizeID = 3;
+update cm_shop_order set userID = 7263 where organizeID = 3;
+
+# 将维沙机构关联到维沙组织
+update user set userOrganizeID = 3 where userID = 7263;
+
+# 用户退款的用户id改为维沙用户id
+update cm_returned_purchase p join cm_order o on p.orderID = o.orderID set p.userID = 7263 where o.organizeID = 3;
+
+# 用户订单信息的机构名称改为维沙
+update bp_order_userinfo u join cm_order o on u.orderId = o.orderID set name = '上海维沙美容美发经营管理有限公司' where o.organizeID = 3;
+
+# ---------------------------------------------------维沙组织和机构逻辑修改end-------------------------------------------------------------

+ 6 - 0
src/main/resources/mapper/PayOrderMapper.xml

@@ -53,6 +53,12 @@
             <if test="onlinePayFlag != null">
                 onlinePayFlag = #{onlinePayFlag},
             </if>
+            <if test="payableAmount != null">
+                payableAmount = #{payableAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="balancePayFee != null">
+                balancePayFee = #{balancePayFee,jdbcType=DECIMAL},
+            </if>
         </set>
         where orderID = #{orderId}
     </update>

+ 92 - 0
src/main/resources/mapper/UserMapper.xml

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei.mapper.UserMapper">
+    <insert id="insertBalanceRecord" keyColumn="id" keyProperty="id" parameterType="com.caimei.model.po.BalanceRecordPo" useGeneratedKeys="true">
+        insert into cm_user_balance_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userId != null">
+                userId,
+            </if>
+            <if test="type != null">
+                `type`,
+            </if>
+            <if test="balanceType != null">
+                balanceType,
+            </if>
+            <if test="addDate != null">
+                addDate,
+            </if>
+            <if test="amount != null">
+                amount,
+            </if>
+            <if test="orderId != null">
+                orderId,
+            </if>
+            <if test="receiptId != null">
+                receiptId,
+            </if>
+            <if test="returnedId != null">
+                returnedId,
+            </if>
+            <if test="withdrawalsId != null">
+                withdrawalsId,
+            </if>
+            <if test="remark != null">
+                remark,
+            </if>
+            <if test="delFlag != null">
+                delFlag,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="userId != null">
+                #{userId,jdbcType=BIGINT},
+            </if>
+            <if test="type != null">
+                #{type,jdbcType=CHAR},
+            </if>
+            <if test="balanceType != null">
+                #{balanceType,jdbcType=CHAR},
+            </if>
+            <if test="addDate != null">
+                #{addDate,jdbcType=TIMESTAMP},
+            </if>
+            <if test="amount != null">
+                #{amount,jdbcType=DECIMAL},
+            </if>
+            <if test="orderId != null">
+                #{orderId,jdbcType=BIGINT},
+            </if>
+            <if test="receiptId != null">
+                #{receiptId,jdbcType=BIGINT},
+            </if>
+            <if test="returnedId != null">
+                #{returnedId,jdbcType=BIGINT},
+            </if>
+            <if test="withdrawalsId != null">
+                #{withdrawalsId,jdbcType=BIGINT},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateMoney">
+        update user
+        <set>
+            <if test="userMoney != null">
+                userMoney = #{userMoney,jdbcType=DECIMAL},
+            </if>
+            <if test="ableUserMoney != null">
+                ableUserMoney = #{ableUserMoney,jdbcType=DECIMAL},
+            </if>
+        </set>
+        where userID = #{userID,jdbcType=INTEGER}
+    </update>
+
+</mapper>