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 implements IMemberService { private final MemberQuickBuySaleMapper memberQuickBuySaleMapper; private final MemberWalletCoinMapper memberWalletCoinMapper; private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper; @Override public IPage findMemberListInPage(MemberEntity memberEntity, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); return this.baseMapper.selectMemberListInPage(page, memberEntity); } @Override public IPage findmemberQuickBuySaleListInPage( MemberQuickBuySaleEntity memberQuickBuySaleEntity, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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(); } }