package com.xcong.excoin.modules.home.service.impl;
|
|
import java.math.BigDecimal;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
|
import com.alibaba.druid.util.StringUtils;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.xcong.excoin.common.LoginUserUtils;
|
import com.xcong.excoin.common.response.Result;
|
import com.xcong.excoin.modules.home.dao.MemberPaymentMethodDao;
|
import com.xcong.excoin.modules.home.dao.MemberQuickBuySaleDao;
|
import com.xcong.excoin.modules.home.dto.MemberQuickBuySaleCommitDto;
|
import com.xcong.excoin.modules.home.dto.MemberQuickBuySaleDto;
|
import com.xcong.excoin.modules.home.entity.MemberPaymentMethodEntity;
|
import com.xcong.excoin.modules.home.entity.MemberQuickBuySaleEntity;
|
import com.xcong.excoin.modules.home.mapper.MemberQuickBuySaleEntityMapper;
|
import com.xcong.excoin.modules.home.service.MemberQuickBuySaleService;
|
import com.xcong.excoin.modules.home.vo.MemberQuickBuySaleVo;
|
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 cn.hutool.crypto.SecureUtil;
|
import lombok.extern.slf4j.Slf4j;
|
|
@Service
|
@Slf4j
|
public class MemberQuickBuySaleServiceImpl extends ServiceImpl<MemberQuickBuySaleDao, MemberQuickBuySaleEntity> implements MemberQuickBuySaleService{
|
|
@Resource
|
MemberDao memberDao;
|
@Resource
|
MemberQuickBuySaleDao memberQuickBuySaleDao;
|
@Resource
|
MemberWalletCoinDao memberWalletCoinDao;
|
@Resource
|
MemberPaymentMethodDao memberPaymentMethodDao;
|
|
@Override
|
public Result recharge(MemberQuickBuySaleDto memberQuickBuySaleDto) {
|
|
log.info("入参----->{}", memberQuickBuySaleDto);
|
//获取用户ID
|
Long memberId = LoginUserUtils.getAppLoginUser().getId();
|
MemberEntity member = memberDao.selectById(memberId);
|
log.info("查询到的会员----->{}", member);
|
// 验证是否实名认证
|
if (MemberEntity.CERTIFY_STATUS_Y.equals(member.getCertifyStatus())) {
|
return Result.fail("请先实名认证");
|
}
|
String tradePasswordWeb = memberQuickBuySaleDto.getTradePassword();
|
|
// 验证支付密码
|
String tradePassword = member.getTradePassword();
|
|
log.info("入参交易密码{},用户设置的交易密码{}", tradePasswordWeb,tradePassword);
|
if (StringUtils.isEmpty(tradePassword)) {
|
return Result.fail("请先配置交易密码");
|
}
|
if (StringUtils.isEmpty(tradePasswordWeb)) {
|
return Result.fail("请输入交易密码");
|
}
|
// System.out.println("交易密码:"+MD5.GetMD5Code(tradePasswordWeb)+" tradePassword =
|
// "+tradePassword);
|
// 验证交易密码
|
if (!tradePassword.equals(SecureUtil.md5(tradePasswordWeb))) {
|
return Result.fail("请输入正确的交易密码");
|
}
|
// 生成订单号
|
Long timestamp = System.currentTimeMillis();
|
int random = (int) (Math.random() * 10);
|
String chargeNo = String.valueOf(timestamp).substring(2) + random;
|
// 插入订单表
|
MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
|
memberQuickBuySaleEntity.setOrderStatus(memberQuickBuySaleEntity.CHARGE_STATUS_CREATE);
|
memberQuickBuySaleEntity.setMemberId(memberId);
|
memberQuickBuySaleEntity.setCreateTime(new Date());
|
memberQuickBuySaleEntity.setOrderNo(chargeNo);
|
memberQuickBuySaleEntity.setOrderType("B");
|
// 支付码 ID+四位随机数
|
int ran = (int) (Math.random() * 10000000);
|
memberQuickBuySaleEntity.setPaymentCode(ran + "");
|
|
memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
|
// 返回前台付款方式
|
// memberChargeUsdt.setReceiveMethod(payMethodList.get(index));
|
return Result.ok("购买成功,请及时付款");
|
}
|
|
@Override
|
public Result commitPay(MemberQuickBuySaleCommitDto memberQuickBuySaleCommitDto) {
|
// 用户提交支付确认 将状态改为付款中
|
MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
|
memberQuickBuySaleEntity.setId(memberQuickBuySaleCommitDto.getId());
|
memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_PAID);
|
memberQuickBuySaleEntity.setPaymentAccount(memberQuickBuySaleCommitDto.getPaymentAccount());
|
memberQuickBuySaleEntity.setPaymentName(memberQuickBuySaleCommitDto.getPaymentName());
|
|
memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
|
|
// TODO dingtalk
|
|
return Result.ok("确认成功");
|
}
|
|
@Override
|
public Result selectById(Long id) {
|
MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id);
|
MemberQuickBuySaleVo memberQuickBuySaleVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity);
|
long startTime = memberQuickBuySaleEntity.getCreateTime().getTime();
|
long nowTime = new Date().getTime();
|
long third = 30*60*1000;
|
memberQuickBuySaleVo.setTimeLeft((third-nowTime+startTime)/1000);
|
return Result.ok(memberQuickBuySaleVo);
|
}
|
|
|
|
@Override
|
public Result cancelRecharge(Long id) {
|
// 获取当前登录用户
|
Long memberId = LoginUserUtils.getAppLoginUser().getId();
|
MemberEntity member = memberDao.selectById(memberId);
|
if(memberId==null) {
|
return Result.fail("登录用户已失效");
|
}
|
MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id);
|
memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER);
|
memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
|
|
// 判断是否存在足够余额
|
MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(id,"USDT");
|
boolean flag = true;
|
while(flag) {
|
walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(memberQuickBuySaleEntity.getAmountUsdt()));
|
walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(memberQuickBuySaleEntity.getAmountUsdt()));
|
int i = memberWalletCoinDao.updateById(walletCoin);
|
if(i>0) {
|
flag = false;
|
}
|
walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(id,"USDT");
|
}
|
return Result.ok("成功");
|
}
|
|
@Override
|
public Result sell() {
|
// TODO Auto-generated method stub
|
return null;
|
}
|
}
|