From 86f2368f146af23c9e16507f790752e79858a29f Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Thu, 22 Feb 2024 22:34:31 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java | 322 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 309 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..6ca7a53 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,233 @@
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);
+ MallTeamLeader mallTeamLeaderAdd = new MallTeamLeader();
+ 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("当前用户无法申请");
+ }
+ 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);
+ }
+// Double bonusPercent = Double.parseDouble(adminLeaderAddDto.getBonusPercent());
+// if(1 <= bonusPercent || 0 > bonusPercent){
+// return new FebsResponse().fail().message("请输入合适的百分比小数");
+// }
+ 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