package com.xcong.excoin.modules.otc.service.impl; 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 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 otcShopList(OtcMarketBussinessEntity otcMarketBussinessEntity, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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 otcAppealList(OtcOrderAppealEntity otcOrderAppealEntity, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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 otcEntrustList(OtcEntrustOrderEntity otcEntrustOrderEntity, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage otcEntrustOrderEntitys = otcEntrustOrderMapper.otcEntrustList(page, otcEntrustOrderEntity); return otcEntrustOrderEntitys; } @Override public IPage otcOrderList(OtcOrderEntity otcOrderEntity, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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 queryWrapper = new QueryWrapper<>(); queryWrapper.eq("order_no",otcOrder.getOrderNo()); List 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 otcSettingList(OtcSettingEntity otcSettingEntity, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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(); } }