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