package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.mall.YesOrNoEnum; import cc.mrbird.febs.mall.dto.AdminSystemPayDto; import cc.mrbird.febs.mall.entity.ChatAmountFlow; import cc.mrbird.febs.mall.entity.ChatUser; import cc.mrbird.febs.mall.entity.MemberCoinWithdraw; import cc.mrbird.febs.mall.mapper.ChatAmountFlowMapper; import cc.mrbird.febs.mall.mapper.ChatUserMapper; import cc.mrbird.febs.mall.service.IAdminChatService; import cc.mrbird.febs.mall.vo.AdminChatAmountFlowVo; import cc.mrbird.febs.mall.vo.AdminChatCahrgeVo; import cc.mrbird.febs.mall.vo.AdminChatUserVo; import cc.mrbird.febs.mall.vo.AdminChatWithDrawVo; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; @Slf4j @Service @RequiredArgsConstructor @Transactional public class AdminChatServiceImpl extends ServiceImpl implements IAdminChatService { private final ChatAmountFlowMapper chatAmountFlowMapper; @Override public IPage getUserList(ChatUser chatUser, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage chatUserIPage = this.baseMapper.selectUserListInPage(page, chatUser); return chatUserIPage; } @Override public FebsResponse openAccount(String userId) { ChatUser chatUser = this.baseMapper.selectByUserId(userId); if(ObjectUtil.isEmpty(chatUser)) { return new FebsResponse().fail().message("会员信息不存在"); } this.baseMapper.updateStatusByUserId(userId,YesOrNoEnum.YES.getCode()); return new FebsResponse().success(); } @Override public FebsResponse closeAccount(String userId) { ChatUser chatUser = this.baseMapper.selectByUserId(userId); if(ObjectUtil.isEmpty(chatUser)) { return new FebsResponse().fail().message("会员信息不存在"); } this.baseMapper.updateStatusByUserId(userId,YesOrNoEnum.NO.getCode()); return new FebsResponse().success(); } @Override public FebsResponse updateSystemPay(AdminSystemPayDto adminSystemPayDto) { ChatUser chatUser = this.baseMapper.selectByUserId(adminSystemPayDto.getId()); if(ObjectUtil.isEmpty(chatUser)) { return new FebsResponse().fail().message("会员信息不存在"); } BigDecimal addBalance = adminSystemPayDto.getAddBalance(); BigDecimal balance = adminSystemPayDto.getBalance(); if(BigDecimal.ZERO.compareTo(addBalance) > 0){ //减少余额,则判断增加数量的绝对值是否大于余额,避免出现负数 if(addBalance.negate().compareTo(balance) > 0){ return new FebsResponse().fail().message("余额不能为负数,请调整拨付数量"); } } //增加用户的余额 this.baseMapper.updateBalanceByUserId(adminSystemPayDto.getId(),addBalance); ChatAmountFlow chatAmountFlow = new ChatAmountFlow(); chatAmountFlow.setAmount(addBalance); chatAmountFlow.setAvaAmount(balance); chatAmountFlow.setCreateTime(DateUtil.date()); chatAmountFlow.setRemark("系统拨付"); chatAmountFlow.setType(6); chatAmountFlow.setUserId(chatUser.getUserId()); chatAmountFlow.setState(1); chatAmountFlowMapper.insert(chatAmountFlow); return new FebsResponse().success(); } @Override public IPage getFlowList(ChatUser chatUser, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage chatUserIPage = this.baseMapper.selectAmountFlowListInPage(page, chatUser); return chatUserIPage; } @Override public IPage getChargeList(ChatUser chatUser, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminChatCahrgeVos = this.baseMapper.selectChargeListInPage(page, chatUser); return adminChatCahrgeVos; } @Override public IPage getWithdrawList(ChatUser chatUser, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminChatWithDrawVos = this.baseMapper.selectWithdrawListInPage(page, chatUser); return adminChatWithDrawVos; } @Override public FebsResponse agreeEvent(String id) { MemberCoinWithdraw memberCoinWithdraw = this.baseMapper.selectWithdrawInfoById(id); if(ObjectUtil.isEmpty(memberCoinWithdraw)) { return new FebsResponse().fail().message("提现记录不存在"); } Integer state = memberCoinWithdraw.getState(); if(3 != state){ return new FebsResponse().fail().message("提现记录不是进行中的状态"); } this.baseMapper.updateWithdrawStateById(1,id); this.baseMapper.updateAmountFlowListByWithdrawId(id,memberCoinWithdraw.getUserId(),1); return new FebsResponse().success(); } @Override public FebsResponse disagreeEvent(String id) { MemberCoinWithdraw memberCoinWithdraw = this.baseMapper.selectWithdrawInfoById(id); if(ObjectUtil.isEmpty(memberCoinWithdraw)) { return new FebsResponse().fail().message("提现记录不存在"); } Integer state = memberCoinWithdraw.getState(); if(3 != state){ return new FebsResponse().fail().message("提现记录不是进行中的状态"); } this.baseMapper.updateWithdrawStateById(2,id); //增加用户的余额 this.baseMapper.updateBalanceByUserId(memberCoinWithdraw.getUserId(),memberCoinWithdraw.getAmount()); this.baseMapper.updateAmountFlowListByWithdrawId(id,memberCoinWithdraw.getUserId(),2); return new FebsResponse().success(); } }