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
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