| | |
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import com.xcong.excoin.utils.ThreadPoolUtils;
|
| | | import com.xcong.excoin.utils.dingtalk.DingTalkType;
|
| | | import org.springframework.stereotype.Service;
|
| | |
|
| | | import com.alibaba.druid.util.StringUtils;
|
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
| | | import com.xcong.excoin.common.LoginUserUtils;
|
| | | import com.xcong.excoin.common.enumerates.CoinTypeEnum;
|
| | | 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.MemberQuickBuySaleDetailVo;
|
| | | import com.xcong.excoin.modules.home.vo.MemberQuickBuySaleVo;
|
| | | import com.xcong.excoin.modules.member.dao.MemberDao;
|
| | | import com.xcong.excoin.modules.member.dao.MemberPaymentMethodDao;
|
| | | import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
|
| | | import com.xcong.excoin.modules.member.entity.MemberEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberPaymentMethodEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
|
| | | import com.xcong.excoin.modules.platform.dao.PlatformPaymentMethodDao;
|
| | | import com.xcong.excoin.modules.platform.entity.PlatformPaymentMethodEntity;
|
| | |
|
| | | @Service
|
| | | public class MemberQuickBuySaleServiceImpl extends ServiceImpl<MemberQuickBuySaleDao, MemberQuickBuySaleEntity> implements MemberQuickBuySaleService{
|
| | | |
| | | @Resource
|
| | | MemberDao memberDao;
|
| | | @Resource
|
| | | MemberQuickBuySaleDao memberQuickBuySaleDao;
|
| | | @Resource
|
| | | MemberWalletCoinDao memberWalletCoinDao;
|
| | | @Resource
|
| | | MemberPaymentMethodDao memberPaymentMethodDao;
|
| | | @Resource |
| | | PlatformPaymentMethodDao platformPaymentMethodDao;
|
| | | public class MemberQuickBuySaleServiceImpl extends ServiceImpl<MemberQuickBuySaleDao, MemberQuickBuySaleEntity> implements MemberQuickBuySaleService {
|
| | |
|
| | | @Override
|
| | | public Result recharge(MemberEntity member,MemberQuickBuySaleDto memberQuickBuySaleDto) {
|
| | | // 生成订单号
|
| | | Long timestamp = System.currentTimeMillis();
|
| | | int random = (int) (Math.random() * 10);
|
| | | String chargeNo = String.valueOf(timestamp).substring(2) + random;
|
| | | // 插入订单表
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
|
| | | memberQuickBuySaleEntity.setOrderStatus(1);
|
| | | memberQuickBuySaleEntity.setMemberId(member.getId());
|
| | | memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt());
|
| | | memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny());
|
| | | memberQuickBuySaleEntity.setCreateTime(new Date());
|
| | | memberQuickBuySaleEntity.setOrderNo(chargeNo);
|
| | | memberQuickBuySaleEntity.setOrderType("B");
|
| | | // 支付码 ID+四位随机数
|
| | | int ran = (int) (Math.random() * 10000000);
|
| | | memberQuickBuySaleEntity.setPaymentCode(ran + "");
|
| | | |
| | | memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
|
| | | MemberQuickBuySaleVo memberQuickBuySaleVo = new MemberQuickBuySaleVo();
|
| | | memberQuickBuySaleVo.setId(memberQuickBuySaleEntity.getId());
|
| | | // 返回前台付款方式
|
| | | return Result.ok(memberQuickBuySaleVo);
|
| | | }
|
| | | @Resource
|
| | | MemberDao memberDao;
|
| | | @Resource
|
| | | MemberQuickBuySaleDao memberQuickBuySaleDao;
|
| | | @Resource
|
| | | MemberWalletCoinDao memberWalletCoinDao;
|
| | | @Resource
|
| | | MemberPaymentMethodDao memberPaymentMethodDao;
|
| | | @Resource
|
| | | PlatformPaymentMethodDao platformPaymentMethodDao;
|
| | |
|
| | | @Override
|
| | | public Result commitPay(MemberQuickBuySaleCommitDto memberQuickBuySaleCommitDto) {
|
| | | // 用户提交支付确认 将状态改为付款中
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
|
| | | memberQuickBuySaleEntity.setId(memberQuickBuySaleCommitDto.getId());
|
| | | memberQuickBuySaleEntity.setOrderStatus(2);
|
| | | memberQuickBuySaleEntity.setPaymentAccount(memberQuickBuySaleCommitDto.getPaymentAccount());
|
| | | memberQuickBuySaleEntity.setPaymentName(memberQuickBuySaleCommitDto.getPaymentName());
|
| | | @Override
|
| | | public Result recharge(MemberEntity member, MemberQuickBuySaleDto memberQuickBuySaleDto) {
|
| | | // 生成订单号
|
| | | Long timestamp = System.currentTimeMillis();
|
| | | int random = (int) (Math.random() * 10);
|
| | | String chargeNo = String.valueOf(timestamp).substring(2) + random;
|
| | | // 插入订单表
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
|
| | | memberQuickBuySaleEntity.setOrderStatus(1);
|
| | | memberQuickBuySaleEntity.setMemberId(member.getId());
|
| | | memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt());
|
| | | memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny());
|
| | | memberQuickBuySaleEntity.setUnitPrice(memberQuickBuySaleDto.getUnitPrice());
|
| | | memberQuickBuySaleEntity.setCreateTime(new Date());
|
| | | memberQuickBuySaleEntity.setOrderNo(chargeNo);
|
| | | memberQuickBuySaleEntity.setOrderType("B");
|
| | | // 支付码 ID+四位随机数
|
| | | int ran = (int) (Math.random() * 10000000);
|
| | | memberQuickBuySaleEntity.setPaymentCode(ran + "");
|
| | |
|
| | | memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
|
| | | memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
|
| | | MemberQuickBuySaleVo memberQuickBuySaleVo = new MemberQuickBuySaleVo();
|
| | | memberQuickBuySaleVo.setId(memberQuickBuySaleEntity.getId());
|
| | | // 返回前台付款方式
|
| | | return Result.ok("提交成功", memberQuickBuySaleVo);
|
| | | }
|
| | |
|
| | | // TODO dingtalk
|
| | | |
| | | return Result.ok("确认成功");
|
| | | }
|
| | | @Override
|
| | | public Result commitPay(MemberQuickBuySaleCommitDto memberQuickBuySaleCommitDto) {
|
| | | // 用户提交支付确认 将状态改为付款中
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
|
| | | memberQuickBuySaleEntity.setId(memberQuickBuySaleCommitDto.getId());
|
| | | memberQuickBuySaleEntity.setOrderStatus(2);
|
| | | memberQuickBuySaleEntity.setPaymentAccount(memberQuickBuySaleCommitDto.getPaymentAccount());
|
| | | memberQuickBuySaleEntity.setPaymentName(memberQuickBuySaleCommitDto.getPaymentName());
|
| | |
|
| | | @Override
|
| | | public Result selectById(Long id) {
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id);
|
| | | MemberQuickBuySaleDetailVo memberQuickBuySaleDetailVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity);
|
| | | // 收款信息
|
| | | QueryWrapper<PlatformPaymentMethodEntity> queryWrapper = new QueryWrapper<>();
|
| | | queryWrapper.eq("status", "1");
|
| | | List<PlatformPaymentMethodEntity> paymentMethodList = platformPaymentMethodDao.selectList(queryWrapper);
|
| | | // 随机一个
|
| | | if (CollectionUtils.isEmpty(paymentMethodList)) {
|
| | | return Result.fail("收款方式为空");
|
| | | }
|
| | | memberQuickBuySaleDetailVo.setPlatforPaymentMethodList(paymentMethodList);
|
| | | long startTime = memberQuickBuySaleEntity.getCreateTime().getTime();
|
| | | long nowTime = new Date().getTime();
|
| | | long third = 30*60*1000;
|
| | | memberQuickBuySaleDetailVo.setTimeLeft((third-nowTime+startTime)/1000);
|
| | | return Result.ok(memberQuickBuySaleDetailVo);
|
| | | }
|
| | | |
| | | @Override
|
| | | public Result selectAll(String type) {
|
| | | MemberEntity member = LoginUserUtils.getAppLoginUser();
|
| | | QueryWrapper<MemberQuickBuySaleEntity> queryWrapper = new QueryWrapper<>();
|
| | | queryWrapper.eq("member_id", member.getId());
|
| | | queryWrapper.eq("order_type", type);
|
| | | List<MemberQuickBuySaleEntity> memberQuickBuySaleEntityList = memberQuickBuySaleDao.selectList(queryWrapper);
|
| | | List<MemberQuickBuySaleDetailVo> memberQuickBuySaleDetailVoList = MemberQuickBuySaleEntityMapper.INSTANCE.entityListToVoList(memberQuickBuySaleEntityList);
|
| | | return Result.ok(memberQuickBuySaleDetailVoList);
|
| | | }
|
| | | memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
|
| | |
|
| | | @Override
|
| | | public Result sell(MemberEntity member,MemberQuickBuySaleDto memberQuickBuySaleDto) {
|
| | | // 判断是否存在足够余额
|
| | | MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString());
|
| | | // 判断是否存在足够余额
|
| | | if(walletCoin ==null) {
|
| | | return Result.fail("您当前可用USDT额度不够");
|
| | | }
|
| | | BigDecimal extractUsdt = memberQuickBuySaleDto.getAmountUsdt();
|
| | | if (extractUsdt == null) {
|
| | | return Result.fail("请输入提币量");
|
| | | }
|
| | | // 判断是否足够
|
| | | System.out.println("提币数:"+extractUsdt.doubleValue()+" 可用:"+walletCoin.getAvailableBalance());
|
| | | if (extractUsdt.compareTo(walletCoin.getAvailableBalance())==1) {
|
| | | return Result.fail("您当前可用USDT额度不够");
|
| | | }
|
| | | ThreadPoolUtils.sendDingTalk(1);
|
| | | return Result.ok("确认成功");
|
| | | }
|
| | |
|
| | | // 判断是否存在收款方式
|
| | | List<MemberPaymentMethodEntity> payMentMethodList = memberPaymentMethodDao.selectByMemberId(member.getId());
|
| | | if(CollectionUtils.isEmpty(payMentMethodList)){
|
| | | return Result.fail("请配置收款方式");
|
| | | }
|
| | | // 冻结可用额度
|
| | | int i = memberWalletCoinDao.updateFrozenBalance(member.getId(),
|
| | | walletCoin.getId(), extractUsdt);
|
| | | if (i <= 0) {
|
| | | return Result.fail("可用USDT余额不足");
|
| | | }
|
| | | |
| | | // 生成订单号
|
| | | Long timestamp = System.currentTimeMillis();
|
| | | int random = (int) (Math.random() * 10);
|
| | | String chargeNo = String.valueOf(timestamp).substring(2) + random;
|
| | | // 插入订单表
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
|
| | | memberQuickBuySaleEntity.setOrderStatus(1);
|
| | | memberQuickBuySaleEntity.setMemberId(member.getId());
|
| | | memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt());
|
| | | memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny());
|
| | | memberQuickBuySaleEntity.setOrderNo(chargeNo);
|
| | | memberQuickBuySaleEntity.setOrderType("S");
|
| | | // 支付码 ID+四位随机数
|
| | | int ran = (int) (Math.random() * 10000000);
|
| | | memberQuickBuySaleEntity.setPaymentCode(ran + "");
|
| | | |
| | | memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
|
| | | @Override
|
| | | public Result selectById(Long id) {
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id);
|
| | | MemberQuickBuySaleDetailVo memberQuickBuySaleDetailVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity);
|
| | | // 收款信息
|
| | | QueryWrapper<PlatformPaymentMethodEntity> queryWrapper = new QueryWrapper<>();
|
| | | queryWrapper.eq("status", "1");
|
| | | List<PlatformPaymentMethodEntity> paymentMethodList = platformPaymentMethodDao.selectList(queryWrapper);
|
| | | // 随机一个
|
| | | if (CollectionUtils.isEmpty(paymentMethodList)) {
|
| | | return Result.fail("收款方式为空");
|
| | | }
|
| | | memberQuickBuySaleDetailVo.setPlatforPaymentMethodList(paymentMethodList);
|
| | | long startTime = memberQuickBuySaleEntity.getCreateTime().getTime();
|
| | | long nowTime = new Date().getTime();
|
| | | long third = 30 * 60 * 1000;
|
| | | memberQuickBuySaleDetailVo.setTimeLeft((third - nowTime + startTime) / 1000);
|
| | | return Result.ok(memberQuickBuySaleDetailVo);
|
| | | }
|
| | |
|
| | | // TODO dingtalk
|
| | | |
| | | return Result.ok("下单成功");
|
| | | }
|
| | | @Override
|
| | | public Result selectAll(String type) {
|
| | | MemberEntity member = LoginUserUtils.getAppLoginUser();
|
| | | QueryWrapper<MemberQuickBuySaleEntity> queryWrapper = new QueryWrapper<>();
|
| | | queryWrapper.eq("member_id", member.getId());
|
| | | if (!StringUtils.isEmpty(type)) {
|
| | | queryWrapper.eq("order_type", type);
|
| | | }
|
| | | queryWrapper.orderByDesc("id");
|
| | | List<MemberQuickBuySaleEntity> memberQuickBuySaleEntityList = memberQuickBuySaleDao.selectList(queryWrapper);
|
| | | List<MemberQuickBuySaleDetailVo> memberQuickBuySaleDetailVoList = MemberQuickBuySaleEntityMapper.INSTANCE.entityListToVoList(memberQuickBuySaleEntityList);
|
| | | return Result.ok(memberQuickBuySaleDetailVoList);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public Result cancelRecharge(Long id) {
|
| | | // 获取当前登录用户
|
| | | MemberEntity member = LoginUserUtils.getAppLoginUser();
|
| | | if(member==null) {
|
| | | return Result.fail("登录用户已失效");
|
| | | }
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(id,member.getId());
|
| | | memberQuickBuySaleEntity.setOrderStatus(1);
|
| | | memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
|
| | | |
| | | // 判断是否存在足够余额
|
| | | MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString());
|
| | | 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(member.getId(),CoinTypeEnum.USDT.toString());
|
| | | }
|
| | | return Result.ok("成功");
|
| | | }
|
| | | @Override
|
| | | public Result sell(MemberEntity member, MemberQuickBuySaleDto memberQuickBuySaleDto) {
|
| | | // 判断是否存在足够余额
|
| | | MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(), CoinTypeEnum.USDT.toString());
|
| | | // 判断是否存在足够余额
|
| | | if (walletCoin == null) {
|
| | | return Result.fail("您当前可用USDT额度不够");
|
| | | }
|
| | | BigDecimal extractUsdt = memberQuickBuySaleDto.getAmountUsdt();
|
| | | if (extractUsdt == null) {
|
| | | return Result.fail("请输入提币量");
|
| | | }
|
| | | // 判断是否足够
|
| | | System.out.println("提币数:" + extractUsdt.doubleValue() + " 可用:" + walletCoin.getAvailableBalance());
|
| | | if (extractUsdt.compareTo(walletCoin.getAvailableBalance()) == 1) {
|
| | | return Result.fail("您当前可用USDT额度不够");
|
| | | }
|
| | |
|
| | | // 判断是否存在收款方式
|
| | | List<MemberPaymentMethodEntity> payMentMethodList = memberPaymentMethodDao.selectByMemberId(member.getId());
|
| | | if (CollectionUtils.isEmpty(payMentMethodList)) {
|
| | | return Result.fail("请配置收款方式");
|
| | | }
|
| | | // 冻结可用额度
|
| | | int i = memberWalletCoinDao.updateFrozenBalance(member.getId(),
|
| | | walletCoin.getId(), extractUsdt);
|
| | | if (i <= 0) {
|
| | | return Result.fail("可用USDT余额不足");
|
| | | }
|
| | |
|
| | | // 生成订单号
|
| | | Long timestamp = System.currentTimeMillis();
|
| | | int random = (int) (Math.random() * 10);
|
| | | String chargeNo = String.valueOf(timestamp).substring(2) + random;
|
| | | // 插入订单表
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity();
|
| | | memberQuickBuySaleEntity.setOrderStatus(1);
|
| | | memberQuickBuySaleEntity.setMemberId(member.getId());
|
| | | memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt());
|
| | | memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny());
|
| | | memberQuickBuySaleEntity.setOrderNo(chargeNo);
|
| | | memberQuickBuySaleEntity.setOrderType("S");
|
| | | // 支付码 ID+四位随机数
|
| | | int ran = (int) (Math.random() * 10000000);
|
| | | memberQuickBuySaleEntity.setPaymentCode(ran + "");
|
| | |
|
| | | memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
|
| | |
|
| | | ThreadPoolUtils.sendDingTalk(2);
|
| | | return Result.ok("下单成功");
|
| | | }
|
| | |
|
| | | @Override
|
| | | public Result cancelRecharge(Long id) {
|
| | | // 获取当前登录用户
|
| | | MemberEntity member = LoginUserUtils.getAppLoginUser();
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(), id);
|
| | | memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER);
|
| | | memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
|
| | | return Result.ok("成功");
|
| | | }
|
| | |
|
| | | @Override
|
| | | public Result cancelSell(Long id) {
|
| | | // 获取当前登录用户
|
| | | MemberEntity member = LoginUserUtils.getAppLoginUser();
|
| | | MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(), id);
|
| | | if (memberQuickBuySaleEntity != null) {
|
| | | memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER);
|
| | | memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
|
| | |
|
| | | MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(), CoinTypeEnum.USDT.toString());
|
| | | // 冻结资金返回可用
|
| | | int i = memberWalletCoinDao.subFrozenBalance(member.getId(),
|
| | | walletCoin.getId(), memberQuickBuySaleEntity.getAmountUsdt());
|
| | | if (i < 0) {
|
| | | return Result.fail("撤单失败");
|
| | | }
|
| | | return Result.ok("成功");
|
| | | } else {
|
| | | return Result.fail("订单不存在");
|
| | | }
|
| | |
|
| | | }
|
| | | }
|