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.utils.HttpCurlUtil;
|
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.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.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.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@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;
|
|
@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);
|
return adminMallTeamLeaderVo;
|
}
|
|
@Override
|
public FebsResponse leaderUpdate(MallTeamLeader mallTeamLeader) {
|
Long id = mallTeamLeader.getId();
|
MallTeamLeader mallTeamLeaders = this.baseMapper.selectById(id);
|
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.getMallTeamLeaderList();
|
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(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();
|
}
|
|
@Override
|
public FebsResponse addFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto) {
|
String gdFence = createGDFence(adminLeaderAddFenceDto);
|
if("fail".equals(gdFence)){
|
return new FebsResponse().fail().message("高德创建电子围栏失败!");
|
}
|
MallElectronicFence mallElectronicFence = MallElectronicFenceConversion.INSTANCE.dtoToEntity(adminLeaderAddFenceDto);
|
mallElectronicFence.setDelFlag(1);
|
mallElectronicFence.setProhibit(1);
|
mallElectronicFence.setGid(gdFence);
|
mallElectronicFence.setGaodeKey(adminLeaderAddFenceDto.getGaodeKey());
|
mallElectronicFenceMapper.insert(mallElectronicFence);
|
return new FebsResponse().success();
|
}
|
|
public String createGDFence(AdminLeaderAddFenceDto adminLeaderAddFenceDto){
|
String url = "https://restapi.amap.com/v4/geofence/meta?key=";
|
String gaodeKey = adminLeaderAddFenceDto.getGaodeKey();
|
url =url+gaodeKey;
|
HttpPost httpPost = new HttpPost(url);
|
Map<String,String> map = new HashMap<>();
|
String fenceName = adminLeaderAddFenceDto.getFenceName();
|
map.put("name",fenceName);
|
String longlatiarr = adminLeaderAddFenceDto.getLonglatiarr();
|
if(null!=longlatiarr&&!"".equals(longlatiarr)){
|
map.put("points",longlatiarr);
|
}
|
map.put("enable","true");
|
map.put("valid_time","2054-12-30");
|
map.put("repeat","Mon,Tues,Wed,Thur,Fri,Sat,Sun");
|
//map.put("time","00:00,11:59;13:00,20:59");
|
map.put("desc",fenceName);
|
map.put("alert_condition","enter;leave");
|
System.out.println(map);
|
String param= JSON.toJSONString(map);
|
String result = null;
|
try {
|
result = HttpCurlUtil.sendPostHttp(url, param);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
System.out.println("==高德返回"+result);
|
JSONObject maps = JSONUtil.parseObj(result);
|
String errmsg = maps.get("errmsg").toString();
|
String str2 = maps.get("data").toString();
|
JSONObject maps2 = JSONUtil.parseObj(str2);
|
String statusGaode = maps2.get("status").toString();
|
String gid="";
|
if(statusGaode.equals("0")){
|
gid = maps2.get("gid").toString();
|
}
|
if(null!=gid&&!"".equals(gid)){
|
return gid;
|
}else{
|
return "fail";
|
}
|
}
|
|
}
|