Commit 59567d98 authored by libin's avatar libin

推广*邀请

parent 74295ba6
package com.github.wxiaoqi.security.admin.bo;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/18 19:25
*/
@Data
public class InviteMemberBO {
private String username;
private String headUrl;
private Long joinTime;
private Long bindTime;
}
package com.github.wxiaoqi.security.admin.bo;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/18 20:11
*/
@Data
public class PromoteBO {
/**
* 累计收益
*/
private BigDecimal totalIncome;
/**
* 已邀请人数
*/
private Integer inviteNumber;
/**
* 已激活人数
*/
private Integer activatedNumber;
/**
* 上级用户名
*/
private String leaderUsername;
/**
* 上级头像
*/
private String leaderHeadUrl;
}
...@@ -45,4 +45,8 @@ public class UserTeamMemberBo { ...@@ -45,4 +45,8 @@ public class UserTeamMemberBo {
* 收入 * 收入
*/ */
private BigDecimal income; private BigDecimal income;
private BigDecimal orderAmount;
private Integer recordedState;
} }
package com.github.wxiaoqi.security.admin.vo;
import com.github.wxiaoqi.security.admin.bo.InviteMemberBO;
import lombok.Data;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/18 19:57
*/
@Data
public class InviteMemberVo {
private Long failureTime;
private List<InviteMemberBO> inviteMembers;
private Integer page;
private Integer limit;
private Integer totalCount;
private Integer totalPage;
}
...@@ -2,20 +2,28 @@ package com.github.wxiaoqi.security.admin.biz; ...@@ -2,20 +2,28 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache; import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.bo.UserTeamMemberBo; import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.AppUserRelationTemp; import com.github.wxiaoqi.security.admin.entity.AppUserRelationTemp;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.admin.bo.InviteMemberBO;
import com.github.wxiaoqi.security.admin.vo.InviteMemberVo;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.github.wxiaoqi.security.admin.entity.AppUserRelation; import com.github.wxiaoqi.security.admin.entity.AppUserRelation;
import com.github.wxiaoqi.security.admin.mapper.AppUserRelationMapper; import com.github.wxiaoqi.security.admin.mapper.AppUserRelationMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* 用户关系表 * 用户关系表
* *
...@@ -32,6 +40,12 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel ...@@ -32,6 +40,12 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
@Autowired @Autowired
AppUserDetailBiz userDetailBiz; AppUserDetailBiz userDetailBiz;
@Autowired
private AppUserLoginBiz appUserLoginBiz;
@Value("${temamember.failureTime:60}")
private Long failureTime;
/** /**
* 关系绑定 * 关系绑定
* @param userId * @param userId
...@@ -153,4 +167,66 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel ...@@ -153,4 +167,66 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
public PageDataVO<AppUserRelation> findMemberPageByLeaderId(Integer leaderId, Integer pageNo, Integer pageSize) { public PageDataVO<AppUserRelation> findMemberPageByLeaderId(Integer leaderId, Integer pageNo, Integer pageSize) {
return PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.selectByLeaderId(leaderId)); return PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.selectByLeaderId(leaderId));
} }
public InviteMemberVo findInviteMemberByActivitState(Integer leaderId, Integer state, Integer page, Integer limit) {
InviteMemberVo inviteMemberVo = new InviteMemberVo();
inviteMemberVo.setPage(page);
inviteMemberVo.setLimit(limit);
inviteMemberVo.setFailureTime(failureTime*24*60*60);
Example example = new Example(AppUserRelation.class);
Example.Criteria criteria = example.createCriteria();
if (state!=null) {
criteria.andEqualTo("isForever", state);
}
criteria.andEqualTo("parentId",leaderId);
PageDataVO<AppUserRelation> pageDataVO = PageDataVO.pageInfo(page, limit, () -> mapper.selectByExample(example));
List<AppUserRelation> appUserRelations = pageDataVO.getData();
if (CollectionUtils.isEmpty(appUserRelations)){
inviteMemberVo.setInviteMembers(Collections.EMPTY_LIST);
return inviteMemberVo;
}
List<Integer> memberIds = appUserRelations.stream().map(AppUserRelation::getUserId).collect(Collectors.toList());
Map<Integer, AppUserLogin> userIdAndUserLoginMap = appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(memberIds);
Map<Integer, AppUserDetail> userIdAndUserDetailMap = userDetailBiz.findUserIdAndUserDetailMapByMemberIds(memberIds);
List<InviteMemberBO> inviteMemberBOS = new ArrayList<>();
InviteMemberBO inviteMemberBO;
for (AppUserRelation appUserRelation : appUserRelations) {
inviteMemberBO = new InviteMemberBO();
inviteMemberBO.setBindTime(appUserRelation.getBindTime());
inviteMemberBO.setJoinTime(appUserRelation.getBindTime());
inviteMemberBO.setUsername(userIdAndUserLoginMap.get(appUserRelation.getUserId()).getUsername());
inviteMemberBO.setHeadUrl(userIdAndUserDetailMap.get(appUserRelation.getUserId()).getHeadimgurl());
inviteMemberBOS.add(inviteMemberBO);
}
inviteMemberVo.setTotalCount(pageDataVO.getTotalCount().intValue());
inviteMemberVo.setTotalPage(pageDataVO.getTotalPage());
inviteMemberVo.setInviteMembers(inviteMemberBOS);
return inviteMemberVo;
}
public Integer findLeaderIdByMemberId(Integer userId) {
Example example = new Example(AppUserRelation.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("userId",userId);
List<AppUserRelation> appUserRelations = mapper.selectByExample(example);
if (CollectionUtils.isEmpty(appUserRelations)){
return 0;
}
return appUserRelations.get(0).getParentId();
}
public Map<Integer, Integer> findMemberSateAndCountMapByLeaderId(Integer userId) {
Map<Integer,Integer> memberSateAndCountMap = new HashMap<>();
AppUserRelation appUserRelation = new AppUserRelation();
appUserRelation.setParentId(userId);
int totalCount = mapper.selectCount(appUserRelation);
appUserRelation.setIsForever(1);
int activityCount = mapper.selectCount(appUserRelation);
memberSateAndCountMap.put(0,totalCount);
memberSateAndCountMap.put(1,activityCount);
return memberSateAndCountMap;
}
} }
\ No newline at end of file
...@@ -34,7 +34,7 @@ import java.util.stream.Stream; ...@@ -34,7 +34,7 @@ import java.util.stream.Stream;
*/ */
@Service @Service
@Slf4j @Slf4j
public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper,AppUserSellingWater> { public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, AppUserSellingWater> {
@Autowired @Autowired
...@@ -44,10 +44,10 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper,Ap ...@@ -44,10 +44,10 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper,Ap
BaseGoodCommissionBiz commissionBiz; BaseGoodCommissionBiz commissionBiz;
@Autowired @Autowired
AppUserPositionBiz positionBiz; AppUserPositionBiz positionBiz;
@Autowired @Autowired
AppUserDetailBiz detailBiz; AppUserDetailBiz detailBiz;
@Autowired @Autowired
private AppUserLoginBiz appUserLoginBiz; private AppUserLoginBiz appUserLoginBiz;
...@@ -56,195 +56,195 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper,Ap ...@@ -56,195 +56,195 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper,Ap
private AppUserDetailBiz appUserDetailBiz; private AppUserDetailBiz appUserDetailBiz;
@Autowired @Autowired
MyWaterBiz myWaterBiz; MyWaterBiz myWaterBiz;
//计算用户拥金 //计算用户拥金
public void orderWater(OrderWaterDTO orderWaterDTO){ public void orderWater(OrderWaterDTO orderWaterDTO) {
if(orderWaterDTO==null){ if (orderWaterDTO == null) {
log.info("计算用户拥金----orderWater----次数不能为空----"); log.info("计算用户拥金----orderWater----次数不能为空----");
return; return;
} }
//订单状态 //订单状态
Integer status=orderWaterDTO.getStatus(); Integer status = orderWaterDTO.getStatus();
if(status==null||status==0){ if (status == null || status == 0) {
log.info("购买计算用户拥金----payOrderWater----参数不能为空----status==="+status); log.info("购买计算用户拥金----payOrderWater----参数不能为空----status===" + status);
return; return;
} }
if(status==1){ if (status == 1) {
payOrderWater(orderWaterDTO); payOrderWater(orderWaterDTO);
}else if(status==2){ } else if (status == 2) {
finishOrderWater(orderWaterDTO); finishOrderWater(orderWaterDTO);
}else { } else {
refundOrderWater(orderWaterDTO); refundOrderWater(orderWaterDTO);
} }
} }
//购买计算用户拥金 //购买计算用户拥金
public void payOrderWater(OrderWaterDTO orderWaterDTO){ public void payOrderWater(OrderWaterDTO orderWaterDTO) {
//订单id //订单id
Integer orderId=orderWaterDTO.getOrderId(); Integer orderId = orderWaterDTO.getOrderId();
//订单号 //订单号
String orderNo=orderWaterDTO.getOrderNo(); String orderNo = orderWaterDTO.getOrderNo();
//用户id //用户id
Integer userId=orderWaterDTO.getUserId(); Integer userId = orderWaterDTO.getUserId();
List<OrderGoodsDTO> goodsDTOList=orderWaterDTO.getGoodsDTOList(); List<OrderGoodsDTO> goodsDTOList = orderWaterDTO.getGoodsDTOList();
log.info("购买计算用户拥金----payOrderWater----userId===="+userId+"---orderId==="+orderId+"---orderNo==="+orderNo); log.info("购买计算用户拥金----payOrderWater----userId====" + userId + "---orderId===" + orderId + "---orderNo===" + orderNo);
if(orderId==null||orderId==0||userId==null||userId==0|CollectionUtils.isEmpty(goodsDTOList)){ if (orderId == null || orderId == 0 || userId == null || userId == 0 | CollectionUtils.isEmpty(goodsDTOList)) {
log.info("购买计算用户拥金----payOrderWater----参数不能为空----orderId==="+orderId); log.info("购买计算用户拥金----payOrderWater----参数不能为空----orderId===" + orderId);
return; return;
} }
AppUserRelation relation=relationBiz.getRelationByUserId(userId); AppUserRelation relation = relationBiz.getRelationByUserId(userId);
if(relation==null||relation.getParentId()==null||relation.getParentId()==0){ if (relation == null || relation.getParentId() == null || relation.getParentId() == 0) {
log.info("购买计算用户拥金----payOrderWater--------userId==="+userId+"---无上线"); log.info("购买计算用户拥金----payOrderWater--------userId===" + userId + "---无上线");
return; return;
} }
Integer parentId=relation.getParentId(); Integer parentId = relation.getParentId();
log.info("购买计算用户拥金----payOrderWater--------userId==="+userId+"---parentId==="+parentId); log.info("购买计算用户拥金----payOrderWater--------userId===" + userId + "---parentId===" + parentId);
for(OrderGoodsDTO goodsDto:goodsDTOList){ for (OrderGoodsDTO goodsDto : goodsDTOList) {
//商品id //商品id
Integer goodId=goodsDto.getGoodId(); Integer goodId = goodsDto.getGoodId();
//商品价格 //商品价格
BigDecimal price=goodsDto.getPrice(); BigDecimal price = goodsDto.getPrice();
//商品类型 //商品类型
Integer type=goodsDto.getType(); Integer type = goodsDto.getType();
//商品比例 //商品比例
Integer extract=commissionBiz.getExtract(type,goodId); Integer extract = commissionBiz.getExtract(type, goodId);
AppUserVo userVo=detailBiz.getUserInfoById(parentId); AppUserVo userVo = detailBiz.getUserInfoById(parentId);
Integer positionId=6; Integer positionId = 6;
if (userVo!=null){ if (userVo != null) {
positionId= userVo.getPositionId(); positionId = userVo.getPositionId();
} }
if(extract==null||extract==0){ if (extract == null || extract == 0) {
extract=positionBiz.getExtract(parentId); extract = positionBiz.getExtract(parentId);
} }
log.info("购买计算用户拥金----payOrderWater--------userId==="+userId+"---extract==="+extract); log.info("购买计算用户拥金----payOrderWater--------userId===" + userId + "---extract===" + extract);
if(extract!=null&&extract>0){ if (extract != null && extract > 0) {
AppUserSellingWater sellingWater=new AppUserSellingWater(); AppUserSellingWater sellingWater = new AppUserSellingWater();
sellingWater.setOrderId(orderId); sellingWater.setOrderId(orderId);
sellingWater.setGoodId(goodId); sellingWater.setGoodId(goodId);
sellingWater=selectOne(sellingWater); sellingWater = selectOne(sellingWater);
if(sellingWater!=null){ if (sellingWater != null) {
continue; continue;
} }
BigDecimal commission=price.multiply(new BigDecimal(extract+"")).divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP); BigDecimal commission = price.multiply(new BigDecimal(extract + "")).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
log.info("购买计算用户拥金----payOrderWater--------userId==="+userId+"---commission==="+commission); log.info("购买计算用户拥金----payOrderWater--------userId===" + userId + "---commission===" + commission);
sellingWater=new AppUserSellingWater(); sellingWater = new AppUserSellingWater();
sellingWater.setUserId(parentId); sellingWater.setUserId(parentId);
sellingWater.setSourceId(userId); sellingWater.setSourceId(userId);
sellingWater.setPositionId(positionId); sellingWater.setPositionId(positionId);
sellingWater.setOrderId(orderId); sellingWater.setOrderId(orderId);
sellingWater.setOrderNo(orderNo); sellingWater.setOrderNo(orderNo);
sellingWater.setGoodId(goodId); sellingWater.setGoodId(goodId);
sellingWater.setTitle(goodsDto.getTitle()); sellingWater.setTitle(goodsDto.getTitle());
sellingWater.setImg(goodsDto.getImg()); sellingWater.setImg(goodsDto.getImg());
sellingWater.setPrice(price); sellingWater.setPrice(price);
sellingWater.setExtract(extract); sellingWater.setExtract(extract);
sellingWater.setGoodNumber(goodsDto.getGoodNumber()); sellingWater.setGoodNumber(goodsDto.getGoodNumber());
sellingWater.setCommission(commission); sellingWater.setCommission(commission);
insertSelective(sellingWater); insertSelective(sellingWater);
log.info("购买计算用户拥成功----payOrderWater--------userId==="+userId); log.info("购买计算用户拥成功----payOrderWater--------userId===" + userId);
} }
} }
} }
//订单完成计算用户拥金 //订单完成计算用户拥金
public void finishOrderWater(OrderWaterDTO orderWaterDTO){ public void finishOrderWater(OrderWaterDTO orderWaterDTO) {
//订单id //订单id
Integer orderId=orderWaterDTO.getOrderId(); Integer orderId = orderWaterDTO.getOrderId();
log.info("订单完成计算用户拥金----finishOrderWater----orderId===="+orderId); log.info("订单完成计算用户拥金----finishOrderWater----orderId====" + orderId);
if(orderId==null||orderId==0){ if (orderId == null || orderId == 0) {
return; return;
} }
List<AppUserSellingWater> list=getWaterList(orderId); List<AppUserSellingWater> list = getWaterList(orderId);
BigDecimal amount=new BigDecimal("0.00"); BigDecimal amount = new BigDecimal("0.00");
Integer userId=0; Integer userId = 0;
if (list.size()>0){ if (list.size() > 0) {
for (AppUserSellingWater sellingWater:list){ for (AppUserSellingWater sellingWater : list) {
Integer id=sellingWater.getId(); Integer id = sellingWater.getId();
userId=sellingWater.getUserId(); userId = sellingWater.getUserId();
sellingWater.setWaiting(1); sellingWater.setWaiting(1);
updateById(sellingWater); updateById(sellingWater);
BigDecimal commission=sellingWater.getCommission(); BigDecimal commission = sellingWater.getCommission();
log.info("订单完成计算用户拥金----finishOrderWater----id===="+id+"---commission=="+commission); log.info("订单完成计算用户拥金----finishOrderWater----id====" + id + "---commission==" + commission);
amount=amount.add(commission); amount = amount.add(commission);
} }
} }
log.info("订单完成计算用户拥金----finishOrderWater----orderId===="+orderId+"---amount=="+amount); log.info("订单完成计算用户拥金----finishOrderWater----orderId====" + orderId + "---amount==" + amount);
int r=amount.compareTo(BigDecimal.ZERO); int r = amount.compareTo(BigDecimal.ZERO);
//更新钱包 //更新钱包
if(r==1&&userId>0){ if (r == 1 && userId > 0) {
myWaterBiz.updMyWater(userId,orderId,amount); myWaterBiz.updMyWater(userId, orderId, amount);
} }
} }
//订单退款计算用户拥金 //订单退款计算用户拥金
public void refundOrderWater(OrderWaterDTO orderWaterDTO){ public void refundOrderWater(OrderWaterDTO orderWaterDTO) {
//订单id //订单id
Integer orderId=orderWaterDTO.getOrderId(); Integer orderId = orderWaterDTO.getOrderId();
log.info("订单完成计算用户拥金----refundOrderWater----orderId===="+orderId); log.info("订单完成计算用户拥金----refundOrderWater----orderId====" + orderId);
if(orderId==null||orderId==0){ if (orderId == null || orderId == 0) {
return; return;
} }
List<AppUserSellingWater> list=getWaterList(orderId); List<AppUserSellingWater> list = getWaterList(orderId);
BigDecimal amount=new BigDecimal("0.00"); BigDecimal amount = new BigDecimal("0.00");
Integer userId=0; Integer userId = 0;
if (list.size()>0){ if (list.size() > 0) {
for (AppUserSellingWater sellingWater:list){ for (AppUserSellingWater sellingWater : list) {
Integer id=sellingWater.getId(); Integer id = sellingWater.getId();
userId=sellingWater.getUserId(); userId = sellingWater.getUserId();
sellingWater.setWaiting(1); sellingWater.setWaiting(1);
updateById(sellingWater); updateById(sellingWater);
sellingWater.setId(null); sellingWater.setId(null);
sellingWater.setStatus(1); sellingWater.setStatus(1);
insertSelective(sellingWater); insertSelective(sellingWater);
BigDecimal commission=sellingWater.getCommission(); BigDecimal commission = sellingWater.getCommission();
log.info("订单完成计算用户拥金----refundOrderWater----id===="+id+"---commission=="+commission); log.info("订单完成计算用户拥金----refundOrderWater----id====" + id + "---commission==" + commission);
} }
} }
log.info("订单完成计算用户拥金----refundOrderWater----orderId===="+orderId+"---amount=="+amount); log.info("订单完成计算用户拥金----refundOrderWater----orderId====" + orderId + "---amount==" + amount);
int r=amount.compareTo(BigDecimal.ZERO); int r = amount.compareTo(BigDecimal.ZERO);
//更新钱包 //更新钱包
if(r==1&&userId>0){ if (r == 1 && userId > 0) {
myWaterBiz.updMyWater(userId,orderId,amount); myWaterBiz.updMyWater(userId, orderId, amount);
} }
} }
//获取拥金列表 //获取拥金列表
public List<AppUserSellingWater> getWaterList(Integer orderId){ public List<AppUserSellingWater> getWaterList(Integer orderId) {
Example example=new Example(AppUserSellingWater.class); Example example = new Example(AppUserSellingWater.class);
example.createCriteria().andEqualTo("orderId",orderId).andEqualTo("waiting",0).andEqualTo("status",0); example.createCriteria().andEqualTo("orderId", orderId).andEqualTo("waiting", 0).andEqualTo("status", 0);
return mapper.selectByExample(example); return mapper.selectByExample(example);
} }
public Map<Integer, BigDecimal> findMemberIdAndIncomeMapByMemberIds(List<Integer> memberIds) { public Map<Integer, BigDecimal> findMemberIdAndIncomeMapByMemberIds(List<Integer> memberIds) {
Map<Integer,BigDecimal> memberIdAndIncomeMap = new HashMap<>(); Map<Integer, BigDecimal> memberIdAndIncomeMap = new HashMap<>();
List<UserIncomeBo> userIncomeBos = mapper.accquireIncomeByMemberIds(memberIds); List<UserIncomeBo> userIncomeBos = mapper.accquireIncomeByMemberIds(memberIds);
if (CollectionUtils.isNotEmpty(userIncomeBos)){ if (CollectionUtils.isNotEmpty(userIncomeBos)) {
memberIdAndIncomeMap = userIncomeBos.stream().collect(Collectors.toMap(UserIncomeBo::getUserId,userIncomeBo-> userIncomeBo.getIncome()==null?new BigDecimal(0):userIncomeBo.getIncome())); memberIdAndIncomeMap = userIncomeBos.stream().collect(Collectors.toMap(UserIncomeBo::getUserId, userIncomeBo -> userIncomeBo.getIncome() == null ? new BigDecimal(0) : userIncomeBo.getIncome()));
} }
return memberIdAndIncomeMap; return memberIdAndIncomeMap;
} }
public SellingWalletPagVo findSellingWaterPageByWaiting(Integer waiting, Integer userId, Integer pageNo, Integer pageSize){ public SellingWalletPagVo findSellingWaterPageByWaiting(Integer waiting, Integer userId, Integer pageNo, Integer pageSize) {
SellingWalletPagVo sellingWalletPagVo = new SellingWalletPagVo(); SellingWalletPagVo sellingWalletPagVo = new SellingWalletPagVo();
Example example = new Example(AppUserSellingWater.class); Example example = new Example(AppUserSellingWater.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
if (waiting!=null){ if (waiting != null) {
criteria.andEqualTo("waiting",waiting); criteria.andEqualTo("waiting", waiting);
} }
criteria.andEqualTo("userId",userId); criteria.andEqualTo("userId", userId);
PageDataVO<AppUserSellingWater> appUserSellingWaterPageDataVO = PageDataVO.pageInfo(pageNo,pageSize,()->mapper.selectByExample(example)); PageDataVO<AppUserSellingWater> appUserSellingWaterPageDataVO = PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.selectByExample(example));
List<AppUserSellingWater> appUserSellingWaters = appUserSellingWaterPageDataVO.getData(); List<AppUserSellingWater> appUserSellingWaters = appUserSellingWaterPageDataVO.getData();
if (CollectionUtils.isEmpty(appUserSellingWaters)){ if (CollectionUtils.isEmpty(appUserSellingWaters)) {
sellingWalletPagVo.setPageNum(pageNo); sellingWalletPagVo.setPageNum(pageNo);
sellingWalletPagVo.setPageSize(pageSize); sellingWalletPagVo.setPageSize(pageSize);
sellingWalletPagVo.setTotalCount(0); sellingWalletPagVo.setTotalCount(0);
...@@ -256,29 +256,29 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper,Ap ...@@ -256,29 +256,29 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper,Ap
List<Integer> memberIds = appUserSellingWaters.stream().map(AppUserSellingWater::getSourceId).collect(Collectors.toList()); List<Integer> memberIds = appUserSellingWaters.stream().map(AppUserSellingWater::getSourceId).collect(Collectors.toList());
Map<Integer,AppUserLogin> userIdAndAppUserLoginMap = appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(memberIds); Map<Integer, AppUserLogin> userIdAndAppUserLoginMap = appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(memberIds);
Map<Integer, AppUserDetail> userIdAndAppUserDetailMap = appUserDetailBiz.findUserIdAndUserDetailMapByMemberIds(memberIds); Map<Integer, AppUserDetail> userIdAndAppUserDetailMap = appUserDetailBiz.findUserIdAndUserDetailMapByMemberIds(memberIds);
List<SellingWalletVo> sellingWaterVos = new ArrayList<>(); List<SellingWalletVo> sellingWaterVos = new ArrayList<>();
SellingWalletVo sellingWaterVo; SellingWalletVo sellingWaterVo;
BigDecimal totalIncome = new BigDecimal(0); BigDecimal totalIncome = new BigDecimal(0);
for (AppUserSellingWater appUserSellingWater : appUserSellingWaters) { for (AppUserSellingWater appUserSellingWater : appUserSellingWaters) {
sellingWaterVo = new SellingWalletVo(); sellingWaterVo = new SellingWalletVo();
BeanUtils.copyProperties(appUserSellingWater,sellingWaterVo); BeanUtils.copyProperties(appUserSellingWater, sellingWaterVo);
sellingWaterVo.setUsername(userIdAndAppUserLoginMap.get(appUserSellingWater.getSourceId()).getUsername()); sellingWaterVo.setUsername(userIdAndAppUserLoginMap.get(appUserSellingWater.getSourceId()).getUsername());
if (userIdAndAppUserDetailMap!=null){ if (userIdAndAppUserDetailMap != null) {
AppUserDetail appUserDetail = userIdAndAppUserDetailMap.get(appUserSellingWater.getSourceId()); AppUserDetail appUserDetail = userIdAndAppUserDetailMap.get(appUserSellingWater.getSourceId());
sellingWaterVo.setNickName(appUserDetail==null?"":appUserDetail.getNickname()); sellingWaterVo.setNickName(appUserDetail == null ? "" : appUserDetail.getNickname());
sellingWaterVo.setHeadUrl(appUserDetail==null?"":appUserDetail.getHeadimgurl()); sellingWaterVo.setHeadUrl(appUserDetail == null ? "" : appUserDetail.getHeadimgurl());
} }
totalIncome = totalIncome.add(sellingWaterVo.getCommission()); totalIncome = totalIncome.add(sellingWaterVo.getCommission());
sellingWaterVos.add(sellingWaterVo); sellingWaterVos.add(sellingWaterVo);
} }
if (waiting==null){ if (waiting == null) {
Supplier<Stream<AppUserSellingWater>> commissionStream = ()-> appUserSellingWaters.stream(); Supplier<Stream<AppUserSellingWater>> commissionStream = () -> appUserSellingWaters.stream();
BigDecimal total = commissionStream.get().filter(x -> x.getStatus() == 0).map(AppUserSellingWater::getCommission).reduce(new BigDecimal(0),(x,y)->x.add(y)); BigDecimal total = commissionStream.get().filter(x -> x.getStatus() == 0).map(AppUserSellingWater::getCommission).reduce(new BigDecimal(0), (x, y) -> x.add(y));
BigDecimal refund = commissionStream.get().filter(x -> x.getStatus() == 1).map(AppUserSellingWater::getCommission).reduce(new BigDecimal(0),(x,y)->x.add(y)); BigDecimal refund = commissionStream.get().filter(x -> x.getStatus() == 1).map(AppUserSellingWater::getCommission).reduce(new BigDecimal(0), (x, y) -> x.add(y));
totalIncome = total.subtract(refund); totalIncome = total.subtract(refund);
} }
...@@ -291,4 +291,8 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper,Ap ...@@ -291,4 +291,8 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper,Ap
return sellingWalletPagVo; return sellingWalletPagVo;
} }
public BigDecimal selectTotalIncomeByUserId(Integer userId) {
return mapper.selectTotalIncomeByUserId(userId);
}
} }
\ No newline at end of file
package com.github.wxiaoqi.security.admin.biz; package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.bo.PromoteBO;
import com.github.wxiaoqi.security.admin.bo.UserTeamMemberBo; import com.github.wxiaoqi.security.admin.bo.UserTeamMemberBo;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail; import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
...@@ -12,9 +13,7 @@ import org.springframework.stereotype.Service; ...@@ -12,9 +13,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -89,4 +88,24 @@ public class UserBusinessBiz { ...@@ -89,4 +88,24 @@ public class UserBusinessBiz {
userTeamMemberVo.setTotalIncome(totalIncome); userTeamMemberVo.setTotalIncome(totalIncome);
return userTeamMemberVo; return userTeamMemberVo;
} }
public PromoteBO getPromoteBoByUserId(Integer userId) {
PromoteBO promoteBO = new PromoteBO();
Integer leaderId = appUserRelationBiz.findLeaderIdByMemberId(userId);
Map<Integer,Integer> memberStateAndCountMap = appUserRelationBiz.findMemberSateAndCountMapByLeaderId(userId);
if (leaderId != 0) {
Map<Integer, AppUserLogin> userIdAndUserLoginMap = appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(Arrays.asList(leaderId));
Map<Integer, AppUserDetail> userIdAndUserDetailMap = appUserDetailBiz.findUserIdAndUserDetailMapByMemberIds(Arrays.asList(leaderId));
promoteBO.setLeaderUsername(userIdAndUserLoginMap.get(leaderId).getUsername());
promoteBO.setLeaderHeadUrl(userIdAndUserDetailMap.get(leaderId).getHeadimgurl());
}
promoteBO.setInviteNumber(memberStateAndCountMap.get(0));
promoteBO.setActivatedNumber(memberStateAndCountMap.get(1));
BigDecimal totalIncome = appUserSellingWaterBiz.selectTotalIncomeByUserId(userId);
promoteBO.setTotalIncome(totalIncome);
return promoteBO;
}
} }
...@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.admin.entity.AppUserSellingWater; ...@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.admin.entity.AppUserSellingWater;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -17,4 +18,6 @@ import java.util.List; ...@@ -17,4 +18,6 @@ import java.util.List;
public interface AppUserSellingWaterMapper extends Mapper<AppUserSellingWater> { public interface AppUserSellingWaterMapper extends Mapper<AppUserSellingWater> {
List<UserIncomeBo> accquireIncomeByMemberIds(@Param("memberIds") List<Integer> memberIds); List<UserIncomeBo> accquireIncomeByMemberIds(@Param("memberIds") List<Integer> memberIds);
BigDecimal selectTotalIncomeByUserId(@Param("userId") Integer userId);
} }
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.vo.InviteMemberVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.admin.biz.AppUserRelationBiz; import com.github.wxiaoqi.security.admin.biz.AppUserRelationBiz;
import com.github.wxiaoqi.security.admin.entity.AppUserRelation; import com.github.wxiaoqi.security.admin.entity.AppUserRelation;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import org.springframework.stereotype.Controller; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest;
@RestController @RestController
@RequestMapping("relation") @RequestMapping("relation")
public class AppUserRelationController extends BaseController<AppUserRelationBiz,AppUserRelation> { public class AppUserRelationController extends BaseController<AppUserRelationBiz,AppUserRelation> {
@Autowired
private UserAuthUtil userAuthUtil;
@Autowired
private UserAuthConfig userAuthConfig;
@RequestMapping(value = "app/unauth/small/share",method = RequestMethod.GET) @RequestMapping(value = "app/unauth/small/share",method = RequestMethod.GET)
@ApiModelProperty("小程序分享绑定") @ApiModelProperty("小程序分享绑定")
...@@ -26,4 +37,19 @@ public class AppUserRelationController extends BaseController<AppUserRelationBiz ...@@ -26,4 +37,19 @@ public class AppUserRelationController extends BaseController<AppUserRelationBiz
return baseBiz.shareParentByUserId(userid,pid,platform_userid); return baseBiz.shareParentByUserId(userid,pid,platform_userid);
} }
@ApiOperation("查询邀请的成员")
@GetMapping("/page")
public ObjectRestResponse<InviteMemberVo> findInviteMemberByActivitState(@RequestParam(value = "state",required = false) Integer state,
@RequestParam("page") Integer page,
@RequestParam("limit") Integer limit,
HttpServletRequest request){
try {
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
InviteMemberVo inviteMemberVo = baseBiz.findInviteMemberByActivitState(Integer.valueOf(infoFromToken.getId()),state,page,limit);
return ObjectRestResponse.succ(inviteMemberVo);
} catch (Exception e) {
throw new BaseException(e);
}
}
} }
\ No newline at end of file
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.UserBusinessBiz; import com.github.wxiaoqi.security.admin.biz.UserBusinessBiz;
import com.github.wxiaoqi.security.admin.bo.PromoteBO;
import com.github.wxiaoqi.security.admin.bo.UserTeamMemberBo; import com.github.wxiaoqi.security.admin.bo.UserTeamMemberBo;
import com.github.wxiaoqi.security.admin.vo.UserTeamMemberVo; import com.github.wxiaoqi.security.admin.vo.UserTeamMemberVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
...@@ -45,6 +46,16 @@ public class UserBussinessController { ...@@ -45,6 +46,16 @@ public class UserBussinessController {
} catch (Exception e) { } catch (Exception e) {
throw new BaseException(e); throw new BaseException(e);
} }
}
}
@GetMapping("/promote")
public ObjectRestResponse<PromoteBO> findPromoteBo(HttpServletRequest request){
try {
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
PromoteBO promoteBO = businessBiz.getPromoteBoByUserId(Integer.valueOf(infoFromToken.getId()));
return ObjectRestResponse.succ(promoteBO);
} catch (Exception e) {
throw new BaseException(e);
}
}
} }
...@@ -16,4 +16,8 @@ WHERE ...@@ -16,4 +16,8 @@ WHERE
#{memberId} #{memberId}
</foreach> </foreach>
</select> </select>
<select id="selectTotalIncomeByUserId">
SELECT SUM(commission) FROM app_user_selling_water WHERE `user_id`=#{userId}
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment