Administrator
2025-05-23 ea8e4abfb8c81cdae4d2a8743d81b615000f352d
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
@@ -17,6 +17,7 @@
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService;
import cc.mrbird.febs.mall.service.IMallElectronicFenceService;
import cc.mrbird.febs.mall.vo.AdminLeaderVo;
import cc.mrbird.febs.mall.vo.AdminMallActSetVo;
import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo;
import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo;
@@ -27,6 +28,7 @@
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -42,6 +44,7 @@
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicNameValuePair;
import org.apache.poi.ss.formula.functions.T;
import org.checkerframework.checker.units.qual.A;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -61,6 +64,8 @@
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final MallElectronicFenceMapper mallElectronicFenceMapper;
    private final IMallElectronicFenceService iMallElectronicFenceService;
    private final SpringContextHolder springContextHolder;
    private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
    @Override
    public IPage<AdminMallTeamLeaderVo> getLeaderListInPage(MallTeamLeader mallTeamLeader, QueryRequest request) {
@@ -96,6 +101,9 @@
    public FebsResponse leaderUpdate(MallTeamLeader mallTeamLeader) {
        Long id = mallTeamLeader.getId();
        MallTeamLeader mallTeamLeaders = this.baseMapper.selectById(id);
        if(1 == mallTeamLeaders.getOnlineState()){
            return new FebsResponse().fail().message("请先让团长离线");
        }
        if(ObjectUtil.isEmpty(mallTeamLeaders)){
            return new FebsResponse().fail().message("团长信息不存在,刷新重试");
        }
@@ -104,10 +112,10 @@
//            return new FebsResponse().fail().message("只有【待审核】状态才能提交!");
//        }
        Double bonusPercent = Double.parseDouble(mallTeamLeader.getBonusPercent());
        if(1 <= bonusPercent || 0 > bonusPercent){
            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);
@@ -125,12 +133,12 @@
    @Override
    public List<AdminSelectListLeaderVo> selectList(MallTeamLeader mallTeamLeader) {
        List<AdminSelectListLeaderVo> list = new ArrayList<>();
        List<MallTeamLeader> mallTeamLeaders = this.baseMapper.getMallTeamLeaderList();
        List<MallTeamLeader> mallTeamLeaders = this.baseMapper.getAllMallTeamLeaderList();
        if(CollUtil.isNotEmpty(mallTeamLeaders)){
            for(MallTeamLeader teamLeader : mallTeamLeaders){
                AdminSelectListLeaderVo adminSelectListLeaderVo = new AdminSelectListLeaderVo();
                adminSelectListLeaderVo.setUniqueCode(teamLeader.getUniqueCode());
                adminSelectListLeaderVo.setName(teamLeader.getName());
                adminSelectListLeaderVo.setName(teamLeader.getName() + "-" + teamLeader.getAddressArea());
                list.add(adminSelectListLeaderVo);
            }
        }
@@ -140,6 +148,9 @@
    @Override
    public FebsResponse leaderCancel(Long id) {
        MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
        if(1 == mallTeamLeader.getOnlineState()){
            return new FebsResponse().fail().message("请先让团长离线");
        }
        if(ObjectUtil.isEmpty(mallTeamLeader)){
            return new FebsResponse().fail().message("团长信息不存在");
        }
@@ -166,6 +177,7 @@
        Long memberId = adminLeaderAddDto.getMemberId();
        MallMember mallMember = mallMemberMapper.selectById(memberId);
        MallTeamLeader mallTeamLeaderAdd = new MallTeamLeader();
        if(ObjectUtil.isEmpty(mallMember)){
            return new FebsResponse().fail().message("刷新页面重试");
        }
@@ -177,17 +189,39 @@
        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("请输入合适的百分比小数");
        List<MallTeamLeader> mallTeamLeaderNo = this.baseMapper.selectListByMemberIdAndState(memberId, MallTeamLeader.STATE_NO);
        if(CollUtil.isNotEmpty(mallTeamLeaderNo)){
            mallTeamLeaderAdd = mallTeamLeaderNo.get(0);
            if(ObjectUtil.isNotEmpty(mallTeamLeaderAdd)){
                mallTeamLeaderAdd.setName(adminLeaderAddDto.getName());
                mallTeamLeaderAdd.setPhone(adminLeaderAddDto.getPhone());
                mallTeamLeaderAdd.setAddressPic(adminLeaderAddDto.getAddressPic());
                mallTeamLeaderAdd.setAddressArea(adminLeaderAddDto.getAddressArea());
                mallTeamLeaderAdd.setDetailAddress(adminLeaderAddDto.getDetailAddress());
                mallTeamLeaderAdd.setLongitude(adminLeaderAddDto.getLongitude());
                mallTeamLeaderAdd.setLatitude(adminLeaderAddDto.getLatitude());
                mallTeamLeaderAdd.setState(MallTeamLeader.STATE_YES);
                //申请团长默认关闭返利,返利比例为0
                mallTeamLeaderAdd.setProfitSwitch(2);
                mallTeamLeaderAdd.setBonusPercent("0");
                this.baseMapper.updateById(mallTeamLeaderAdd);
            }
        }else{
            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);
            //申请团长默认关闭返利,返利比例为0
            mallTeamLeader.setProfitSwitch(2);
            mallTeamLeader.setBonusPercent("0");
            this.baseMapper.insert(mallTeamLeader);
        }
        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);
//        Double bonusPercent = Double.parseDouble(adminLeaderAddDto.getBonusPercent());
//        if(1 <= bonusPercent || 0 > bonusPercent){
//            return new FebsResponse().fail().message("请输入合适的百分比小数");
//        }
        return new FebsResponse().success();
    }
@@ -246,10 +280,14 @@
//                System.out.print(sid);
//            }
    }
    private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
    @Override
    @Transactional
    public FebsResponse addFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto) {
        Long id = adminLeaderAddFenceDto.getId();
        MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
        if(1 == mallTeamLeader.getOnlineState()){
            return new FebsResponse().fail().message("请先让团长离线");
        }
        //如果电子围栏表为空,
        //先查询服务是否已经创建,
        //没有,再创建服务。
@@ -260,20 +298,22 @@
            if("fail".equals(resultStr)){
                return new FebsResponse().fail().message("高德地图查询服务失败");
            }
            JSONObject jsonObject = JSONUtil.parseObj(resultStr);
            String results = jsonObject.get("results").toString();
            JSONArray jsonArray = JSONUtil.parseArray(results);
            for(Object jsonArray1 : jsonArray){
                JSONObject jsonObject1 = JSONUtil.parseObj(jsonArray1);
                String name = jsonObject1.get("name").toString();
                String sid = jsonObject1.get("sid").toString();
                if(xcxProperties.getServiceName().equals(name)){
                    serviceId= sid;
                    break;
                }
            }
            if(StrUtil.isBlank(serviceId)){
            log.info(resultStr);
            if("null".equals(resultStr) || StrUtil.isBlank(resultStr)){
                serviceId = iMallElectronicFenceService.trackServiceAdd(xcxProperties.getGaodeKey(), xcxProperties.getServiceName());
            }else{
                JSONObject jsonObject = JSONUtil.parseObj(resultStr);
                String results = jsonObject.get("results").toString();
                JSONArray jsonArray = JSONUtil.parseArray(results);
                for(Object jsonArray1 : jsonArray){
                    JSONObject jsonObject1 = JSONUtil.parseObj(jsonArray1);
                    String name = jsonObject1.get("name").toString();
                    String sid = jsonObject1.get("sid").toString();
                    if(xcxProperties.getServiceName().equals(name)){
                        serviceId= sid;
                        break;
                    }
                }
            }
        }else{
            serviceId = mallElectronicFences.get(0).getServiceId();
@@ -281,8 +321,6 @@
        if("fail".equals(serviceId)){
            return new FebsResponse().fail().message("高德地图创建服务失败");
        }
        Long id = adminLeaderAddFenceDto.getId();
        MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
        String uniqueCode = mallTeamLeader.getUniqueCode();
        MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(uniqueCode);
        if(ObjectUtil.isEmpty(mallElectronicFence)){
@@ -306,16 +344,73 @@
            mallElectronicFenceAdd.setServiceId(serviceId);
            mallElectronicFenceMapper.insert(mallElectronicFenceAdd);
        }else{
            String fenceUpdate = iMallElectronicFenceService.fenceUpdate(xcxProperties.getGaodeKey(), serviceId,
                    mallElectronicFence.getGid(), mallElectronicFence.getFenceName(),
                    adminLeaderAddFenceDto.getLonglatiarr());
            if("fail".equals(fenceUpdate)){
                return new FebsResponse().fail().message("高德地图更新多边形围栏失败");
            //删除电子围栏
            if(StrUtil.isEmpty(adminLeaderAddFenceDto.getLonglatiarr())){
                iMallElectronicFenceService.fenceDelete(xcxProperties.getGaodeKey(),serviceId,mallElectronicFence.getGid());
                mallElectronicFenceMapper.deleteById(mallElectronicFence.getId());
            }else{
                String fenceUpdate = iMallElectronicFenceService.fenceUpdate(xcxProperties.getGaodeKey(), serviceId,
                        mallElectronicFence.getGid(), mallElectronicFence.getFenceName(),
                        adminLeaderAddFenceDto.getLonglatiarr());
                if("fail".equals(fenceUpdate)){
                    return new FebsResponse().fail().message("高德地图更新多边形围栏失败");
                }
                mallElectronicFence.setLonglatiarr(adminLeaderAddFenceDto.getLonglatiarr());
                mallElectronicFenceMapper.updateById(mallElectronicFence);
            }
            mallElectronicFence.setLonglatiarr(adminLeaderAddFenceDto.getLonglatiarr());
            mallElectronicFenceMapper.updateById(mallElectronicFence);
        }
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse startOnline(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("目前还不是团长,无法操作");
        }
//        MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
//        if(ObjectUtil.isEmpty(mallElectronicFence)){
//            return new FebsResponse().fail().message("请先设置配送范围");
//        }
        mallTeamLeader.setOnlineState(1);
        this.baseMapper.updateById(mallTeamLeader);
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse closeOnline(Long id) {
        MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallTeamLeader)){
            return new FebsResponse().fail().message("团长信息不存在,刷新重试");
        }
        mallTeamLeader.setOnlineState(2);
        this.baseMapper.updateById(mallTeamLeader);
        return new FebsResponse().success();
    }
    @Override
    public List<AdminLeaderVo> getLeaderTree() {
        ArrayList<AdminLeaderVo> adminLeaderVos = new ArrayList<>();
        List<MallMember> mallMembers = mallMemberMapper.selectList(
                new LambdaQueryWrapper<MallMember>()
                        .select(MallMember::getId, MallMember::getName,  MallMember::getInviteId)
                        .ne(MallMember::getStoreMaster, 0)
        );
        if(CollUtil.isNotEmpty(mallMembers)){
            for(MallMember mallMember : mallMembers){
                AdminLeaderVo adminLeaderVo = new AdminLeaderVo();
                adminLeaderVo.setId(mallMember.getId());
                adminLeaderVo.setName(mallMember.getName());
                adminLeaderVo.setUniqueCode(mallMember.getInviteId());
                adminLeaderVos.add(adminLeaderVo);
            }
        }
        return adminLeaderVos;
    }
}