From e1529b9213d65591c343cabd578bba8e5cc4f6fc Mon Sep 17 00:00:00 2001
From: hly <2783385703@qq.com>
Date: Fri, 22 Aug 2025 17:34:01 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CatmDogd-Mall-Front-test/.env.development | 2 +-
.../src/views/model/AppletConfig/hhindex.vue | 10 +-
ruoyi-admin/src/main/resources/application.yml | 2 +-
.../contoller/ApiAppletHhrWorkOutController.java | 60 ++++-
.../contoller/ApiMallUserTeacherController.java | 31 +++
.../service/impl/IApiMallOrderServiceImpl.java | 2 -
.../main/java/com/ruoyi/model/domain/AppUsers.java | 6 +
.../com/ruoyi/model/domain/AppletAmountLog.java | 12 +-
.../java/com/ruoyi/model/domain/AppletConfig.java | 4 +
.../com/ruoyi/model/service/IAppUsersService.java | 4 +
.../ruoyi/model/service/IAppletConfigService.java | 6 +-
.../impl/AApiAppletHhrWorkOutServiceImpl.java | 283 ++++++++++++++++++---
.../service/impl/AApiAppletLoginServiceImpl.java | 4 +-
.../model/service/impl/AppUsersServiceImpl.java | 72 ++++++
.../service/impl/AppletConfigServiceImpl.java | 26 +-
.../main/java/com/cyl/h5/service/H5PetService.java | 3 +
.../cyl/manager/ums/pojo/vo/MemberExtendVo.java | 13 +-
.../com/cyl/manager/ums/pojo/vo/MemberV2VO.java | 3 +
18 files changed, 487 insertions(+), 56 deletions(-)
diff --git a/CatmDogd-Mall-Front-test/.env.development b/CatmDogd-Mall-Front-test/.env.development
index d8a74eb..11fd0f5 100644
--- a/CatmDogd-Mall-Front-test/.env.development
+++ b/CatmDogd-Mall-Front-test/.env.development
@@ -8,7 +8,7 @@ VUE_APP_TITLE = 下单伴宠师综合管理平台
# VUE_APP_BASE_API = 'https://api.catmdogd.com'
# VUE_APP_BASE_API = 'https://pet-admin.hhlm1688.com/api/'
# VUE_APP_BASE_API = 'http://h5.xzaiyp.top'
-VUE_APP_BASE_API = 'http://localhost:8002'
+VUE_APP_BASE_API = 'http://localhost:8003'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
diff --git a/CatmDogd-Mall-Front-test/src/views/model/AppletConfig/hhindex.vue b/CatmDogd-Mall-Front-test/src/views/model/AppletConfig/hhindex.vue
index c8d5da8..a5377c4 100644
--- a/CatmDogd-Mall-Front-test/src/views/model/AppletConfig/hhindex.vue
+++ b/CatmDogd-Mall-Front-test/src/views/model/AppletConfig/hhindex.vue
@@ -99,6 +99,7 @@
+
@@ -158,10 +159,13 @@
+
+
+
-
-
-
+
+
+
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index e914046..e4becd1 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -20,7 +20,7 @@ ruoyi:
# 开发环境配置.0
server:
# 服务器的HTTP端口,默认为8080
- port: 8002
+ port: 8003
servlet:
# 应用的访问路径
context-path: /
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkOutController.java b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkOutController.java
index 0ee6b3b..3dab594 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkOutController.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkOutController.java
@@ -1,17 +1,24 @@
package com.ruoyi.applet.contoller;
+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.mapper.MemberMapper;
import com.cyl.manager.ums.pojo.query.MemberQuery;
import com.cyl.manager.ums.pojo.vo.MemberDataStatisticsVO;
import com.cyl.manager.ums.pojo.vo.MemberExtendVo;
import com.cyl.manager.ums.service.MemberService;
+import com.github.pagehelper.PageHelper;
import com.ruoyi.applet.pojo.dto.ApiQueryIIdDTO;
import com.ruoyi.applet.pojo.dto.ApiQueryIIdMyUserDTO;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.SortUtil;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.model.domain.AppBanner;
import com.ruoyi.model.domain.AppUsers;
+import com.ruoyi.model.domain.AppletAmountLog;
import com.ruoyi.model.domain.AppletUsers;
import com.ruoyi.model.service.*;
import io.swagger.annotations.Api;
@@ -46,6 +53,12 @@ public class ApiAppletHhrWorkOutController {
@Resource
private IAppUsersService appUsersService;
+ @Resource
+ private OrderMapper orderMapper;
+
+ @Resource
+ private IAppletAmountLogService appletAmountLogService;
+
//合伙人工作台 - 绑定用户基础信息
@ApiOperation("合伙人工作台 - 绑定用户基础信息")
@@ -85,22 +98,59 @@ public class ApiAppletHhrWorkOutController {
AppUsers appUsers = appUsersService.selectAppUsersByUserId(dto.getAppUserId());
+ if (StringUtils.isEmpty(appUsers.getInvitationCode())){
+ return ResponseEntity.ok(new PageImpl<>(new ArrayList<>()));
+ }
+
+// MemberQuery query = new MemberQuery();
+// query.setInviteCode(appUsers.getInvitationCode());
+// List list = service.selectList(query, page);
+
+
+ if (page != null) {
+ PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize(), SortUtil.sort2string(page.getSort(),"id desc"));
+ }
- MemberQuery query = new MemberQuery();
- query.setInviteCode(appUsers.getInvitationCode());
- List list = service.selectList(query, page);
+ List list = memberMapper.selectList(Wrappers.lambdaQuery()
+ .eq(Member::getInviteCode, appUsers.getInvitationCode()));
List memberExtendVoList = new ArrayList<>();
list.forEach(member -> {
MemberExtendVo memberExtendVo = new MemberExtendVo();
BeanUtils.copyProperties(member, memberExtendVo);
MemberDataStatisticsVO mds = service.viewStatistics(member.getId());
+
+ if (mds.getOrderCount() == 0 && dto.getState() != 0
+ || mds.getOrderCount() > 0 && dto.getState() == 0){
+ return;
+ }
+
BeanUtils.copyProperties(mds, memberExtendVo);
memberExtendVo.setPhoneHidden(service.getPhoneDecrypted(memberExtendVo.getPhoneEncrypted()));
- //lzx-增加了一个邀请码的回显
- memberExtendVo.setInviteCode(member.getInviteCode());
+ //查询最近下单时间
+ Order order = orderMapper.selectOne(Wrappers.lambdaQuery()
+ .select(Order::getCreateTime)
+ .orderByDesc(Order::getCreateTime)
+ .last("limit 1"));
+ memberExtendVo.setOrderTime(order.getCreateTime());
+
+ //查询累计报酬
+ List amountLogs = appletAmountLogService.lambdaQuery()
+ .select(AppletAmountLog::getAmount)
+ .eq(AppletAmountLog::getUserId, appUsers.getUserId())
+ .eq(AppletAmountLog::getFormId, member.getId())
+ .eq(AppletAmountLog::getType, 0)
+ .eq(AppletAmountLog::getMoneyType, 0)
+ .list();
+
+ // 统计金额总和
+ BigDecimal totalAmount = amountLogs.stream()
+ .map(AppletAmountLog::getAmount)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ memberExtendVo.setUserAmount(totalAmount);
memberExtendVoList.add(memberExtendVo);
});
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiMallUserTeacherController.java b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiMallUserTeacherController.java
index eafffcc..c77c96b 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiMallUserTeacherController.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiMallUserTeacherController.java
@@ -3,11 +3,15 @@ package com.ruoyi.applet.contoller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cyl.manager.staff.domain.vo.StaffVO;
+import com.cyl.manager.ums.domain.Member;
import com.cyl.manager.ums.mapper.MemberMapper;
+import com.cyl.manager.ums.service.MemberWechatService;
import com.ruoyi.applet.mallpojo.TeacherListRequest;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.model.domain.*;
import com.ruoyi.model.service.*;
import io.swagger.annotations.Api;
@@ -17,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -42,6 +47,9 @@ public class ApiMallUserTeacherController extends BaseController {
@Autowired
private MemberMapper memberMapper;
+ @Autowired
+ private MemberWechatService memberWechatService;
+
//mall-首页周边伴宠师
@ApiOperation("mall-首页周边伴宠师接口")
@GetMapping("/getTeacherListIndex")
@@ -337,10 +345,33 @@ public class ApiMallUserTeacherController extends BaseController {
+ //mall端-下单端用户通过邀请码绑定伴宠师
+ @ApiOperation("mall端-下单端用户通过邀请码绑定伴宠师")
+ @GetMapping("/bindCode")
+ public AjaxResult bindCode(String code, String openId) {
+ if (StringUtils.isEmpty(openId)){
+ throw new ServiceException("openId不能为空");
+ }
+ Member member = memberWechatService.isRegister(openId);
+ if (member == null){
+ throw new ServiceException("用户不存在");
+ }
+ //判断当前用户有没有绑定
+ if (StringUtils.isNotEmpty(member.getInviteCode())){
+ throw new ServiceException("已经绑定过了");
+ }
+
+ AppUsers users = appUsersService.bindCode(code);
+ member.setInviteCode(code);
+ member.setSpreadTime(LocalDateTime.now());
+ member.setSpreadUid(users.getUserId());
+ memberMapper.updateById(member);
+ return AjaxResult.success();
+ }
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java
index a14ffab..13f5122 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java
@@ -212,13 +212,11 @@ public class IApiMallOrderServiceImpl implements IApiMallOrderService {
item.setService(orderServiceInfo);
-
OmsOrderService omsOrderService = new OmsOrderService();
omsOrderService.setOrderId(item.getOrderId());
List orderServiceList = omsOrderServiceMapper.selectListBySql(omsOrderService);
-
// 使用一个 Set 来跟踪已经添加的 PetVO 的 id
Set addedPetIds = new HashSet<>();
List petVOList = new ArrayList<>();
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppUsers.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppUsers.java
index a36e24d..1e1db5b 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppUsers.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppUsers.java
@@ -5,6 +5,7 @@ import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
@@ -19,6 +20,7 @@ public class AppUsers {
private static final long serialVersionUID = 1L;
/** 用户编号 */
+ @TableId
private Long userId;
/** 创建人 */
@@ -98,6 +100,10 @@ public class AppUsers {
@Excel(name = "邀请码")
private String invitationCode;
+ /** 邀请人数 */
+ @Excel(name = "邀请人数")
+ private Integer invitationNumber;
+
/** 保证金 */
@Excel(name = "保证金")
private BigDecimal baoPrice;
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAmountLog.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAmountLog.java
index b5b99f3..c87d68f 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAmountLog.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAmountLog.java
@@ -2,6 +2,8 @@ package com.ruoyi.model.domain;
import java.math.BigDecimal;
+import com.cyl.manager.oms.domain.Order;
+import com.cyl.manager.ums.domain.Member;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -30,7 +32,7 @@ public class AppletAmountLog extends BaseEntity
private BigDecimal amount;
/** 类型 */
- @Excel(name = "类型")
+ @Excel(name = "类型 0收入 1支出")
private Integer type;
/** 删除标识 */
@@ -46,7 +48,7 @@ public class AppletAmountLog extends BaseEntity
/** 钱包类型 */
- @Excel(name = "钱包类型")
+ @Excel(name = "钱包类型 0合伙人余额 1伴宠师余额 2保证金余额")
private Integer moneyType;
/** 提现者姓名 */
@@ -61,4 +63,10 @@ public class AppletAmountLog extends BaseEntity
/** 审核状态(0待审核1通过2不通过) */
@Excel(name = "审核状态(0待审核1通过2不通过)")
private Integer auditStatus;
+
+ @Excel(name = "金额来源用户")
+ private Long formId;
+
+ @Excel(name = "金额关联订单")
+ private Long orderId;
}
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletConfig.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletConfig.java
index 300fccd..731caf7 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletConfig.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletConfig.java
@@ -156,6 +156,10 @@ public class AppletConfig
@Excel(name = "参数值-数值")
private Integer paramValueNum;
+ /** 参数值-达成人数 */
+ @Excel(name = "参数值-达成人数")
+ private Integer paramCondition;
+
/** 参数值-百分比 */
@Excel(name = "参数值-百分比")
private BigDecimal paramValueNo;
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppUsersService.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppUsersService.java
index 0349bf0..4b309dd 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppUsersService.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppUsersService.java
@@ -67,4 +67,8 @@ public interface IAppUsersService extends IService
public List filterQualifiedUsers(filterQualifiedUsersVo filterVo);
+
+ String getUserCode(Long appUserId);
+
+ AppUsers bindCode(String code);
}
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletConfigService.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletConfigService.java
index 382e351..e0b466f 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletConfigService.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletConfigService.java
@@ -1,6 +1,8 @@
package com.ruoyi.model.service;
import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.model.domain.AppletConfig;
/**
@@ -9,7 +11,7 @@ import com.ruoyi.model.domain.AppletConfig;
* @author ruoyi
* @date 2025-03-28
*/
-public interface IAppletConfigService
+public interface IAppletConfigService extends IService
{
/**
* 查询配置信息
@@ -18,6 +20,8 @@ public interface IAppletConfigService
* @return 配置信息
*/
public AppletConfig selectAppletConfigById(Long id);
+
+
public AppletConfig selectAppletConfigByClassAndNum(String paramClass,Integer paramValueNum);
/**
* 查询配置信息列表
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletHhrWorkOutServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletHhrWorkOutServiceImpl.java
index 369f0d6..a0f7501 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletHhrWorkOutServiceImpl.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletHhrWorkOutServiceImpl.java
@@ -1,6 +1,10 @@
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.mapper.MemberMapper;
import com.cyl.manager.ums.pojo.query.MemberQuery;
import com.cyl.manager.ums.pojo.vo.MemberDataStatisticsVO;
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.framework.web.service.TokenService;
import com.ruoyi.model.domain.AppUsers;
+import com.ruoyi.model.domain.AppletAmountLog;
import com.ruoyi.model.domain.AppletConfig;
import com.ruoyi.model.service.IAApiAppletHhrWorkOutService;
import com.ruoyi.model.service.IAppUsersService;
+import com.ruoyi.model.service.IAppletAmountLogService;
import com.ruoyi.model.service.IAppletConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -23,7 +29,12 @@ import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
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.stream.Collectors;
@Slf4j
@Service
@@ -36,10 +47,17 @@ public class AApiAppletHhrWorkOutServiceImpl implements IAApiAppletHhrWorkOutSer
@Resource
private IAppletConfigService appletConfigService;
-
@Resource
private MemberService memberService;
-
+
+ @Resource
+ private MemberMapper memberMapper;
+
+ @Resource
+ private OrderMapper orderMapper;
+
+ @Resource
+ private IAppletAmountLogService appletAmountLogService;
//合伙人工作台 - 绑定用户基础信息
@Override
@@ -52,45 +70,39 @@ public class AApiAppletHhrWorkOutServiceImpl implements IAApiAppletHhrWorkOutSer
Map map = new HashMap<>();
map.put("info",appUsers); //用户信息
// 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());
- 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);
- 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_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("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_order_num","20"); //距离下一个等级需要下单人数
@@ -105,6 +117,215 @@ public class AApiAppletHhrWorkOutServiceImpl implements IAApiAppletHhrWorkOutSer
+ // 获取用户邀请码
+ String invitationCode = appUsersService.getUserCode(appUserId);
+
+// List memberIds = memberMapper.selectList(Wrappers.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.lambdaQuery()
+ .eq(Member::getInviteCode, invitationCode)
+ .ge(Member::getCreateTime, monthStart)
+ .le(Member::getCreateTime, monthEnd)
+ );
+
+ // 统计累积注册用户
+ Integer totalRegisterUsers = memberMapper.selectCount(
+ Wrappers.lambdaQuery()
+ .eq(Member::getInviteCode, invitationCode)
+ );
+
+ // 获取通过邀请码注册的所有用户ID列表
+ List invitedMembers = memberMapper.selectList(
+ Wrappers.lambdaQuery()
+ .select(Member::getId)
+ .eq(Member::getInviteCode, invitationCode)
+ );
+
+ List memberIds = new ArrayList<>();
+ for (Member member : invitedMembers) {
+ memberIds.add(member.getId());
+ }
+
+ // 统计当月下单用户
+ Integer monthOrderUsers = 0;
+ BigDecimal monthOrderMoney = BigDecimal.ZERO;
+ if (!memberIds.isEmpty()) {
+ // 获取当月下单的唯一用户ID列表
+ List monthOrderList = orderMapper.selectList(
+ Wrappers.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 monthOrders = orderMapper.selectList(
+ Wrappers.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 totalOrderList = orderMapper.selectList(
+ Wrappers.lambdaQuery()
+ .select(Order::getMemberId)
+ .in(Order::getMemberId, memberIds)
+ .notIn(Order::getStatus, 0, 4) // 排除待支付和已关闭订单
+ .groupBy(Order::getMemberId)
+ );
+ totalOrderUsers = totalOrderList.size();
+
+ // 统计累积订单金额
+ List totalOrders = orderMapper.selectList(
+ Wrappers.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 monthValidUserList = orderMapper.selectList(
+ Wrappers.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 monthValidOrders = orderMapper.selectList(
+ Wrappers.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 totalValidUserList = orderMapper.selectList(
+ Wrappers.lambdaQuery()
+ .select(Order::getMemberId)
+ .in(Order::getMemberId, memberIds)
+ .eq(Order::getStatus, 3)
+ .groupBy(Order::getMemberId)
+ );
+ totalValidUsers = totalValidUserList.size();
+
+ // 统计累积有效订单金额
+ List totalValidOrders = orderMapper.selectList(
+ Wrappers.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 monthIncomes = appletAmountLogService.list(
+ Wrappers.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 totalIncomes = appletAmountLogService.list(
+ Wrappers.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);
}
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletLoginServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletLoginServiceImpl.java
index 707cf09..918c43c 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletLoginServiceImpl.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletLoginServiceImpl.java
@@ -88,9 +88,9 @@ public class AApiAppletLoginServiceImpl implements IAApiAppletLoginService {
appUsers.setUserHhRole(0); //初始化合伙人角色
//初始化合伙人佣金
appUsers.setMoney(new BigDecimal(0));
- appUsers.setInvitationCode(String.valueOf(appletId));
+// appUsers.setInvitationCode(String.valueOf(appletId));
appUsersService.insertAppUsers(appUsers);
-
+ appUsersService.getUserCode(appletId);
LoginApplet loginApplet = new LoginApplet();
loginApplet.setAppletId(appletId);
String appletToken = tokenService.createAppletToken(loginApplet);
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppUsersServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppUsersServiceImpl.java
index 08e2a67..7917665 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppUsersServiceImpl.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppUsersServiceImpl.java
@@ -6,6 +6,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Random;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -15,6 +16,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cyl.manager.oms.domain.OmsOrderService;
import com.cyl.manager.oms.mapper.OmsOrderServiceMapper;
import com.ruoyi.applet.pojo.dto.filterQualifiedUsersVo;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.model.domain.AppletAddress;
@@ -22,6 +24,7 @@ import com.ruoyi.model.domain.AppletOrder;
import com.ruoyi.model.domain.AppletOutDate;
import com.ruoyi.model.service.IAppletAddressService;
import com.ruoyi.model.service.IAppletOutDateService;
+import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.model.mapper.AppUsersMapper;
@@ -35,6 +38,7 @@ import com.ruoyi.model.service.IAppUsersService;
* @date 2025-03-27
*/
@Service
+@Log4j2
public class AppUsersServiceImpl extends ServiceImpl implements IAppUsersService
{
@Autowired
@@ -237,4 +241,72 @@ public class AppUsersServiceImpl extends ServiceImpl i
return qualifiedTechnicians;
}
+
+ /**
+ * 生成唯一的6位字母数字邀请码
+ * @return 6位字母数字组合的邀请码
+ */
+ private String generateUniqueInvitationCode() {
+ String characters = "abcdefghijklmnopqrstuvwxyz0123456789";
+ Random random = new Random();
+ String code;
+
+ do {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < 6; i++) {
+ sb.append(characters.charAt(random.nextInt(characters.length())));
+ }
+ code = sb.toString();
+ } while (isInvitationCodeExists(code)); // 确保邀请码唯一
+
+ return code;
+ }
+
+ /**
+ * 检查邀请码是否已存在
+ * @param code 邀请码
+ * @return true表示已存在,false表示不存在
+ */
+ private boolean isInvitationCodeExists(String code) {
+ return appUsersMapper.selectCount(
+ Wrappers.lambdaQuery()
+ .eq(AppUsers::getInvitationCode, code)
+ ) > 0;
+ }
+
+ @Override
+ public String getUserCode(Long appUserId) {
+
+ AppUsers byId = getById(appUserId);
+
+ if (byId == null){
+ log.error("用户不存在 ID:{}", appUserId);
+ return null;
+ }
+
+ if (StringUtils.isNotEmpty(byId.getInvitationCode())){
+ return byId.getInvitationCode();
+ }
+
+ //生成邀请码
+ String invitationCode = generateUniqueInvitationCode();
+ byId.setInvitationCode(invitationCode);
+ updateById(byId);
+
+ return byId.getInvitationCode();
+ }
+
+ @Override
+ public AppUsers bindCode(String code) {
+ AppUsers users = lambdaQuery().eq(AppUsers::getInvitationCode, code).one();
+ if (users == null){
+ throw new ServiceException("无效的邀请码");
+ }
+ users.setInvitationNumber(users.getInvitationNumber() + 1);
+ updateById(users);
+
+ //TODO 检查是否满足升级条件
+
+ return users;
+ }
}
diff --git a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletConfigServiceImpl.java b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletConfigServiceImpl.java
index c4bba18..ee70a8b 100644
--- a/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletConfigServiceImpl.java
+++ b/ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletConfigServiceImpl.java
@@ -3,8 +3,10 @@ package com.ruoyi.model.service.impl;
import java.util.List;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.model.mapper.AppletConfigMapper;
@@ -18,7 +20,7 @@ import com.ruoyi.model.service.IAppletConfigService;
* @date 2025-03-28
*/
@Service
-public class AppletConfigServiceImpl implements IAppletConfigService
+public class AppletConfigServiceImpl extends ServiceImpl implements IAppletConfigService
{
@Autowired
private AppletConfigMapper appletConfigMapper;
@@ -32,13 +34,17 @@ public class AppletConfigServiceImpl implements IAppletConfigService
@Override
public AppletConfig selectAppletConfigById(Long id)
{
- return appletConfigMapper.selectAppletConfigById(id);
+ return appletConfigMapper.selectById(id);
}
@Override
public AppletConfig selectAppletConfigByClassAndNum(String paramClass,Integer paramValueNum){
- return appletConfigMapper.selectAppletConfigByClassAndNum(paramClass,paramValueNum);
+// return appletConfigMapper.selectAppletConfigByClassAndNum(paramClass,paramValueNum);
+
+ return lambdaQuery().eq(AppletConfig::getParamClass, paramClass)
+ .eq(AppletConfig::getParamValueNum, paramValueNum)
+ .one();
}
/**
@@ -50,7 +56,15 @@ public class AppletConfigServiceImpl implements IAppletConfigService
@Override
public List selectAppletConfigList(AppletConfig appletConfig)
{
- return appletConfigMapper.selectAppletConfigList(appletConfig);
+ if (appletConfig == null){
+ appletConfig = new AppletConfig();
+ }
+ return appletConfigMapper.selectList(Wrappers.lambdaQuery()
+ .eq(StringUtils.isNotEmpty(appletConfig.getParamCode()), AppletConfig::getParamCode, appletConfig.getParamCode())
+ .like(StringUtils.isNotEmpty(appletConfig.getParamValueText()), AppletConfig::getParamValueText, appletConfig.getParamValueText())
+ .like(StringUtils.isNotEmpty(appletConfig.getParamValue()), AppletConfig::getParamValue, appletConfig.getParamValue())
+ .eq(StringUtils.isNotEmpty(appletConfig.getParamClass()), AppletConfig::getParamClass, appletConfig.getParamClass())
+ );
}
/**
@@ -63,7 +77,7 @@ public class AppletConfigServiceImpl implements IAppletConfigService
public int insertAppletConfig(AppletConfig appletConfig)
{
appletConfig.setCreateTime(DateUtils.getNowDate());
- return appletConfigMapper.insertAppletConfig(appletConfig);
+ return appletConfigMapper.insert(appletConfig);
}
/**
@@ -76,7 +90,7 @@ public class AppletConfigServiceImpl implements IAppletConfigService
public int updateAppletConfig(AppletConfig appletConfig)
{
appletConfig.setUpdateTime(DateUtils.getNowDate());
- return appletConfigMapper.updateAppletConfig(appletConfig);
+ return appletConfigMapper.updateById(appletConfig);
}
/**
diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5PetService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5PetService.java
index 77ecc74..1d000a1 100644
--- a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5PetService.java
+++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5PetService.java
@@ -32,6 +32,9 @@ public class H5PetService {
public PetVO selectPetById(Integer id){
Pet pet = petMapper.selectById(id);
PetVO petVO = convert.do2vo(pet);
+ if(petVO == null){
+ return null;
+ }
if(!StringUtils.isEmpty(pet.getPersonality())){
List list = Arrays.asList(pet.getPersonality().split(","));
petVO.setPersonality(list);
diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberExtendVo.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberExtendVo.java
index 21034e7..36b1f42 100644
--- a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberExtendVo.java
+++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberExtendVo.java
@@ -1,5 +1,6 @@
package com.cyl.manager.ums.pojo.vo;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseAudit;
import io.swagger.annotations.ApiModelProperty;
@@ -8,6 +9,8 @@ import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.Date;
@Data
public class MemberExtendVo extends BaseAudit {
@@ -70,6 +73,7 @@ public class MemberExtendVo extends BaseAudit {
@ApiModelProperty("推广员关联时间")
@Excel(name = "推广员关联时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime spreadTime;
@ApiModelProperty("等级")
@@ -92,9 +96,14 @@ public class MemberExtendVo extends BaseAudit {
@ApiModelProperty("售后数")
private Integer aftersaleCount;
-
-
//lzx-增加一个邀请码字段
@Excel(name = "用户填写的邀请码")
private String inviteCode;
+
+
+ @ApiModelProperty("最近下单")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime orderTime;
+ @ApiModelProperty("累计报酬")
+ private BigDecimal userAmount;
}
diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberV2VO.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberV2VO.java
index 3f74676..05e404a 100644
--- a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberV2VO.java
+++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberV2VO.java
@@ -115,4 +115,7 @@ public class MemberV2VO extends BaseAudit {
/** 订单数量 */
private Integer orderNumber;
+ @Excel(name = "用户填写的邀请码")
+ private String inviteCode;
+
}