From 30c34fff57ead909cb5922d1791a9561e4f70957 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 13 Jul 2020 11:49:21 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/chonggaoxiao/new_excoin

---
 src/test/java/com/xcong/excoin/ReturnMoneyTest.java                                |   56 +++++++++++++++++++++++++++
 src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java |    7 ++-
 src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java  |    2 
 src/main/java/com/xcong/excoin/modules/member/dao/AgentReturnDao.java              |    7 +++
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java  |    3 +
 src/main/java/com/xcong/excoin/modules/member/entity/AgentReturnEntity.java        |   10 +++++
 src/main/resources/mapper/member/MemberCoinAddressDao.xml                          |    2 
 src/main/resources/mapper/member/AgentReturnDao.xml                                |   13 ++++++
 src/main/resources/application.yml                                                 |    6 +-
 9 files changed, 96 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
index 2837bdf..c96299f 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
@@ -180,13 +180,14 @@
         BigDecimal closingPrice = price.multiply(amount).multiply(tradeSetting.getCoinFeeRatio());
         //总费用 = 成交价*数量+手续费
         BigDecimal totalPayPrice = price.multiply(amount).add(closingPrice);
+        BigDecimal totalPayPricCoin = nowPrice.multiply(amount).add(closingPrice);
 
         String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue();
         MemberWalletCoinEntity walletCoinUsdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode);
         if (OrderCoinsEntity.ORDERTYPE_BUY.equals(type)) {
             //买入,所需总费用跟用户USDT金额进行比较
             BigDecimal availableBalance = walletCoinUsdt.getAvailableBalance();
-            if (totalPayPrice.compareTo(availableBalance) > 0) {
+            if (totalPayPrice.compareTo(availableBalance) > 0 || totalPayPricCoin.compareTo(availableBalance) > 0) {
                 return Result.fail(MessageSourceUtils.getString("order_service_0010"));
             }
         } else {
@@ -252,7 +253,7 @@
                 totalPayPrice = nowPrice.multiply(amount).add(closingPrice);
                 price = nowPrice;
             }
-            order.setDealPrice(price);
+            order.setDealPrice(nowPrice);
             order.setDealAmount(totalPayPrice);
             order.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
             order.setTradeType(tradeType);
@@ -268,7 +269,7 @@
             detail.setSymbol(symbol);
             detail.setSymbolCnt(amount);
             detail.setEntrustPrice(nowPriceinBigDecimal);
-            detail.setDealPrice(price);
+            detail.setDealPrice(nowPrice);
             detail.setDealAmount(totalPayPrice);
             detail.setFeeAmount(closingPrice);
             detail.setOrderStatus(OrderCoinsDealEntity.ORDERSTATUS_DONE);
diff --git a/src/main/java/com/xcong/excoin/modules/member/dao/AgentReturnDao.java b/src/main/java/com/xcong/excoin/modules/member/dao/AgentReturnDao.java
index 9344717..d20792d 100644
--- a/src/main/java/com/xcong/excoin/modules/member/dao/AgentReturnDao.java
+++ b/src/main/java/com/xcong/excoin/modules/member/dao/AgentReturnDao.java
@@ -2,9 +2,16 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xcong.excoin.modules.member.entity.AgentReturnEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @author helius
  */
 public interface AgentReturnDao extends BaseMapper<AgentReturnEntity> {
+
+    List<AgentReturnEntity> selectAllNeedMoneyReturn();
+
+    int updateAgentReturnStatusByRefererId(@Param("isReturn") int isReturn, @Param("refererId") Long refererId);
 }
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/AgentReturnEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/AgentReturnEntity.java
index 468a910..4cefe1a 100644
--- a/src/main/java/com/xcong/excoin/modules/member/entity/AgentReturnEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/AgentReturnEntity.java
@@ -29,6 +29,16 @@
      */
     public static final int ORDER_TYPE_HOLD = 3;
 
+    /**
+     * 是否已返佣 0-否
+     */
+    public static final int IS_RETURN_N = 0;
+
+    /**
+     * 是否已返佣 1-是
+     */
+    public static final int IS_RETURN_Y = 1;
+
     private Long memberId;
 
     private Long orderId;
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java
index 80dd3ec..853703c 100644
--- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java
@@ -37,7 +37,7 @@
      */
     private String isBiyict;
     public static final String IS_BIYICT_YES = "1";
-    public static final String IS_BIYICT_NO = "0";
+    public static final String IS_BIYICT_NO = "2";
     /**
      * 
      */
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
index 795bc5c..96cbf6d 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -684,7 +684,7 @@
         MemberCoinAddressEntity memberCoinAddressEntity = new MemberCoinAddressEntity();
         memberCoinAddressEntity.setAddress(address);
         memberCoinAddressEntity.setMemberId(memberId);
-        memberCoinAddressEntity.setIsBiyict(isBiyict);
+        memberCoinAddressEntity.setIsBiyict(MemberCoinAddressEntity.IS_BIYICT_NO);
         memberCoinAddressEntity.setSymbolscoinId(symbolscoinId);
         memberCoinAddressEntity.setLabel(remark);
         memberCoinAddressEntity.setSymbol(platformSymbolsCoinEntity.getName());
@@ -900,6 +900,7 @@
                 Map<String, Object> columnMap = new HashMap<>();
                 columnMap.put("symbol", memberSubmitCoinApplyDto.getSymbol());
                 columnMap.put("address", memberSubmitCoinApplyDto.getAddress());
+                columnMap.put("is_biyict", MemberCoinAddressEntity.IS_BIYICT_YES);
                 List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectByMap(columnMap);
                 if (CollUtil.isEmpty(selectByMap)) {
                     memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_NO);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 5ff6c87..7e0711d 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -7,9 +7,9 @@
   profiles:
     active: dev
   datasource:
-    url: jdbc:mysql://120.27.238.55:3306/kss_framework?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
-    username: ct_test
-    password: 123456
+    url: jdbc:mysql://rm-bp151tw8er79ig9kb5o.mysql.rds.aliyuncs.com:3306/db_biue?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
+    username: ctcoin_data
+    password: ctcoin_123
     driver-class-name: com.mysql.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
diff --git a/src/main/resources/mapper/member/AgentReturnDao.xml b/src/main/resources/mapper/member/AgentReturnDao.xml
index 3c7e7e8..0c7d266 100644
--- a/src/main/resources/mapper/member/AgentReturnDao.xml
+++ b/src/main/resources/mapper/member/AgentReturnDao.xml
@@ -2,4 +2,17 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xcong.excoin.modules.member.dao.AgentReturnDao">
 
+    <select id="selectAllNeedMoneyReturn" resultType="com.xcong.excoin.modules.member.entity.AgentReturnEntity">
+        select
+            referer_id,
+            sum(return_amount) return_amount
+        from agent_return where is_return=0
+        group by referer_id
+    </select>
+
+    <update id="updateAgentReturnStatusByRefererId">
+        update agent_return
+        set is_return=#{isReturn}
+        where referer_id=#{refererId}
+    </update>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/member/MemberCoinAddressDao.xml b/src/main/resources/mapper/member/MemberCoinAddressDao.xml
index 1c45e9c..4a3237a 100644
--- a/src/main/resources/mapper/member/MemberCoinAddressDao.xml
+++ b/src/main/resources/mapper/member/MemberCoinAddressDao.xml
@@ -40,7 +40,7 @@
 	<select id="selectCoinAddressListByMap" resultType="com.xcong.excoin.modules.member.entity.MemberCoinAddressEntity">
 		select *  from member_coin_address 
 		 <where>
-		 is_biyict = 1
+		 is_biyict = 2
 		  and symbolscoin_id IS NOT NULL
 	 		<if test="memberId != null  and  memberId  != ''">
 	 			 and member_id = #{memberId}
diff --git a/src/test/java/com/xcong/excoin/ReturnMoneyTest.java b/src/test/java/com/xcong/excoin/ReturnMoneyTest.java
index 54fc295..e4eeab0 100644
--- a/src/test/java/com/xcong/excoin/ReturnMoneyTest.java
+++ b/src/test/java/com/xcong/excoin/ReturnMoneyTest.java
@@ -1,17 +1,27 @@
 package com.xcong.excoin;
 
+import cn.hutool.core.collection.CollUtil;
+import jnr.ffi.annotations.IgnoreError;
+
+import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
+import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange;
 import com.xcong.excoin.modules.contract.dao.ContractOrderDao;
 import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
 import com.xcong.excoin.modules.contract.service.impl.OrderWebsocketServiceImpl;
+import com.xcong.excoin.modules.member.dao.AgentReturnDao;
+import com.xcong.excoin.modules.member.dao.MemberWalletAgentDao;
 import com.xcong.excoin.modules.member.entity.AgentReturnEntity;
+import com.xcong.excoin.modules.member.entity.MemberWalletAgentEntity;
 import com.xcong.excoin.utils.SpringContextHolder;
 import com.xcong.excoin.utils.ThreadPoolUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * @author wzy
@@ -23,11 +33,55 @@
 
     @Resource
     private ContractOrderDao contractOrderDao;
+    @Resource
+    private AgentReturnDao agentReturnDao;
+    @Resource
+    private MemberWalletAgentDao memberWalletAgentDao;
+    @Resource
+    private MemberAccountMoneyChangeDao memberAccountMoneyChangeDao;
 
-    @Test
+    /*@Test
     public void returnTest() {
         ContractOrderEntity entity = contractOrderDao.selectById(667L);
         OrderWebsocketServiceImpl orderWebsocketService = SpringContextHolder.getBean(OrderWebsocketServiceImpl.class);
         orderWebsocketService.calYj(19L, new BigDecimal(4.18004236), entity, AgentReturnEntity.ORDER_TYPE_OPEN);
+    }*/
+
+
+    @Test
+    @Transactional(rollbackFor = Exception.class)
+    public void moneyReturnTest() {
+        List<AgentReturnEntity> list = agentReturnDao.selectAllNeedMoneyReturn();
+        log.info("返佣条数:{}", list.size());
+        if (CollUtil.isNotEmpty(list)) {
+            for (AgentReturnEntity agentReturn : list) {
+                BigDecimal needReturn = agentReturn.getReturnAmount();
+                Long refererId = agentReturn.getRefererId();
+                MemberWalletAgentEntity walletAgent = memberWalletAgentDao.selectWalletAgentBymIdAndCode(refererId, "USDT");
+                if (walletAgent == null) {
+                    continue;
+                }
+
+                log.info("用户ID:{}, 当前余额:{},总金额:{}, 返佣金额:{}", refererId, walletAgent.getAvailableBalance().toPlainString(), walletAgent.getTotalBalance().toPlainString(), needReturn);
+                walletAgent.setAvailableBalance(walletAgent.getAvailableBalance().add(needReturn));
+                walletAgent.setTotalBalance(walletAgent.getTotalBalance().add(needReturn));
+
+
+                MemberAccountMoneyChange moneyChange = new MemberAccountMoneyChange();
+                moneyChange.setAmount(needReturn);
+                moneyChange.setContent("佣金到账");
+                moneyChange.setType(MemberAccountMoneyChange.TYPE_WALLET_AGENT);
+                moneyChange.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER);
+                moneyChange.setMemberId(refererId);
+                moneyChange.setSymbol("USDT");
+
+//                // 更新代理钱包金额
+//                memberWalletAgentDao.updateById(walletAgent);
+//                // 更新返佣明细中状态
+//                agentReturnDao.updateAgentReturnStatusByRefererId(AgentReturnEntity.IS_RETURN_Y, refererId);
+//                // 插入财务流水记录
+//                memberAccountMoneyChangeDao.insert(moneyChange);
+            }
+        }
     }
 }

--
Gitblit v1.9.1