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.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.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.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;
|
}
|
|
@Override
|
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(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("团长信息不存在,刷新重试");
|
}
|
// 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.getAllMallTeamLeaderList();
|
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(1 == mallTeamLeader.getOnlineState()){
|
return new FebsResponse().fail().message("请先让团长离线");
|
}
|
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();
|
}
|
|
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{
|
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();
|
}
|
|
}
|