嗨森逛服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hai-server/hai-service/src/main/java/com/hai/service/impl/BsDistributionUserRelServic...

325 lines
13 KiB

package com.hai.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.hai.common.utils.BaiduUtils;
import com.hai.common.utils.DateUtil;
import com.hai.common.utils.RequestUtils;
import com.hai.common.utils.TelApiUtil;
import com.hai.dao.BsDistributionRebateMapper;
import com.hai.dao.BsDistributionUserRelMapper;
import com.hai.dao.HighUserMapper;
import com.hai.entity.*;
import com.hai.service.*;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("bsDistributionUserRelService")
public class BsDistributionUserRelServiceImpl implements BsDistributionUserRelService {
@Resource
private BsDistributionUserRelMapper bsDistributionUserRelMapper;
@Resource
private HighDiscountPackageService highDiscountPackageService;
@Resource
private BsDistributionRebateMapper bsDistributionRebateMapper;
@Resource
private HighUserService highUserService;
@Resource
private BsCompanyService bsCompanyService;
@Resource
private CommonService commonService;
@Resource
private HighUserMapper highUserMapper;
@Override
public void insertDistributionUserRel(Long userId, Long popularizeUserId , String requestIp) {
HighUser user = highUserService.findByUserId(userId);
HighUser pUser = highUserService.findByUserId(popularizeUserId);
// 定义分销关联关系
BsDistributionUserRel distributionUserRel = new BsDistributionUserRel();
// 查询推广员信息
Map<String, Object> map = new HashMap<>();
map.put("userId" , popularizeUserId);
BsDistributionUserRel popularizeUser = findDistributionUserRel(map);
if (pUser != null) {
if (pUser.getIsAgent()) {
distributionUserRel.setAgentId(pUser.getId());
distributionUserRel.setAgentName(pUser.getName());
} else {
if (popularizeUser != null) {
distributionUserRel.setAgentId(popularizeUser.getAgentId());
distributionUserRel.setAgentName(popularizeUser.getAgentName());
}
distributionUserRel.setPopularizeUserId(popularizeUserId);
distributionUserRel.setPopularizeUserName(pUser.getName());
}
distributionUserRel.setUserId(userId);
distributionUserRel.setUserName(user.getName());
distributionUserRel.setPhone(TelApiUtil.phoneDesensitization(user.getPhone()));
distributionUserRel.setCreateTime(new Date());
distributionUserRel.setUpdateTime(new Date());
distributionUserRel.setStatus(100);
bsDistributionUserRelMapper.insert(distributionUserRel);
}
new Thread(() -> {
try {
JSONObject object = BaiduUtils.ipLocation(requestIp);
if (object.getInteger("status") == 0) {
String province = object.getJSONObject("content").getJSONObject("address_detail").getString("province");
ApiCity apiCity = commonService.findCityByProvinceName(province);
BsCompany company = bsCompanyService.selectCompanyByRegion(apiCity.getProvinceCode());
// 查询注册有礼优惠券包
HighDiscountPackage discountPackage = highDiscountPackageService.getCallExclusive(3 , company.getId().intValue());
Map<String, Object> freeMap = new HashMap<>();
freeMap.put("discountPackageId", discountPackage.getId());
freeMap.put("userId", userId);
freeMap.put("userPhone", user.getPhone());
highDiscountPackageService.freeUserDiscountPackage(freeMap);
if (pUser != null && pUser.getIsAgent() == null) {
// 查询推广有礼优惠券包
HighDiscountPackage promoteDiscountPackage = highDiscountPackageService.getCallExclusive(4 , company.getId().intValue());
Map<String, Object> freeMap1 = new HashMap<>();
freeMap1.put("discountPackageId", promoteDiscountPackage.getId());
freeMap1.put("userId", pUser.getId());
freeMap1.put("userPhone", pUser.getPhone());
highDiscountPackageService.freeUserDiscountPackage(freeMap1);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}).start();
}
@Override
public List<BsDistributionUserRel> getDistributionUserRelList(Map<String, Object> map) {
BsDistributionUserRelExample example = new BsDistributionUserRelExample();
BsDistributionUserRelExample.Criteria criteria = example.createCriteria();
if (MapUtils.getLong(map , "userId") != null) {
criteria.andUserIdEqualTo(MapUtils.getLong(map , "userId"));
}
if (MapUtils.getLong(map , "popularizeUserId") != null) {
criteria.andPopularizeUserIdEqualTo(MapUtils.getLong(map , "popularizeUserId"));
}
return bsDistributionUserRelMapper.selectByExample(example);
}
@Override
public BsDistributionUserRel findDistributionUserRel(Map<String, Object> map) {
BsDistributionUserRelExample example = new BsDistributionUserRelExample();
BsDistributionUserRelExample.Criteria criteria = example.createCriteria();
if (MapUtils.getLong(map , "userId") != null) {
criteria.andUserIdEqualTo(MapUtils.getLong(map , "userId"));
}
List<BsDistributionUserRel> list = bsDistributionUserRelMapper.selectByExample(example);
if (list.size() > 0) {
return list.get(0);
}
return null;
}
@Override
public void distributionRebate(JSONObject object) {
HighUser user = highUserService.findByUserId(object.getLong("userId"));
// 查询下单用户上级推广员
Map<String , Object> mapSuper = new HashMap<>();
mapSuper.put("userId" , object.getLong("userId"));
BsDistributionUserRel distributionUserRel = findDistributionUserRel(mapSuper);
BsDistributionRebate distributionRebate = new BsDistributionRebate();
// 上级推广员返利
if (distributionUserRel != null) {
distributionRebate.setAgentId(distributionUserRel.getAgentId());
distributionRebate.setCreateTime(new Date());
distributionRebate.setUpdateTime(new Date());
distributionRebate.setStatus(100);
distributionRebate.setType(1);
distributionRebate.setUserName(user.getName());
distributionRebate.setUserId(object.getLong("userId"));
distributionRebate.setAgentId(distributionUserRel.getAgentId());
distributionUserRel.setAgentName(distributionUserRel.getAgentName());
distributionUserRel.setUserName(user.getName());
distributionRebate.setPopularizeUserId(distributionUserRel.getPopularizeUserId());
distributionRebate.setTitle(object.getString("name"));
distributionRebate.setIntegralNum(object.getBigDecimal("integralNumFirst"));
distributionRebate.setOrderNo(object.getString("orderNo"));
distributionRebate.setExt1(object.getString("logoImg"));
if (distributionUserRel.getPopularizeUserId() != null) {
if (object.getInteger("integralNumFirst") != null) {
bsDistributionRebateMapper.insert(distributionRebate);
// 上级返利
highUserService.goldHandle(distributionUserRel.getPopularizeUserId(), object.getInteger("integralNumFirst"),
1, 4, object.getLong("userId") ,
user.getName() + "下单:获得返利" + object.getInteger("integralNumFirst") , "");
}
// 查询下单用户顶级推广员
Map<String , Object> mapTop = new HashMap<>();
mapTop.put("userId" , distributionUserRel.getPopularizeUserId());
BsDistributionUserRel distributionUserRelTop = findDistributionUserRel(mapTop);
if (distributionUserRelTop != null) {
// 顶级推广员
if (distributionUserRelTop.getPopularizeUserId() != null) {
distributionRebate.setIntegralNum(object.getBigDecimal("integralNumSecond"));
distributionRebate.setPopularizeUserId(distributionUserRelTop.getPopularizeUserId());
distributionRebate.setType(2);
if (object.getInteger("integralNumSecond") != null) {
bsDistributionRebateMapper.insert(distributionRebate);
// 顶级返利
highUserService.goldHandle(distributionUserRelTop.getPopularizeUserId(), object.getInteger("integralNumSecond"), 1, 4, object.getLong("userId") , user.getName() + "下单:获得返利" + object.getInteger("integralNumSecond") , "");
}
}
}
}
}
}
@Override
public JSONObject userDistributionStatistics(Long userId) {
JSONObject jsonObject = new JSONObject();
BsDistributionUserRelExample example = new BsDistributionUserRelExample();
BsDistributionUserRelExample.Criteria criteria = example.createCriteria();
criteria.andPopularizeUserIdEqualTo(userId);
Map<String, Object> map = bsDistributionRebateMapper.countDistribution(userId);
jsonObject.put("inviteeNum" , bsDistributionUserRelMapper.countByExample(example));
jsonObject.put("integralIncome" , map.get("sum"));
jsonObject.put("orderCount" , map.get("count"));
jsonObject.put("toDayIntegralNum" , bsDistributionRebateMapper.toDayIntegralNum(userId));
return jsonObject;
}
@Override
public List<BsDistributionRebate> getDistributionRebateList(Map<String, Object> map) throws Exception {
BsDistributionRebateExample example = new BsDistributionRebateExample();
BsDistributionRebateExample.Criteria criteria = example.createCriteria();
if (MapUtils.getLong(map , "userId") != null) {
criteria.andUserIdEqualTo(MapUtils.getLong(map , "userId"));
}
if (MapUtils.getLong(map , "popularizeUserId") != null) {
criteria.andPopularizeUserIdEqualTo(MapUtils.getLong(map , "popularizeUserId"));
}
List<BsDistributionRebate> list = bsDistributionRebateMapper.selectByExample(example);
for (BsDistributionRebate distributionRebate : list ) {
distributionRebate.setExt3(DateUtil.date2String(distributionRebate.getCreateTime() , "MM月dd日 HH:mm"));
}
return list;
}
@Override
public List<Map<String, Object>> getDistributionAgent() {
return bsDistributionUserRelMapper.getDistributionAgent();
}
@Override
public List<Map<String, Object>> getDistributionFirst(Long agentId) {
return bsDistributionUserRelMapper.getDistributionFirst(agentId);
}
@Override
public List<Map<String, Object>> getDistributionSecond(Long agentId, Long popularizeUserId) {
return bsDistributionUserRelMapper.getDistributionSecond(agentId , popularizeUserId);
}
@Override
public List<BsDistributionRebate> getDistributionIntegralList(Map<String, Object> map) {
BsDistributionRebateExample example = new BsDistributionRebateExample();
BsDistributionRebateExample.Criteria criteria = example.createCriteria();
if (MapUtils.getString(map, "title") != null) {
criteria.andTitleLike("%" + MapUtils.getString(map, "title") + "%");
}
if (MapUtils.getInteger(map, "type") != null) {
criteria.andTypeEqualTo(MapUtils.getInteger(map, "type"));
}
if (MapUtils.getString(map, "orderNo") != null) {
criteria.andOrderNoEqualTo(MapUtils.getString(map, "orderNo"));
}
if (MapUtils.getLong(map, "agentId") != null) {
criteria.andAgentIdEqualTo(MapUtils.getLong(map, "agentId"));
}
if (MapUtils.getLong(map, "popularizeUserId") != null) {
criteria.andPopularizeUserIdEqualTo(MapUtils.getLong(map, "popularizeUserId"));
}
if (MapUtils.getString(map, "userName") != null) {
criteria.andUserNameLike("%" + MapUtils.getString(map, "userName") + "%");
}
if (StringUtils.isNotBlank(MapUtils.getString(map, "createTimeS")) && StringUtils.isNotBlank(MapUtils.getString(map, "createTimeE"))) {
criteria.andCreateTimeBetween(
DateUtil.format(MapUtils.getString(map, "createTimeS"), "yyyy-MM-dd HH:mm:ss"),
DateUtil.format(MapUtils.getString(map, "createTimeE"), "yyyy-MM-dd HH:mm:ss"));
}
example.setOrderByClause("create_time desc");
return bsDistributionRebateMapper.selectByExample(example);
}
@Override
public List<HighUser> agentUserList() {
HighUserExample example = new HighUserExample();
example.createCriteria().andIsAgentEqualTo(true).andStatusEqualTo(1);
return highUserMapper.selectByExample(example);
}
}