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.common.utils.RedisUtils; import cc.mrbird.febs.mall.YesOrNoEnum; import cc.mrbird.febs.mall.dto.AdminSystemPayDto; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.ChatAmountFlowMapper; import cc.mrbird.febs.mall.mapper.ChatGroupMapper; import cc.mrbird.febs.mall.mapper.ChatUserMapper; import cc.mrbird.febs.mall.mapper.DataDictionaryMapper; import cc.mrbird.febs.mall.service.IAdminChatService; import cc.mrbird.febs.mall.vo.*; import cc.mrbird.febs.rabbit.producter.AgentProducer; 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 org.springframework.util.StringUtils; import java.math.BigDecimal; @Slf4j @Service @RequiredArgsConstructor @Transactional public class AdminChatServiceImpl extends ServiceImpl implements IAdminChatService { private final ChatAmountFlowMapper chatAmountFlowMapper; private final DataDictionaryMapper dataDictionaryMapper; private final ChatGroupMapper chatGroupMapper; private final AgentProducer agentProducer; private final RedisUtils redisUtils; @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()); if (chatUser != null) { // 清理token String token = chatUser.getToken(); if (!StringUtils.isEmpty(token)) { String TOKEN_REDIS_APP = "token:app:"; redisUtils.del(TOKEN_REDIS_APP + token); } } 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(); } @Override public FebsResponse openSwitchIsRobot(String userId) { ChatUser chatUser = this.baseMapper.selectByUserId(userId); if(ObjectUtil.isEmpty(chatUser)) { return new FebsResponse().fail().message("会员信息不存在"); } this.baseMapper.updateIsRobotByUserId(userId,1); return new FebsResponse().success(); } @Override public FebsResponse closeSwitchIsRobot(String userId) { ChatUser chatUser = this.baseMapper.selectByUserId(userId); if(ObjectUtil.isEmpty(chatUser)) { return new FebsResponse().fail().message("会员信息不存在"); } this.baseMapper.updateIsRobotByUserId(userId,0); return new FebsResponse().success(); } @Override public void updateDataDic(String type, String code, String modelType) { DataDictionary dic = this.baseMapper.selectDicDataByTypeAndCode(type, code); if (dic != null) { dic.setValue(modelType); dataDictionaryMapper.updateById(dic); } } @Override public IPage getGroupList(ChatUser chatUser, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); return this.baseMapper.selectGroupListInPage(page, chatUser); } @Override public FebsResponse closeSwitchUseRobot(String id) { this.baseMapper.updateIsRobotByGroupId(id,0); return new FebsResponse().success(); } @Override public FebsResponse openSwitchUseRobot(String id) { this.baseMapper.updateIsRobotByGroupId(id,1); return new FebsResponse().success(); } @Override public FebsResponse updateGroupInfo(AdminGroupInfoVo adminGroupInfoVo) { ChatGroup chatGroup = chatGroupMapper.selectById(adminGroupInfoVo.getId()); if(ObjectUtil.isEmpty(chatGroup)) { return new FebsResponse().fail().message("信息不存在"); } chatGroup.setAmountMin(adminGroupInfoVo.getAmountMin()); chatGroup.setAmountMax(adminGroupInfoVo.getAmountMax()); chatGroup.setRedBagCnt(adminGroupInfoVo.getRedBagCnt()); chatGroup.setModelType(adminGroupInfoVo.getModelType()); chatGroupMapper.updateById(chatGroup); return new FebsResponse().success(); } @Override public FebsResponse registerMember() { agentProducer.sendAddRobotMsg("20845477"); return new FebsResponse().success(); } @Override public FebsResponse openModelType(String userId) { ChatUser chatUser = this.baseMapper.selectByUserId(userId); if(ObjectUtil.isEmpty(chatUser)) { return new FebsResponse().fail().message("会员信息不存在"); } this.baseMapper.updateModelTypeByUserId(userId,1); return new FebsResponse().success(); } @Override public FebsResponse closeModelType(String userId) { ChatUser chatUser = this.baseMapper.selectByUserId(userId); if(ObjectUtil.isEmpty(chatUser)) { return new FebsResponse().fail().message("会员信息不存在"); } this.baseMapper.updateModelTypeByUserId(userId,2); return new FebsResponse().success(); } @Override public FebsResponse updateRegisterMember(AdminRegisterMemberVo adminRegisterMemberVo) { agentProducer.sendAddRobotMsg(adminRegisterMemberVo.getInviteId()); return new FebsResponse().success(); } }