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.*;
|
import cc.mrbird.febs.mall.service.IAdminChatService;
|
import cc.mrbird.febs.mall.vo.*;
|
import cc.mrbird.febs.rabbit.producter.AgentProducer;
|
import cn.hutool.core.collection.CollUtil;
|
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;
|
import java.util.List;
|
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
@Transactional
|
public class AdminChatServiceImpl extends ServiceImpl<ChatUserMapper, ChatUser> implements IAdminChatService {
|
|
private final ChatAmountFlowMapper chatAmountFlowMapper;
|
private final DataDictionaryMapper dataDictionaryMapper;
|
private final ChatGroupMapper chatGroupMapper;
|
private final ChatVersionMapper chatVersionMapper;
|
private final AgentProducer agentProducer;
|
private final RedisUtils redisUtils;
|
|
@Override
|
public IPage<AdminChatUserVo> getUserList(ChatUser chatUser, QueryRequest request) {
|
Page<AdminChatUserVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminChatUserVo> chatUserIPage = this.baseMapper.selectUserListInPage(page, chatUser);
|
return chatUserIPage;
|
}
|
|
@Override
|
public IPage<AdminChatUserPerkVo> getUserPerkList(ChatUser chatUser, QueryRequest request) {
|
Page<AdminChatUserPerkVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
log.info(String.valueOf(chatUser.getIsRobot()));
|
IPage<AdminChatUserPerkVo> chatUserPerkVoIPage = this.baseMapper.selectUserPerkListInPage(page, chatUser);
|
List<AdminChatUserPerkVo> records = chatUserPerkVoIPage.getRecords();
|
if(CollUtil.isNotEmpty(records)){
|
for(AdminChatUserPerkVo adminChatUserPerkVo : records){
|
Long userId = adminChatUserPerkVo.getUserId();
|
List<AdminChatRedBagVo> group = this.baseMapper.selectListByMsgType(userId,"GROUP", null);
|
// adminChatUserPerkVo.setGroupRedBagNum(CollUtil.isEmpty(group) ? 0 : group.size());
|
BigDecimal redBagTotalAmount = group.stream().map(AdminChatRedBagVo::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
adminChatUserPerkVo.setRedBagTotalAmount(redBagTotalAmount);
|
BigDecimal redBagAvaAmount = group.stream().map(AdminChatRedBagVo::getAmountAva).reduce(BigDecimal.ZERO, BigDecimal::add);
|
adminChatUserPerkVo.setRedBagAvaAmount(redBagAvaAmount);
|
BigDecimal getRedbagAmount = this.baseMapper.selectTotalType(9, null, null);
|
adminChatUserPerkVo.setGetRedbagAmount(getRedbagAmount);
|
BigDecimal boomToAmount = this.baseMapper.selectTotalType(10, null, null);
|
adminChatUserPerkVo.setBoomToAmount(boomToAmount);
|
BigDecimal teamPerkAmount = this.baseMapper.selectTotalType(7, null, null);
|
adminChatUserPerkVo.setTeamPerkAmount(teamPerkAmount);
|
}
|
}
|
return chatUserPerkVoIPage;
|
}
|
|
@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<AdminChatAmountFlowVo> getFlowList(ChatUser chatUser, QueryRequest request) {
|
Page<AdminChatAmountFlowVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminChatAmountFlowVo> chatUserIPage = this.baseMapper.selectAmountFlowListInPage(page, chatUser);
|
return chatUserIPage;
|
}
|
|
@Override
|
public IPage<AdminChatCahrgeVo> getChargeList(ChatUser chatUser, QueryRequest request) {
|
Page<AdminChatCahrgeVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminChatCahrgeVo> adminChatCahrgeVos = this.baseMapper.selectChargeListInPage(page, chatUser);
|
return adminChatCahrgeVos;
|
}
|
|
@Override
|
public IPage<AdminChatWithDrawVo> getWithdrawList(ChatUser chatUser, QueryRequest request) {
|
Page<AdminChatWithDrawVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminChatWithDrawVo> 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<AdminGroupVo> getGroupList(ChatUser chatUser, QueryRequest request) {
|
Page<AdminGroupVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
return this.baseMapper.selectGroupListInPage(page, chatUser);
|
}
|
|
@Override
|
public IPage<AdminVersionVo> getVersionList(ChatUser chatUser, QueryRequest request) {
|
Page<AdminVersionVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
return this.baseMapper.selectVersionListInPage(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 updateVersionInfo(AdminVersionVo adminVersionVo) {
|
ChatVersion chatVersion = chatVersionMapper.selectById(adminVersionVo.getId());
|
if(ObjectUtil.isEmpty(chatVersion)) {
|
return new FebsResponse().fail().message("信息不存在");
|
}
|
chatVersion.setVersion(adminVersionVo.getVersion());
|
chatVersion.setContent(adminVersionVo.getContent());
|
chatVersion.setUrl(adminVersionVo.getUrl());
|
chatVersion.setDescr(adminVersionVo.getDescr());
|
chatVersionMapper.updateById(chatVersion);
|
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();
|
}
|
|
@Override
|
public FebsResponse openSwitchAutoSend(String id) {
|
this.baseMapper.updateAutoSendByGroupId(id,1);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse closeSwitchAutoSend(String id) {
|
this.baseMapper.updateAutoSendByGroupId(id,0);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public IPage<AdminRedBagVo> getRedBagList(ChatUser chatUser, QueryRequest request) {
|
Page<AdminRedBagVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
return this.baseMapper.selectRedBagListInPage(page, chatUser);
|
}
|
|
@Override
|
public FebsResponse openCreateGroup(String userId) {
|
ChatUser chatUser = this.baseMapper.selectByUserId(userId);
|
if(ObjectUtil.isEmpty(chatUser)) {
|
return new FebsResponse().fail().message("会员信息不存在");
|
}
|
this.baseMapper.updateCreateGroupByUserId(userId,1);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse closeCreateGroup(String userId) {
|
ChatUser chatUser = this.baseMapper.selectByUserId(userId);
|
if(ObjectUtil.isEmpty(chatUser)) {
|
return new FebsResponse().fail().message("会员信息不存在");
|
}
|
this.baseMapper.updateCreateGroupByUserId(userId,0);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse openSwitchGetBoom(String userId) {
|
ChatUser chatUser = this.baseMapper.selectByUserId(userId);
|
if(ObjectUtil.isEmpty(chatUser)) {
|
return new FebsResponse().fail().message("会员信息不存在");
|
}
|
this.baseMapper.updateGetBoomByUserId(userId,1);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse closeSwitchGetBoom(String userId) {
|
ChatUser chatUser = this.baseMapper.selectByUserId(userId);
|
if(ObjectUtil.isEmpty(chatUser)) {
|
return new FebsResponse().fail().message("会员信息不存在");
|
}
|
this.baseMapper.updateGetBoomByUserId(userId,0);
|
return new FebsResponse().success();
|
}
|
}
|