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.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion; import cc.mrbird.febs.mall.dto.AdminLeaderAddDto; import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto; import cc.mrbird.febs.mall.dto.ApiApplayLeaderDto; import cc.mrbird.febs.mall.entity.MallGoodsCategory; import cc.mrbird.febs.mall.entity.MallLeaderStock; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallTeamLeader; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService; import cc.mrbird.febs.mall.vo.AdminMallActSetVo; import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo; import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; 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 lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.formula.functions.T; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @Slf4j @Service @RequiredArgsConstructor @Transactional public class AdminMallTeamLeaderServiceImpl extends ServiceImpl implements IAdminMallTeamLeaderService { private final MallLeaderStockMapper mallLeaderStockMapper; private final MallGoodsMapper mallGoodsMapper; private final MallMemberMapper mallMemberMapper; private final MallMoneyFlowMapper mallMoneyFlowMapper; @Override public IPage getLeaderListInPage(MallTeamLeader mallTeamLeader, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminMallActSetVos = this.baseMapper.selectLeaderListInPage(page, mallTeamLeader); List records = adminMallActSetVos.getRecords(); if(CollUtil.isNotEmpty(adminMallActSetVos.getRecords())){ for(AdminMallTeamLeaderVo adminMallTeamLeaderVo : records){ BigDecimal totalProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(adminMallTeamLeaderVo.getMemberId(), FlowTypeEnum.BALANCE.getValue(), MoneyFlowTypeEnum.LEADERACHIEVE.getValue(), null,null,null).setScale(2,BigDecimal.ROUND_DOWN); adminMallTeamLeaderVo.setTotalProfit(totalProfit); } } return adminMallActSetVos; } @Override public AdminMallTeamLeaderVo getMallTeamLederInfoById(long id) { MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); AdminMallTeamLeaderVo adminMallTeamLeaderVo = MallTeamLeaderConversion.INSTANCE.entityToVo(mallTeamLeader); return adminMallTeamLeaderVo; } @Override public FebsResponse leaderUpdate(MallTeamLeader mallTeamLeader) { Long id = mallTeamLeader.getId(); MallTeamLeader mallTeamLeaders = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(mallTeamLeaders)){ return new FebsResponse().fail().message("团长信息不存在,刷新重试"); } // Integer state = mallTeamLeader.getState(); // if(MallTeamLeader.STATE_ING != state){ // return new FebsResponse().fail().message("只有【待审核】状态才能提交!"); // } Double bonusPercent = Double.parseDouble(mallTeamLeader.getBonusPercent()); if(1 <= bonusPercent || 0 > bonusPercent){ return new FebsResponse().fail().message("请输入合适的百分比小数"); } int isOk = mallTeamLeader.getIsOk(); if(MallTeamLeader.STATE_YES == isOk){ mallTeamLeader.setState(MallTeamLeader.STATE_YES); mallTeamLeader.setProfitSwitch(2); this.baseMapper.updateById(mallTeamLeader); } if(MallTeamLeader.STATE_NO == isOk){ mallTeamLeader.setState(MallTeamLeader.STATE_NO); mallTeamLeader.setProfitSwitch(2); this.baseMapper.updateById(mallTeamLeader); } return new FebsResponse().success().message("审核成功"); } @Override public List selectList(MallTeamLeader mallTeamLeader) { List list = new ArrayList<>(); List mallTeamLeaders = this.baseMapper.getMallTeamLeaderList(); if(CollUtil.isNotEmpty(mallTeamLeaders)){ for(MallTeamLeader teamLeader : mallTeamLeaders){ AdminSelectListLeaderVo adminSelectListLeaderVo = new AdminSelectListLeaderVo(); adminSelectListLeaderVo.setUniqueCode(teamLeader.getUniqueCode()); adminSelectListLeaderVo.setName(teamLeader.getName()); list.add(adminSelectListLeaderVo); } } return list; } @Override public FebsResponse leaderCancel(Long id) { MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(mallTeamLeader)){ return new FebsResponse().fail().message("团长信息不存在"); } Integer state = mallTeamLeader.getState(); if(MallTeamLeader.STATE_YES != state){ return new FebsResponse().fail().message("团长的状态不是审核通过"); } mallTeamLeader.setState(MallTeamLeader.STATE_CANCEL); this.baseMapper.updateById(mallTeamLeader); return new FebsResponse().success().message("已取消"); } @Override public IPage leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock) { Integer goodsNumber = mallGoodsMapper.selectCount(new QueryWrapper<>()); Page page = new Page<>(request.getPageNum(), goodsNumber); IPage mallTeamLeaders = this.baseMapper.selectleaderGoodsStockListInPage(page, mallLeaderStock); return mallTeamLeaders; } @Override public FebsResponse addLeader(AdminLeaderAddDto adminLeaderAddDto) { Long memberId = adminLeaderAddDto.getMemberId(); MallMember mallMember = mallMemberMapper.selectById(memberId); if(ObjectUtil.isEmpty(mallMember)){ return new FebsResponse().fail().message("刷新页面重试"); } List mallTeamLeaders = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING); if(CollUtil.isNotEmpty(mallTeamLeaders)){ return new FebsResponse().fail().message("正在申请中"); } List mallTeamLeaderCancel = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_CANCEL); if(CollUtil.isNotEmpty(mallTeamLeaderCancel)){ return new FebsResponse().fail().message("当前用户无法申请"); } Double bonusPercent = Double.parseDouble(adminLeaderAddDto.getBonusPercent()); if(1 <= bonusPercent || 0 > bonusPercent){ return new FebsResponse().fail().message("请输入合适的百分比小数"); } MallTeamLeader mallTeamLeader = MallTeamLeaderConversion.INSTANCE.adminDtoToEntity(adminLeaderAddDto); mallTeamLeader.setUniqueCode(mallMember.getInviteId()); mallTeamLeader.setMemberId(memberId); mallTeamLeader.setPhone(mallMember.getPhone()); mallTeamLeader.setName(mallMember.getName()); mallTeamLeader.setState(MallTeamLeader.STATE_YES); this.baseMapper.insert(mallTeamLeader); return new FebsResponse().success(); } @Override public FebsResponse startProfit(Long id) { MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(mallTeamLeader)){ return new FebsResponse().fail().message("团长信息不存在,刷新重试"); } Integer state = mallTeamLeader.getState(); if(1!=state){ return new FebsResponse().fail().message("目前还不是团长,无法操作"); } mallTeamLeader.setProfitSwitch(1); this.baseMapper.updateById(mallTeamLeader); return new FebsResponse().success(); } @Override public FebsResponse closeProfit(Long id) { MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id); if(ObjectUtil.isEmpty(mallTeamLeader)){ return new FebsResponse().fail().message("团长信息不存在,刷新重试"); } Integer state = mallTeamLeader.getState(); if(1!=state){ return new FebsResponse().fail().message("目前还不是团长,无法操作"); } mallTeamLeader.setProfitSwitch(2); this.baseMapper.updateById(mallTeamLeader); return new FebsResponse().success(); } }