xiaoyong931011
2020-06-11 b448b917b7bff91ceddc90f19487ae1cbbc52b13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package com.xcong.excoin.modules.member.service.impl;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.entity.FebsResponse;
import com.xcong.excoin.common.entity.QueryRequest;
import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper;
import com.xcong.excoin.modules.member.mapper.MemberMapper;
import com.xcong.excoin.modules.member.mapper.MemberQuickBuySaleMapper;
import com.xcong.excoin.modules.member.mapper.MemberWalletCoinMapper;
import com.xcong.excoin.modules.member.service.IMemberService;
import com.xcong.excoin.modules.member.vo.MemberQuickBuySaleVo;
 
import lombok.RequiredArgsConstructor;
import java.math.BigDecimal;
import javax.validation.constraints.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
/**
 * @author wzy
 * @date 2020-06-10
 **/
@Service
@RequiredArgsConstructor
public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberEntity> implements IMemberService {
    
    private final MemberQuickBuySaleMapper memberQuickBuySaleMapper;
    
    private final MemberWalletCoinMapper memberWalletCoinMapper;
    
    private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper;
    
 
    @Override
    public IPage<MemberEntity> findMemberListInPage(MemberEntity memberEntity, QueryRequest request) {
        Page<MemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
        return this.baseMapper.selectMemberListInPage(page, memberEntity);
    }
 
    @Override
    public IPage<MemberQuickBuySaleVo> findmemberQuickBuySaleListInPage(
            MemberQuickBuySaleEntity memberQuickBuySaleEntity, QueryRequest request) {
        Page<MemberQuickBuySaleEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<MemberQuickBuySaleVo> findmemberQuickBuySaleListInPage = memberQuickBuySaleMapper.findmemberQuickBuySaleListInPage(page, memberQuickBuySaleEntity);
        return findmemberQuickBuySaleListInPage;
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public FebsResponse memberChargeUsdtConfirm(Long id) {
        
        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id);
        
        if(!MemberQuickBuySaleEntity.CHARGE_STATUS_PAID.equals(memberQuickBuySaleEntity.getOrderStatus())) {
            return new FebsResponse().message("只允许已付款状态操作");
        }
        
        Long memberId = memberQuickBuySaleEntity.getMemberId();
        BigDecimal amountUsdt = memberQuickBuySaleEntity.getAmountUsdt();
        String walletCode = "USDT";
        
        MemberEntity selectById = this.baseMapper.selectById(memberId);
        if(ObjectUtils.isEmpty(selectById)) {
            return new FebsResponse().message("用户已不存在");
        }
        //获取币币钱包
        MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId,walletCode);
        BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance();
        BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance();
        memberWalletCoinEntity.setAvailableBalance(availableBalance.add(amountUsdt));
        memberWalletCoinEntity.setTotalBalance(totalBalance.add(amountUsdt));
        // 更新
        memberWalletCoinMapper.updateById(memberWalletCoinEntity);
        // 更新状态
        memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CHECKED);
        memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity);
        
         //添加币币资金划转历史记录
        MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity();
        memberAccountMoneyChangeEntity.setContent("OTC转入");
        memberAccountMoneyChangeEntity.setMemberId(memberId);
        memberAccountMoneyChangeEntity.setAmount(amountUsdt);
        memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER);
        memberAccountMoneyChangeEntity.setSymbol("USDT");
        memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN);
        memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity);
        /**
         * todo
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        String chargeTime = format.format(memberQuickBuySaleEntity.getChargeTime()); // 将当前时间袼式化为指定的格式
        String usdt = memberQuickBuySaleEntity.getAmountUsdt()+"USDT";
        //发送短信提醒
        String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"充值"+usdt+"已成功到账,请您及时查收!订单号为:"+memberChargeUsdt.getOrderCode()+"。";
        SmsUtils.hxSmsSend(member.getPhone(), smsContent);
        
         */
        return new FebsResponse().message("拨币成功");
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public FebsResponse memberChargeUsdtCancel(@NotNull(message = "{required}") Long id) {
        
        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id);
        
        if(MemberQuickBuySaleEntity.CHARGE_STATUS_CHECKED.equals(memberQuickBuySaleEntity.getOrderStatus()) 
                || MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER.equals(memberQuickBuySaleEntity.getOrderStatus())
                || MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_SYSTEM.equals(memberQuickBuySaleEntity.getOrderStatus())) {
            return new FebsResponse().message("不允许系统撤单操作");
        }
        
        memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_SYSTEM);
        memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity);
        return new FebsResponse().success();
        
    }
}