From cf200a1f92c01ba22c326c49391f748ffb006910 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 05 Jul 2021 17:28:35 +0800
Subject: [PATCH] 20210617  开售开关

---
 src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcServiceImpl.java |  358 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 357 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcServiceImpl.java b/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcServiceImpl.java
index 111aba1..a90136b 100644
--- a/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcServiceImpl.java
@@ -1,4 +1,360 @@
 package com.xcong.excoin.modules.otc.service.impl;
 
-public class OtcServiceImpl {
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.MemberWalletCoinEntity;
+import com.xcong.excoin.modules.member.mapper.MemberMapper;
+import com.xcong.excoin.modules.member.mapper.MemberWalletCoinMapper;
+import com.xcong.excoin.modules.otc.entity.*;
+import com.xcong.excoin.modules.otc.mapper.*;
+import com.xcong.excoin.modules.otc.service.OtcService;
+import com.xcong.excoin.modules.otc.vo.OtcAppealInfoVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class OtcServiceImpl extends ServiceImpl<OtcMarketBussinessMapper, OtcMarketBussinessEntity> implements OtcService {
+
+    @Resource
+    private OtcMarketBussinessMapper otcMarketBussinessMapper;
+    @Resource
+    private OtcOrderAppealMapper otcOrderAppealMapper;
+    @Resource
+    private OtcEntrustOrderMapper otcEntrustOrderMapper;
+    @Resource
+    private OtcOrderMapper otcOrderMapper;
+    @Resource
+    private OtcSettingMapper otcSettingMapper;
+    @Resource
+    private MemberWalletCoinMapper memberWalletCoinMapper;
+    @Resource
+    private MemberMapper memberMapper;
+
+    @Override
+    public IPage<OtcMarketBussinessEntity> otcShopList(OtcMarketBussinessEntity otcMarketBussinessEntity, QueryRequest request) {
+        Page<OtcMarketBussinessEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<OtcMarketBussinessEntity> otcMarketBussinessEntitys = otcMarketBussinessMapper.otcShopList(page, otcMarketBussinessEntity);
+        return otcMarketBussinessEntitys;
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse agreeShop(Long id) {
+        OtcMarketBussinessEntity otcMarketBussinessEntity = otcMarketBussinessMapper.selectById(id);
+        Integer status = otcMarketBussinessEntity.getStatus();
+        if(OtcMarketBussinessEntity.STATUS_ONE != status){
+            return new FebsResponse().fail().message("当前状态不是待审核");
+        }
+        otcMarketBussinessEntity.setStatus(OtcMarketBussinessEntity.STATUS_TWO);
+        otcMarketBussinessMapper.updateById(otcMarketBussinessEntity);
+
+        long memberId = otcMarketBussinessEntity.getMemberId();
+        MemberEntity memberEntity = memberMapper.selectById(memberId);
+        memberEntity.setIsTrader(MemberEntity.ISTRADER_Y);
+        memberMapper.updateById(memberEntity);
+        return new FebsResponse().success();
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse disagreeShop(Long id) {
+        OtcMarketBussinessEntity otcMarketBussinessEntity = otcMarketBussinessMapper.selectById(id);
+        Integer status = otcMarketBussinessEntity.getStatus();
+        if(OtcMarketBussinessEntity.STATUS_ONE != status){
+            return new FebsResponse().fail().message("当前状态不是待审核");
+        }
+        otcMarketBussinessEntity.setStatus(OtcMarketBussinessEntity.STATUS_THREE);
+        otcMarketBussinessMapper.updateById(otcMarketBussinessEntity);
+
+        long memberId = otcMarketBussinessEntity.getMemberId();
+        MemberEntity memberEntity = memberMapper.selectById(memberId);
+        memberEntity.setIsTrader(MemberEntity.ISTRADER_Y);
+        memberMapper.updateById(memberEntity);
+        return new FebsResponse().success();
+    }
+
+    @Override
+    public IPage<OtcOrderAppealEntity> otcAppealList(OtcOrderAppealEntity otcOrderAppealEntity, QueryRequest request) {
+        Page<OtcOrderAppealEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<OtcOrderAppealEntity> otcOrderAppealEntitys = otcOrderAppealMapper.otcAppealList(page, otcOrderAppealEntity);
+        return otcOrderAppealEntitys;
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse dealDone(Long id) {
+        OtcOrderAppealEntity otcOrderAppealEntity = otcOrderAppealMapper.selectById(id);
+        Integer status = otcOrderAppealEntity.getStatus();
+        if(OtcOrderAppealEntity.STATUS_TWO != status){
+            return new FebsResponse().fail().message("当前状态不是处理中");
+        }
+
+        otcOrderAppealEntity.setStatus(OtcOrderAppealEntity.STATUS_THREE);
+        otcOrderAppealMapper.updateById(otcOrderAppealEntity);
+        return new FebsResponse().success();
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse dealIng(Long id) {
+        OtcOrderAppealEntity otcOrderAppealEntity = otcOrderAppealMapper.selectById(id);
+        Integer status = otcOrderAppealEntity.getStatus();
+        if(OtcOrderAppealEntity.STATUS_ONE != status){
+            return new FebsResponse().fail().message("当前状态不是待处理");
+        }
+
+        otcOrderAppealEntity.setStatus(OtcOrderAppealEntity.STATUS_TWO);
+        otcOrderAppealMapper.updateById(otcOrderAppealEntity);
+        return new FebsResponse().success();
+    }
+
+    @Override
+    public IPage<OtcEntrustOrderEntity> otcEntrustList(OtcEntrustOrderEntity otcEntrustOrderEntity, QueryRequest request) {
+        Page<OtcEntrustOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<OtcEntrustOrderEntity> otcEntrustOrderEntitys = otcEntrustOrderMapper.otcEntrustList(page, otcEntrustOrderEntity);
+        return otcEntrustOrderEntitys;
+    }
+
+    @Override
+    public IPage<OtcOrderEntity> otcOrderList(OtcOrderEntity otcOrderEntity, QueryRequest request) {
+        Page<OtcOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<OtcOrderEntity> otcOrderEntitys = otcOrderMapper.otcOrderList(page, otcOrderEntity);
+        return otcOrderEntitys;
+    }
+
+    @Override
+    public OtcAppealInfoVo otcAppealInfo(long id) {
+        OtcAppealInfoVo otcAppealInfoVo = new OtcAppealInfoVo();
+
+        OtcOrderAppealEntity otcOrderAppealEntity = otcOrderAppealMapper.selectById(id);
+        otcAppealInfoVo.setId(id);
+        if(ObjectUtil.isNotEmpty(otcOrderAppealEntity)){
+            String reason = otcOrderAppealEntity.getReason();
+            otcAppealInfoVo.setReason(reason);
+            String content = otcOrderAppealEntity.getContent();
+            List arr = Arrays.asList(content.split(","));
+            otcAppealInfoVo.setContent(arr);
+        }
+        //获取对应的订单详情
+        long orderId = otcOrderAppealEntity.getOrderId();
+        OtcOrderEntity otcOrderEntity = otcOrderMapper.selectById(orderId);
+        if(ObjectUtil.isNotEmpty(otcOrderEntity)){
+            String orderNo = otcOrderEntity.getOrderNo();
+            otcAppealInfoVo.setOrderNo(orderNo);
+            BigDecimal unitPrice = otcOrderEntity.getUnitPrice();
+            otcAppealInfoVo.setUnitPrice(unitPrice);
+            BigDecimal coinAmount = otcOrderEntity.getCoinAmount();
+            otcAppealInfoVo.setCoinAmount(coinAmount);
+            BigDecimal totalAmount = otcOrderEntity.getTotalAmount();
+            otcAppealInfoVo.setTotalAmount(totalAmount);
+            Integer status = otcOrderEntity.getStatus();
+            otcAppealInfoVo.setStatus(status);
+            Date payTime = otcOrderEntity.getPayTime();
+            otcAppealInfoVo.setPayTime(payTime);
+            Date finishTime = otcOrderEntity.getFinishTime();
+            otcAppealInfoVo.setFinishTime(finishTime);
+        }
+        //获取对应的商户信息
+        long payMdId = otcOrderEntity.getPayMbId();
+        OtcMarketBussinessEntity otcMarketBussinessEntity = otcMarketBussinessMapper.selectById(payMdId);
+        if(ObjectUtil.isNotEmpty(otcMarketBussinessEntity)){
+            String nikename = otcMarketBussinessEntity.getNikename();
+            otcAppealInfoVo.setNikename(nikename);
+        }
+        return otcAppealInfoVo;
+    }
+
+    @Override
+    public OtcOrderEntity otcOrderInfo(long id) {
+        OtcOrderEntity otcOrderEntity = otcOrderMapper.selectById(id);
+        return otcOrderEntity;
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse updateOrderInfo(OtcOrderEntity otcOrderEntity) {
+        Long id = otcOrderEntity.getId();
+        OtcOrderEntity otcOrder = otcOrderMapper.selectById(id);
+        if(ObjectUtil.isEmpty(otcOrder)){
+            return new FebsResponse().fail().message("连接超时,请刷新页面重试");
+        }
+        Integer status = otcOrder.getStatus();
+        if(OtcOrderEntity.STATUS_ONE != status){
+            return new FebsResponse().fail().message("当前订单不是待付款状态");
+        }
+        String payName = otcOrderEntity.getPayName();
+        if(StrUtil.isEmpty(payName)){
+            return new FebsResponse().fail().message("请输入付款人");
+        }
+        BigDecimal coinAmount = otcOrderEntity.getCoinAmount();
+        /**
+         * 获取订单信息--订单编号
+         *      获取买单和买单
+         *      更新payName字段
+         *      更新订单状态
+         */
+        QueryWrapper<OtcOrderEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("order_no",otcOrder.getOrderNo());
+        List<OtcOrderEntity> list = otcOrderMapper.selectList(queryWrapper);
+        if(CollUtil.isNotEmpty(list)){
+            for(OtcOrderEntity order : list){
+                order.setStatus(OtcOrderEntity.STATUS_TWO);
+                order.setPayName(payName);
+                order.setPayTime(DateUtil.date());
+                otcOrderMapper.updateById(order);
+            }
+        }
+        return new FebsResponse().success();
+    }
+
+    @Override
+    public OtcMarketBussinessEntity otcHuiKuan(long id) {
+        return otcMarketBussinessMapper.selectById(id);
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse otcHuiKuan(OtcMarketBussinessEntity otcMarketBussinessEntity) {
+        Long id = otcMarketBussinessEntity.getId();
+        OtcMarketBussinessEntity otcMarketBussiness = otcMarketBussinessMapper.selectById(id);
+        if(ObjectUtil.isNotEmpty(otcMarketBussiness)){
+            return new FebsResponse().fail().message("连接超时,请刷新页面重试");
+        }
+        BigDecimal coinAmount = otcMarketBussinessEntity.getCoinAmount();
+        if(coinAmount.compareTo(BigDecimal.ZERO) <= 0){
+            return new FebsResponse().fail().message("请输入正确的回款金额");
+        }
+        BigDecimal waitBackMoney = otcMarketBussiness.getWaitBackMoney();
+        if(coinAmount.compareTo(waitBackMoney) > 0){
+            return new FebsResponse().fail().message("请输入正确的回款金额");
+        }
+        /**
+         * 增加已回款金额
+         * 减少待回款金额
+         * 增加汇款记录
+         */
+        BigDecimal hasBackMoney = otcMarketBussiness.getHasBackMoney();
+        BigDecimal add = hasBackMoney.add(coinAmount);
+        otcMarketBussiness.setHasBackMoney(add);
+
+        BigDecimal subtract = waitBackMoney.subtract(coinAmount);
+        otcMarketBussiness.setWaitBackMoney(subtract);
+        otcMarketBussinessMapper.updateById(otcMarketBussiness);
+
+        return new FebsResponse().success();
+    }
+
+    @Override
+    public IPage<OtcSettingEntity> otcSettingList(OtcSettingEntity otcSettingEntity, QueryRequest request) {
+        Page<OtcSettingEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<OtcSettingEntity> otcSettingEntitys = otcSettingMapper.otcSettingList(page, otcSettingEntity);
+        return otcSettingEntitys;
+    }
+
+    @Override
+    public OtcSettingEntity otcSettingUpdate(long id) {
+        return otcSettingMapper.selectById(id);
+    }
+
+    @Override
+    public FebsResponse updateOtcSetting(OtcSettingEntity otcSettingEntity) {
+        Integer orderNum = otcSettingEntity.getOrderNum();
+        if(ObjectUtil.isEmpty(orderNum) || orderNum < 0){
+            return new FebsResponse().fail().message("请设置正确的总单数");
+        }
+        BigDecimal completionRate = otcSettingEntity.getCompletionRate();
+        if(ObjectUtil.isEmpty(completionRate) || completionRate.compareTo(BigDecimal.ZERO) < 0){
+            return new FebsResponse().fail().message("请设置正确的完成率");
+        }
+        BigDecimal totalAmount = otcSettingEntity.getTotalAmount();
+        if(ObjectUtil.isEmpty(totalAmount) || totalAmount.compareTo(BigDecimal.ZERO) < 0){
+            return new FebsResponse().fail().message("请设置正确的总金额");
+        }
+
+        Integer cancellNum = otcSettingEntity.getCancellNum();
+        if(ObjectUtil.isEmpty(cancellNum) || cancellNum < 0){
+            return new FebsResponse().fail().message("请设置正确的取消次数");
+        }
+        otcSettingMapper.updateById(otcSettingEntity);
+        return new FebsResponse().success();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int reduceCoin(Long id) {
+        OtcOrderEntity order = otcOrderMapper.selectById(id);
+
+        MemberWalletCoinEntity saleWallet = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(order.getMemberId(), "USDT");
+        MemberWalletCoinEntity buyWallet = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(order.getOppositeMemberId(), "USDT");
+
+        memberWalletCoinMapper.updateBlockBalance(order.getCoinAmount(), buyWallet.getId());
+        memberWalletCoinMapper.reduceFrozenBalance(order.getCoinAmount(), saleWallet.getId());
+
+        otcOrderMapper.updateOrderStatusByOrderNo(OtcOrderEntity.STATUS_THREE, order.getOrderNo());
+        return 1;
+    }
+
+    @Override
+    public OtcEntrustOrderEntity otcEntrustListUpdate(long id) {
+        return otcEntrustOrderMapper.selectById(id);
+    }
+
+    @Override
+    public FebsResponse otcEntrustConfirm(OtcEntrustOrderEntity otcEntrustOrderEntity) {
+        Long id = otcEntrustOrderEntity.getId();
+        OtcEntrustOrderEntity otcEntrustOrder = otcEntrustOrderMapper.selectById(id);
+        BigDecimal unitPrice = otcEntrustOrderEntity.getUnitPrice();
+        if(ObjectUtil.isEmpty(unitPrice) || unitPrice.compareTo(BigDecimal.ZERO) < 0){
+            return new FebsResponse().fail().message("请设置正确的单价");
+        }
+        otcEntrustOrder.setUnitPrice(unitPrice);
+        BigDecimal coinAmount = otcEntrustOrderEntity.getCoinAmount();
+        if(ObjectUtil.isEmpty(coinAmount) || coinAmount.compareTo(BigDecimal.ZERO) < 0){
+            return new FebsResponse().fail().message("请设置正确的数量");
+        }
+        otcEntrustOrder.setCoinAmount(coinAmount);
+        BigDecimal totalAmount = coinAmount.multiply(unitPrice);
+        otcEntrustOrder.setTotalAmount(totalAmount);
+
+        BigDecimal remainCoinAmount = otcEntrustOrderEntity.getRemainCoinAmount();
+        if(ObjectUtil.isEmpty(remainCoinAmount) || remainCoinAmount.compareTo(BigDecimal.ZERO) < 0
+                || totalAmount.compareTo(remainCoinAmount) < 0){
+            return new FebsResponse().fail().message("请设置正确的剩余数量");
+        }
+        otcEntrustOrder.setRemainCoinAmount(remainCoinAmount);
+        BigDecimal limitMinAmount = otcEntrustOrderEntity.getLimitMinAmount();
+        if(ObjectUtil.isEmpty(limitMinAmount) || limitMinAmount.compareTo(BigDecimal.ZERO) < 0){
+            return new FebsResponse().fail().message("请设置正确的最小限额");
+        }
+        otcEntrustOrder.setLimitMinAmount(limitMinAmount);
+        BigDecimal limitMaxAmount = otcEntrustOrderEntity.getLimitMaxAmount();
+        if(ObjectUtil.isEmpty(limitMaxAmount) || limitMaxAmount.compareTo(BigDecimal.ZERO) < 0
+                || limitMaxAmount.compareTo(limitMinAmount) < 0 || totalAmount.compareTo(limitMaxAmount) < 0){
+            return new FebsResponse().fail().message("请设置正确的最大限额");
+        }
+        otcEntrustOrder.setLimitMaxAmount(limitMaxAmount);
+        otcEntrustOrder.setStatus(otcEntrustOrderEntity.getStatus());
+        otcEntrustOrderMapper.updateById(otcEntrustOrder);
+
+        return new FebsResponse().success();
+    }
 }

--
Gitblit v1.9.1