Helius
2021-05-11 f895f77bf1b1dce8dd8a5008f809d58f1ab3ee15
modify order usdt profit
4 files added
9 files modified
191 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicLevelSettingEntity.java 28 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/entity/YdOrderEntity.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/XchProfitServiceImpl.java 89 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/service/XchProfitService.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/quartz/job/XchBaseDataUpdateJob.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/utils/LogRecordUtils.java 5 ●●●●● patch | view | raw | blame | history
src/main/resources/application-test.yml 1 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/member/MemberDao.xml 19 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/yunding/YdOrderDao.xml 6 ●●●●● patch | view | raw | blame | history
src/test/java/com/xcong/excoin/XchTest.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java
@@ -23,4 +23,5 @@
    public List<MemberEntity> selectAllMember();
    List<MemberEntity> selectYdParentAgent(@Param("list") List<String> list);
}
src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
@@ -1,7 +1,10 @@
package com.xcong.excoin.modules.member.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
import com.xcong.excoin.modules.yunding.entity.YdBasicLevelSettingEntity;
import com.xcong.excoin.modules.yunding.entity.YdBasicSettingEntity;
import lombok.Data;
import java.math.BigDecimal;
@@ -192,4 +195,8 @@
    public static final Integer PCSTATE_Y = 0;
    
    public static final Integer PCSTATE_N = 1;
    @TableField(exist = false)
    private YdBasicLevelSettingEntity ydBasicLevelSettingEntity;
}
src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java
@@ -8,8 +8,11 @@
import com.xcong.excoin.modules.yunding.vo.YdOrderVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface YdOrderDao extends BaseMapper<YdOrderEntity> {
    IPage<YdOrderVo> getOrderList(Page<YdOrderVo> page, @Param("record") YdOrderEntity ydOrderEntity);
    List<YdOrderEntity> selectNeedReturnOrders();
}
src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicLevelSettingEntity.java
New file
@@ -0,0 +1,28 @@
package com.xcong.excoin.modules.yunding.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
@Data
@TableName("yd_basic_level_setting")
public class YdBasicLevelSettingEntity {
    private Long id;
    private String name;
    private String code;
    private BigDecimal xchRatio;
    private BigDecimal usdtRatio;
    private BigDecimal chargeUsdt;
    private BigDecimal calculationPower;
    private Integer level;
}
src/main/java/com/xcong/excoin/modules/yunding/entity/YdOrderEntity.java
@@ -1,5 +1,6 @@
package com.xcong.excoin.modules.yunding.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
import lombok.Data;
@@ -92,5 +93,7 @@
    private Date endTime;
    @TableField(exist = false)
    private YdProductEntity ydProductEntity;
}
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/XchProfitServiceImpl.java
New file
@@ -0,0 +1,89 @@
package com.xcong.excoin.modules.yunding.service.Impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
import com.xcong.excoin.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
import com.xcong.excoin.modules.yunding.dao.YdOrderDao;
import com.xcong.excoin.modules.yunding.entity.YdBasicLevelSettingEntity;
import com.xcong.excoin.modules.yunding.entity.YdOrderEntity;
import com.xcong.excoin.modules.yunding.service.XchProfitService;
import com.xcong.excoin.utils.LogRecordUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class XchProfitServiceImpl implements XchProfitService {
    @Autowired
    private MemberDao memberDao;
    @Autowired
    private YdOrderDao ydOrderDao;
    @Autowired
    private MemberWalletCoinDao memberWalletCoinDao;
    @Override
    public void autoBeAgent(Long id) {
    }
    @Override
    public void agentProfitDistributor() {
        List<YdOrderEntity> orders = ydOrderDao.selectNeedReturnOrders();
        if (CollUtil.isNotEmpty(orders)) {
            for (YdOrderEntity order : orders) {
                MemberEntity memberEntity = memberDao.selectById(order.getMemberId());
                List<String> inviteIds = StrUtil.split(memberEntity.getRefererIds(), ',');
                List<MemberEntity> agents = memberDao.selectYdParentAgent(inviteIds);
                if (CollUtil.isNotEmpty(agents)) {
                    Map<Long, BigDecimal> returnRatio = new HashMap<Long, BigDecimal>();
                    Long lastId = null;
                    for (MemberEntity agent : agents) {
                        YdBasicLevelSettingEntity settingEntity = agent.getYdBasicLevelSettingEntity();
                        if(settingEntity.getLevel() == 1) {
                            if (CollUtil.isNotEmpty(returnRatio)) {
                                BigDecimal lastRatio = returnRatio.get(lastId);
                                returnRatio.put(agent.getId(), settingEntity.getUsdtRatio().subtract(lastRatio));
                            } else {
                                returnRatio.put(agent.getId(), settingEntity.getUsdtRatio());
                            }
                            break;
                        }
                        if (CollUtil.isEmpty(returnRatio)) {
                            lastId = agent.getId();
                            returnRatio.put(agent.getId(), settingEntity.getUsdtRatio());
                        }
                    }
                    for (Map.Entry<Long, BigDecimal> entry : returnRatio.entrySet()) {
                        String conent = "USDT返利";
                        BigDecimal amount = order.getAmount().multiply(entry.getValue());
                        LogRecordUtils.insertMemberAccountMoneyChangeWithId(entry.getKey(), conent, amount, "USDT", 1, 6, order.getId());
                        MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(entry.getKey(), "USDT");
                        memberWalletCoinDao.updateBlockBalance(walletCoin.getId(), amount, BigDecimal.ZERO, 0);
                    }
                    YdOrderEntity updateOrder = new YdOrderEntity();
                    updateOrder.setReturnState(2);
                    updateOrder.setId(order.getId());
                    ydOrderDao.updateById(updateOrder);
                }
            }
        }
    }
}
src/main/java/com/xcong/excoin/modules/yunding/service/XchProfitService.java
New file
@@ -0,0 +1,9 @@
package com.xcong.excoin.modules.yunding.service;
public interface XchProfitService {
    void autoBeAgent(Long id);
    void agentProfitDistributor();
}
src/main/java/com/xcong/excoin/quartz/job/XchBaseDataUpdateJob.java
@@ -61,6 +61,7 @@
        // 模拟浏览器
        String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";
        try {
            System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
            URL request = new URL(url);
            HttpURLConnection connection = (HttpURLConnection) request.openConnection();
            connection.setRequestMethod("GET");
src/main/java/com/xcong/excoin/utils/LogRecordUtils.java
@@ -26,6 +26,10 @@
public class LogRecordUtils {
    public static void insertMemberAccountMoneyChange(Long memberId, String content, BigDecimal amount, String symbol, Integer status, Integer type) {
        insertMemberAccountMoneyChangeWithId(memberId, content, amount, symbol, status, type, null);
    }
    public static void insertMemberAccountMoneyChangeWithId(Long memberId, String content, BigDecimal amount, String symbol, Integer status, Integer type, Long withId) {
        MemberAccountMoneyChange accountRecord = new MemberAccountMoneyChange();
        accountRecord.setContent(content);
        accountRecord.setMemberId(memberId);
@@ -33,6 +37,7 @@
        accountRecord.setStatus(status);
        accountRecord.setSymbol(symbol);
        accountRecord.setType(type);
        accountRecord.setWithdrawId(withId);
        SpringContextHolder.getBean(MemberAccountMoneyChangeDao.class).insert(accountRecord);
    }
src/main/resources/application-test.yml
@@ -101,6 +101,7 @@
  loop-job: true
  rabbit-consumer: false
  block-job: true
  xch-job: true
aliyun:
  oss:
src/main/resources/mapper/member/MemberDao.xml
@@ -49,4 +49,23 @@
    <select id="selectAllMember" resultType="com.xcong.excoin.modules.member.entity.MemberEntity">
        select * from member
    </select>
    <resultMap id="memberAgentMap" type="com.xcong.excoin.modules.member.entity.MemberEntity">
        <id property="id" column="id" />
        <association property="ydBasicLevelSettingEntity" javaType="com.xcong.excoin.modules.yunding.entity.YdBasicLevelSettingEntity">
            <result property="level" column="level"/>
            <result property="usdtRatio" column="usdt_ratio" />
        </association>
    </resultMap>
    <select id="selectYdParentAgent" resultMap="memberAgentMap">
        select a.*, b.level, b.usdt_ratio from member a
        inner join yd_basic_level_setting b on a.agent_level=b.id
        where a.invite_id in
        <foreach collection = "list" item = "item"  separator=","  open = "(" close = ")" >
            #{item}
        </foreach >
        order by id desc
    </select>
</mapper>
src/main/resources/mapper/yunding/YdOrderDao.xml
@@ -21,4 +21,10 @@
        ORDER BY a.create_time DESC
    </select>
    <select id="selectNeedReturnOrders" resultType="com.xcong.excoin.modules.yunding.entity.YdOrderEntity">
        select a.*, b.* from yd_order a
        left join yd_product b on a.product_id=b.id
        where a.state=2 and a.return_state=1
    </select>
</mapper>
src/test/java/com/xcong/excoin/XchTest.java
New file
@@ -0,0 +1,19 @@
package com.xcong.excoin;
import com.xcong.excoin.modules.yunding.service.XchProfitService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class XchTest {
    @Autowired
    private XchProfitService xchProfitService;
    @Test
    public void usdtReturnTest() {
        xchProfitService.agentProfitDistributor();
    }
}