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<MallTeamLeaderMapper, MallTeamLeader> implements IAdminMallTeamLeaderService {
|
|
private final MallLeaderStockMapper mallLeaderStockMapper;
|
private final MallGoodsMapper mallGoodsMapper;
|
private final MallMemberMapper mallMemberMapper;
|
private final MallMoneyFlowMapper mallMoneyFlowMapper;
|
|
@Override
|
public IPage<AdminMallTeamLeaderVo> getLeaderListInPage(MallTeamLeader mallTeamLeader, QueryRequest request) {
|
Page<AdminMallTeamLeaderVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminMallTeamLeaderVo> adminMallActSetVos = this.baseMapper.selectLeaderListInPage(page, mallTeamLeader);
|
|
List<AdminMallTeamLeaderVo> 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<AdminSelectListLeaderVo> selectList(MallTeamLeader mallTeamLeader) {
|
List<AdminSelectListLeaderVo> list = new ArrayList<>();
|
List<MallTeamLeader> 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<MallLeaderStock> leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock) {
|
|
Integer goodsNumber = mallGoodsMapper.selectCount(new QueryWrapper<>());
|
Page<MallLeaderStock> page = new Page<>(request.getPageNum(), goodsNumber);
|
IPage<MallLeaderStock> 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<MallTeamLeader> mallTeamLeaders = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_ING);
|
if(CollUtil.isNotEmpty(mallTeamLeaders)){
|
return new FebsResponse().fail().message("正在申请中");
|
}
|
List<MallTeamLeader> 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();
|
}
|
}
|