|
@ -1,6 +1,10 @@ |
|
|
package com.ruoyi.model.service.impl; |
|
|
package com.ruoyi.model.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
|
import com.cyl.manager.oms.domain.Order; |
|
|
|
|
|
import com.cyl.manager.oms.mapper.OrderMapper; |
|
|
import com.cyl.manager.ums.domain.Member; |
|
|
import com.cyl.manager.ums.domain.Member; |
|
|
|
|
|
import com.cyl.manager.ums.mapper.MemberMapper; |
|
|
import com.cyl.manager.ums.pojo.query.MemberQuery; |
|
|
import com.cyl.manager.ums.pojo.query.MemberQuery; |
|
|
import com.cyl.manager.ums.pojo.vo.MemberDataStatisticsVO; |
|
|
import com.cyl.manager.ums.pojo.vo.MemberDataStatisticsVO; |
|
|
import com.cyl.manager.ums.pojo.vo.MemberExtendVo; |
|
|
import com.cyl.manager.ums.pojo.vo.MemberExtendVo; |
|
@ -9,9 +13,11 @@ import com.ruoyi.applet.utils.conf.AppletUtil; |
|
|
import com.ruoyi.common.core.domain.AjaxResult; |
|
|
import com.ruoyi.common.core.domain.AjaxResult; |
|
|
import com.ruoyi.framework.web.service.TokenService; |
|
|
import com.ruoyi.framework.web.service.TokenService; |
|
|
import com.ruoyi.model.domain.AppUsers; |
|
|
import com.ruoyi.model.domain.AppUsers; |
|
|
|
|
|
import com.ruoyi.model.domain.AppletAmountLog; |
|
|
import com.ruoyi.model.domain.AppletConfig; |
|
|
import com.ruoyi.model.domain.AppletConfig; |
|
|
import com.ruoyi.model.service.IAApiAppletHhrWorkOutService; |
|
|
import com.ruoyi.model.service.IAApiAppletHhrWorkOutService; |
|
|
import com.ruoyi.model.service.IAppUsersService; |
|
|
import com.ruoyi.model.service.IAppUsersService; |
|
|
|
|
|
import com.ruoyi.model.service.IAppletAmountLogService; |
|
|
import com.ruoyi.model.service.IAppletConfigService; |
|
|
import com.ruoyi.model.service.IAppletConfigService; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.beans.BeanUtils; |
|
@ -23,7 +29,12 @@ import org.springframework.stereotype.Service; |
|
|
import org.springframework.web.bind.annotation.RequestBody; |
|
|
import org.springframework.web.bind.annotation.RequestBody; |
|
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
import javax.annotation.Resource; |
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
|
import java.time.temporal.ChronoUnit; |
|
|
|
|
|
import java.time.temporal.TemporalAdjusters; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
@Slf4j |
|
|
@Slf4j |
|
|
@Service |
|
|
@Service |
|
@ -36,10 +47,17 @@ public class AApiAppletHhrWorkOutServiceImpl implements IAApiAppletHhrWorkOutSer |
|
|
@Resource |
|
|
@Resource |
|
|
private IAppletConfigService appletConfigService; |
|
|
private IAppletConfigService appletConfigService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
@Resource |
|
|
private MemberService memberService; |
|
|
private MemberService memberService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
private MemberMapper memberMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
private OrderMapper orderMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
private IAppletAmountLogService appletAmountLogService; |
|
|
|
|
|
|
|
|
//合伙人工作台 - 绑定用户基础信息 |
|
|
//合伙人工作台 - 绑定用户基础信息 |
|
|
@Override |
|
|
@Override |
|
@ -52,45 +70,39 @@ public class AApiAppletHhrWorkOutServiceImpl implements IAApiAppletHhrWorkOutSer |
|
|
Map<String,Object> map = new HashMap<>(); |
|
|
Map<String,Object> map = new HashMap<>(); |
|
|
map.put("info",appUsers); //用户信息 |
|
|
map.put("info",appUsers); //用户信息 |
|
|
// map.put("partner_level","初级合伙人"); //合伙人等级 |
|
|
// map.put("partner_level","初级合伙人"); //合伙人等级 |
|
|
map.put("partner_day","138天"); //合伙人加入天数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 计算合伙人入住天数 |
|
|
|
|
|
long partnerDays = 0; |
|
|
|
|
|
if (appUsers.getCreateTime() != null) { |
|
|
|
|
|
LocalDateTime createTime = appUsers.getCreateTime(); |
|
|
|
|
|
LocalDateTime now = LocalDateTime.now(); |
|
|
|
|
|
partnerDays = ChronoUnit.DAYS.between(createTime, now); |
|
|
|
|
|
} |
|
|
|
|
|
map.put("partner_day", partnerDays + "天"); //合伙人加入天数 |
|
|
|
|
|
|
|
|
AppletConfig petPaymentHh = appletConfigService.selectAppletConfigByClassAndNum("pet_payment_hh", appUsers.getUserHhRole()); |
|
|
AppletConfig petPaymentHh = appletConfigService.selectAppletConfigByClassAndNum("pet_payment_hh", appUsers.getUserHhRole()); |
|
|
map.put("partner_new_num",petPaymentHh.getParamValueText()); //合伙人当前合伙人比例 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (petPaymentHh != null){ |
|
|
|
|
|
map.put("partner_new_num",petPaymentHh.getParamValueText()); //合伙人当前合伙人比例 |
|
|
|
|
|
map.put("partner_new_image",petPaymentHh.getParamValueImage()); //合伙人当前合伙人比例 |
|
|
|
|
|
}else { |
|
|
|
|
|
map.put("partner_new_num", 0); //合伙人当前合伙人比例 |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
AppletConfig partner_upgrade_num = appletConfigService.selectAppletConfigByClassAndNum("pet_payment_hh", appUsers.getUserHhRole()+1); |
|
|
AppletConfig partner_upgrade_num = appletConfigService.selectAppletConfigByClassAndNum("pet_payment_hh", appUsers.getUserHhRole()+1); |
|
|
map.put("partner_upgrade_num",partner_upgrade_num.getParamValueText()); //合伙人晋级之后的合伙人比例 |
|
|
|
|
|
// map.put("user_code","jsk66623"); //邀请码 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (partner_upgrade_num != null){ |
|
|
|
|
|
map.put("partner_upgrade_num", partner_upgrade_num.getParamValueText()); //合伙人晋级之后的合伙人比例 |
|
|
|
|
|
}else { |
|
|
|
|
|
map.put("partner_upgrade_num", -1); //合伙人晋级之后的合伙人比例 |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
map.put("user_code", appUsersService.getUserCode(appUserId)); //邀请码 |
|
|
map.put("user_code_bj","https://image.hhlm1688.com/img/work/log/indexInfo/11.png"); //邀请码背景图 |
|
|
map.put("user_code_bj","https://image.hhlm1688.com/img/work/log/indexInfo/11.png"); //邀请码背景图 |
|
|
map.put("user_code_fx","https://image.hhlm1688.com/img/work/log/indexInfo/11.png"); //分享海报背景图 |
|
|
map.put("user_code_fx","https://image.hhlm1688.com/img/work/log/indexInfo/11.png"); //分享海报背景图 |
|
|
map.put("user_code_url","https://image.hhlm1688.com/img/work/log/indexInfo/11.png"); //分销链接背景图 |
|
|
map.put("user_code_url","https://image.hhlm1688.com/img/work/log/indexInfo/11.png"); //分销链接背景图 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
map.put("register_users","0"); //当月注册用户 |
|
|
|
|
|
map.put("order_users","0"); //当月下单用户 |
|
|
|
|
|
map.put("use_users","0"); //当月有效用户 |
|
|
|
|
|
|
|
|
|
|
|
map.put("order_users_money","0"); //本月订单金额 |
|
|
|
|
|
map.put("use_users_money","0"); //本月有效订单金额 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
map.put("register_users_sum","0"); //累积注册用户 |
|
|
|
|
|
map.put("order_users_sum","0"); //累积下单用户 |
|
|
|
|
|
map.put("use_users_sum","0"); //累积有效用户 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
map.put("order_users_sum_money","0"); //累积订单金额 |
|
|
|
|
|
map.put("use_users_sum_money","0"); //累积有效订单金额 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
map.put("money",appUsers.getMoney()); //钱包金额 |
|
|
|
|
|
map.put("new_money","0"); //本月分成 |
|
|
|
|
|
map.put("old_money","0"); //累积分成 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
map.put("upgrade_register_num","5"); //距离下一个等级需要注册多少人 |
|
|
map.put("upgrade_register_num","5"); //距离下一个等级需要注册多少人 |
|
|
map.put("upgrade_order_num","20"); //距离下一个等级需要下单人数 |
|
|
map.put("upgrade_order_num","20"); //距离下一个等级需要下单人数 |
|
@ -105,6 +117,215 @@ public class AApiAppletHhrWorkOutServiceImpl implements IAApiAppletHhrWorkOutSer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取用户邀请码 |
|
|
|
|
|
String invitationCode = appUsersService.getUserCode(appUserId); |
|
|
|
|
|
|
|
|
|
|
|
// List<Long> memberIds = memberMapper.selectList(Wrappers.<Member>lambdaQuery() |
|
|
|
|
|
// .select(Member::getId) |
|
|
|
|
|
// .eq(Member::getInviteCode, invitationCode)) |
|
|
|
|
|
// .stream().map(n -> n.getId()) |
|
|
|
|
|
// .collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
// 获取当月开始和结束时间 |
|
|
|
|
|
LocalDateTime monthStart = LocalDateTime.now().with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0).withNano(0); |
|
|
|
|
|
LocalDateTime monthEnd = LocalDateTime.now().with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59); |
|
|
|
|
|
|
|
|
|
|
|
// 统计当月注册用户(通过邀请码注册的用户) |
|
|
|
|
|
Integer monthRegisterUsers = memberMapper.selectCount( |
|
|
|
|
|
Wrappers.<Member>lambdaQuery() |
|
|
|
|
|
.eq(Member::getInviteCode, invitationCode) |
|
|
|
|
|
.ge(Member::getCreateTime, monthStart) |
|
|
|
|
|
.le(Member::getCreateTime, monthEnd) |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
// 统计累积注册用户 |
|
|
|
|
|
Integer totalRegisterUsers = memberMapper.selectCount( |
|
|
|
|
|
Wrappers.<Member>lambdaQuery() |
|
|
|
|
|
.eq(Member::getInviteCode, invitationCode) |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
// 获取通过邀请码注册的所有用户ID列表 |
|
|
|
|
|
List<Member> invitedMembers = memberMapper.selectList( |
|
|
|
|
|
Wrappers.<Member>lambdaQuery() |
|
|
|
|
|
.select(Member::getId) |
|
|
|
|
|
.eq(Member::getInviteCode, invitationCode) |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
List<Long> memberIds = new ArrayList<>(); |
|
|
|
|
|
for (Member member : invitedMembers) { |
|
|
|
|
|
memberIds.add(member.getId()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 统计当月下单用户 |
|
|
|
|
|
Integer monthOrderUsers = 0; |
|
|
|
|
|
BigDecimal monthOrderMoney = BigDecimal.ZERO; |
|
|
|
|
|
if (!memberIds.isEmpty()) { |
|
|
|
|
|
// 获取当月下单的唯一用户ID列表 |
|
|
|
|
|
List<Order> monthOrderList = orderMapper.selectList( |
|
|
|
|
|
Wrappers.<Order>lambdaQuery() |
|
|
|
|
|
.select(Order::getMemberId) |
|
|
|
|
|
.in(Order::getMemberId, memberIds) |
|
|
|
|
|
.notIn(Order::getStatus, 0, 4) // 排除待支付和已关闭订单 |
|
|
|
|
|
.ge(Order::getCreateTime, monthStart) |
|
|
|
|
|
.le(Order::getCreateTime, monthEnd) |
|
|
|
|
|
.groupBy(Order::getMemberId) |
|
|
|
|
|
); |
|
|
|
|
|
monthOrderUsers = monthOrderList.size(); |
|
|
|
|
|
|
|
|
|
|
|
// 统计当月订单金额 |
|
|
|
|
|
List<Order> monthOrders = orderMapper.selectList( |
|
|
|
|
|
Wrappers.<Order>lambdaQuery() |
|
|
|
|
|
.select(Order::getPayAmount) |
|
|
|
|
|
.in(Order::getMemberId, memberIds) |
|
|
|
|
|
.notIn(Order::getStatus, 0, 4) // 排除待支付和已关闭订单 |
|
|
|
|
|
.ge(Order::getCreateTime, monthStart) |
|
|
|
|
|
.le(Order::getCreateTime, monthEnd) |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
for (Order order : monthOrders) { |
|
|
|
|
|
if (order.getPayAmount() != null) { |
|
|
|
|
|
monthOrderMoney = monthOrderMoney.add(order.getPayAmount()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 统计累积下单用户 |
|
|
|
|
|
Integer totalOrderUsers = 0; |
|
|
|
|
|
BigDecimal totalOrderMoney = BigDecimal.ZERO; |
|
|
|
|
|
if (!memberIds.isEmpty()) { |
|
|
|
|
|
// 获取累积下单的唯一用户ID列表 |
|
|
|
|
|
List<Order> totalOrderList = orderMapper.selectList( |
|
|
|
|
|
Wrappers.<Order>lambdaQuery() |
|
|
|
|
|
.select(Order::getMemberId) |
|
|
|
|
|
.in(Order::getMemberId, memberIds) |
|
|
|
|
|
.notIn(Order::getStatus, 0, 4) // 排除待支付和已关闭订单 |
|
|
|
|
|
.groupBy(Order::getMemberId) |
|
|
|
|
|
); |
|
|
|
|
|
totalOrderUsers = totalOrderList.size(); |
|
|
|
|
|
|
|
|
|
|
|
// 统计累积订单金额 |
|
|
|
|
|
List<Order> totalOrders = orderMapper.selectList( |
|
|
|
|
|
Wrappers.<Order>lambdaQuery() |
|
|
|
|
|
.select(Order::getPayAmount) |
|
|
|
|
|
.in(Order::getMemberId, memberIds) |
|
|
|
|
|
.notIn(Order::getStatus, 0, 4) // 排除待支付和已关闭订单 |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
for (Order order : totalOrders) { |
|
|
|
|
|
if (order.getPayAmount() != null) { |
|
|
|
|
|
totalOrderMoney = totalOrderMoney.add(order.getPayAmount()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 统计当月有效用户(已完成订单的用户) |
|
|
|
|
|
Integer monthValidUsers = 0; |
|
|
|
|
|
BigDecimal monthValidMoney = BigDecimal.ZERO; |
|
|
|
|
|
if (!memberIds.isEmpty()) { |
|
|
|
|
|
// 获取当月有效订单的唯一用户ID列表 |
|
|
|
|
|
List<Order> monthValidUserList = orderMapper.selectList( |
|
|
|
|
|
Wrappers.<Order>lambdaQuery() |
|
|
|
|
|
.select(Order::getMemberId) |
|
|
|
|
|
.in(Order::getMemberId, memberIds) |
|
|
|
|
|
.eq(Order::getStatus, 3) // 已完成状态 |
|
|
|
|
|
.ge(Order::getCreateTime, monthStart) |
|
|
|
|
|
.le(Order::getCreateTime, monthEnd) |
|
|
|
|
|
.groupBy(Order::getMemberId) |
|
|
|
|
|
); |
|
|
|
|
|
monthValidUsers = monthValidUserList.size(); |
|
|
|
|
|
|
|
|
|
|
|
// 统计当月有效订单金额 |
|
|
|
|
|
List<Order> monthValidOrders = orderMapper.selectList( |
|
|
|
|
|
Wrappers.<Order>lambdaQuery() |
|
|
|
|
|
.select(Order::getPayAmount) |
|
|
|
|
|
.in(Order::getMemberId, memberIds) |
|
|
|
|
|
.eq(Order::getStatus, 3) |
|
|
|
|
|
.ge(Order::getCreateTime, monthStart) |
|
|
|
|
|
.le(Order::getCreateTime, monthEnd) |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
for (Order order : monthValidOrders) { |
|
|
|
|
|
if (order.getPayAmount() != null) { |
|
|
|
|
|
monthValidMoney = monthValidMoney.add(order.getPayAmount()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 统计累积有效用户 |
|
|
|
|
|
Integer totalValidUsers = 0; |
|
|
|
|
|
BigDecimal totalValidMoney = BigDecimal.ZERO; |
|
|
|
|
|
if (!memberIds.isEmpty()) { |
|
|
|
|
|
// 获取累积有效订单的唯一用户ID列表 |
|
|
|
|
|
List<Order> totalValidUserList = orderMapper.selectList( |
|
|
|
|
|
Wrappers.<Order>lambdaQuery() |
|
|
|
|
|
.select(Order::getMemberId) |
|
|
|
|
|
.in(Order::getMemberId, memberIds) |
|
|
|
|
|
.eq(Order::getStatus, 3) |
|
|
|
|
|
.groupBy(Order::getMemberId) |
|
|
|
|
|
); |
|
|
|
|
|
totalValidUsers = totalValidUserList.size(); |
|
|
|
|
|
|
|
|
|
|
|
// 统计累积有效订单金额 |
|
|
|
|
|
List<Order> totalValidOrders = orderMapper.selectList( |
|
|
|
|
|
Wrappers.<Order>lambdaQuery() |
|
|
|
|
|
.select(Order::getPayAmount) |
|
|
|
|
|
.in(Order::getMemberId, memberIds) |
|
|
|
|
|
.eq(Order::getStatus, 3) |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
for (Order order : totalValidOrders) { |
|
|
|
|
|
if (order.getPayAmount() != null) { |
|
|
|
|
|
totalValidMoney = totalValidMoney.add(order.getPayAmount()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 统计当月分成收入 |
|
|
|
|
|
List<AppletAmountLog> monthIncomes = appletAmountLogService.list( |
|
|
|
|
|
Wrappers.<AppletAmountLog>lambdaQuery() |
|
|
|
|
|
.eq(AppletAmountLog::getUserId, appUserId) |
|
|
|
|
|
.eq(AppletAmountLog::getType, 0) // 收入 |
|
|
|
|
|
.eq(AppletAmountLog::getMoneyType, 0) // 合伙人余额 |
|
|
|
|
|
.ge(AppletAmountLog::getCreateTime, monthStart) |
|
|
|
|
|
.le(AppletAmountLog::getCreateTime, monthEnd) |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
BigDecimal monthIncome = monthIncomes.stream() |
|
|
|
|
|
.map(AppletAmountLog::getAmount) |
|
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
|
|
|
|
|
|
|
// 统计累积分成收入 |
|
|
|
|
|
List<AppletAmountLog> totalIncomes = appletAmountLogService.list( |
|
|
|
|
|
Wrappers.<AppletAmountLog>lambdaQuery() |
|
|
|
|
|
.eq(AppletAmountLog::getUserId, appUserId) |
|
|
|
|
|
.eq(AppletAmountLog::getType, 0) // 收入 |
|
|
|
|
|
.eq(AppletAmountLog::getMoneyType, 0) // 合伙人余额 |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
BigDecimal totalIncome = totalIncomes.stream() |
|
|
|
|
|
.map(AppletAmountLog::getAmount) |
|
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
|
|
|
|
|
|
|
map.put("register_users", monthRegisterUsers); //当月注册用户 |
|
|
|
|
|
map.put("order_users", monthOrderUsers); //当月下单用户 |
|
|
|
|
|
map.put("use_users", monthValidUsers); //当月有效用户 |
|
|
|
|
|
|
|
|
|
|
|
map.put("order_users_money", monthOrderMoney); //本月订单金额 |
|
|
|
|
|
map.put("use_users_money", monthValidMoney); //本月有效订单金额 |
|
|
|
|
|
|
|
|
|
|
|
map.put("register_users_sum", totalRegisterUsers); //累积注册用户 |
|
|
|
|
|
map.put("order_users_sum", totalOrderUsers); //累积下单用户 |
|
|
|
|
|
map.put("use_users_sum", totalValidUsers); //累积有效用户 |
|
|
|
|
|
|
|
|
|
|
|
map.put("order_users_sum_money", totalOrderMoney); //累积订单金额 |
|
|
|
|
|
map.put("use_users_sum_money", totalValidMoney); //累积有效订单金额 |
|
|
|
|
|
|
|
|
|
|
|
map.put("money", appUsers.getMoney()); //钱包金额 |
|
|
|
|
|
map.put("new_money", monthIncome); //本月分成 |
|
|
|
|
|
map.put("old_money", totalIncome); //累积分成 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return AjaxResult.success(map); |
|
|
return AjaxResult.success(map); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|