From 9aa9afa192ace444c9e391d9b50fd761639742c8 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 22 Sep 2022 16:20:42 +0800
Subject: [PATCH] 20220902

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java |  299 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 286 insertions(+), 13 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
index 31e930d..e4a9b02 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
@@ -2,37 +2,84 @@
 
 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.common.properties.XcxProperties;
+import cc.mrbird.febs.common.utils.HttpCurlUtil;
+import cc.mrbird.febs.common.utils.SpringContextHolder;
+import cc.mrbird.febs.mall.conversion.MallElectronicFenceConversion;
 import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion;
+import cc.mrbird.febs.mall.dto.AdminLeaderAddDto;
+import cc.mrbird.febs.mall.dto.AdminLeaderAddFenceDto;
 import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto;
-import cc.mrbird.febs.mall.entity.MallGoodsCategory;
-import cc.mrbird.febs.mall.entity.MallTeamLeader;
-import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper;
+import cc.mrbird.febs.mall.dto.ApiApplayLeaderDto;
+import cc.mrbird.febs.mall.entity.*;
+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.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 cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+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 com.google.common.collect.Lists;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.Consts;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.HttpClientUtils;
+import org.apache.http.entity.ContentType;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.*;
 
 @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;
+    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) {
         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;
     }
 
@@ -40,24 +87,41 @@
     public AdminMallTeamLeaderVo getMallTeamLederInfoById(long id) {
         MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
         AdminMallTeamLeaderVo adminMallTeamLeaderVo = MallTeamLeaderConversion.INSTANCE.entityToVo(mallTeamLeader);
+        MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
+        if(ObjectUtil.isNotEmpty(mallElectronicFence)){
+            adminMallTeamLeaderVo.setLonglatiarr(mallElectronicFence.getLonglatiarr());
+        }
         return adminMallTeamLeaderVo;
     }
 
     @Override
-    public FebsResponse leaderUpdate(AdminLeaderUpdateDto adminLeaderUpdateDto) {
-        Long id = adminLeaderUpdateDto.getId();
-        MallTeamLeader mallTeamLeader = this.baseMapper.selectById(id);
-        Integer state = mallTeamLeader.getState();
-        if(MallTeamLeader.STATE_ING != state){
-            return new FebsResponse().fail().message("只有【待审核】状态才能提交!");
+    public FebsResponse leaderUpdate(MallTeamLeader mallTeamLeader) {
+        Long id = mallTeamLeader.getId();
+        MallTeamLeader mallTeamLeaders = this.baseMapper.selectById(id);
+        if(1 == mallTeamLeaders.getOnlineState()){
+            return new FebsResponse().fail().message("请先让团长离线");
         }
-        int isOk = adminLeaderUpdateDto.getIsOk();
+        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("审核成功");
@@ -66,7 +130,7 @@
     @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();
@@ -81,6 +145,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("团长信息不存在");
         }
@@ -93,4 +160,210 @@
         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();
+    }
+
+    public static void main(String[] args) {
+
+        String ss = "{\"results\":[{\"name\":\"yiyuanshucai\",\"sid\":792477},{\"name\":\"yiyuanshucai1\",\"sid\":792477}]}";
+        String serviceName = "";
+        JSONObject jsonObject = JSONUtil.parseObj(ss);
+        String results = jsonObject.get("results").toString();
+        JSONArray jsonArray = JSONUtil.parseArray(results);
+        System.out.print(jsonArray);
+        for(Object jsonArray1 : jsonArray){
+            System.out.print(jsonArray1);
+            JSONObject jsonObject1 = JSONUtil.parseObj(jsonArray1);
+            String name = jsonObject1.get("name").toString();
+            System.out.print(name);
+            if("yiyuanshucai".equals(name)){
+                serviceName= name;
+                break;
+            }
+        }
+//            String name = jsonObjectStr.get("name").toString();
+//            String sid = jsonObjectStr.get("sid").toString();
+//            if("yiyuanshucai".equals(name)){
+//                System.out.print(name);
+//                System.out.print(sid);
+//            }
+    }
+    @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("请先让团长离线");
+        }
+        //如果电子围栏表为空,
+        //先查询服务是否已经创建,
+        //没有,再创建服务。
+        List<MallElectronicFence> mallElectronicFences = mallElectronicFenceMapper.selectList(new QueryWrapper<>());
+        String serviceId = "";
+        if(CollUtil.isEmpty(mallElectronicFences)){
+            String resultStr = iMallElectronicFenceService.trackServiceInfo(xcxProperties.getGaodeKey());
+            if("fail".equals(resultStr)){
+                return new FebsResponse().fail().message("高德地图查询服务失败");
+            }
+            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();
+        }
+        if("fail".equals(serviceId)){
+            return new FebsResponse().fail().message("高德地图创建服务失败");
+        }
+        String uniqueCode = mallTeamLeader.getUniqueCode();
+        MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(uniqueCode);
+        if(ObjectUtil.isEmpty(mallElectronicFence)){
+            //新增
+            //新增围栏
+            String fenceId = iMallElectronicFenceService.fenceAdd(xcxProperties.getGaodeKey(), serviceId
+                    , mallTeamLeader.getUniqueCode()+"_fence", adminLeaderAddFenceDto.getLonglatiarr());
+
+            if("fail".equals(fenceId)){
+                return new FebsResponse().fail().message("高德地图创建多边形围栏失败");
+            }
+            MallElectronicFence mallElectronicFenceAdd = new MallElectronicFence();
+            mallElectronicFenceAdd.setFenceName(mallTeamLeader.getUniqueCode()+"_fence");
+            mallElectronicFenceAdd.setFenceType(4);
+            mallElectronicFenceAdd.setGid(fenceId);
+            mallElectronicFenceAdd.setProhibit(1);
+            mallElectronicFenceAdd.setDelFlag(1);
+            mallElectronicFenceAdd.setGKey(xcxProperties.getGaodeKey());
+            mallElectronicFenceAdd.setLonglatiarr(adminLeaderAddFenceDto.getLonglatiarr());
+            mallElectronicFenceAdd.setTeamLeaderCode(uniqueCode);
+            mallElectronicFenceAdd.setServiceId(serviceId);
+            mallElectronicFenceMapper.insert(mallElectronicFenceAdd);
+        }else{
+            //删除电子围栏
+            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);
+            }
+        }
+        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();
+    }
+
 }

--
Gitblit v1.9.1