Browse Source

修复bug

master
前端-胡立永 2 weeks ago
parent
commit
e1529b9213
18 changed files with 487 additions and 56 deletions
  1. +1
    -1
      CatmDogd-Mall-Front-test/.env.development
  2. +7
    -3
      CatmDogd-Mall-Front-test/src/views/model/AppletConfig/hhindex.vue
  3. +1
    -1
      ruoyi-admin/src/main/resources/application.yml
  4. +55
    -5
      ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkOutController.java
  5. +31
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiMallUserTeacherController.java
  6. +0
    -2
      ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java
  7. +6
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppUsers.java
  8. +10
    -2
      ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAmountLog.java
  9. +4
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletConfig.java
  10. +4
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppUsersService.java
  11. +5
    -1
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletConfigService.java
  12. +252
    -31
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletHhrWorkOutServiceImpl.java
  13. +2
    -2
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletLoginServiceImpl.java
  14. +72
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppUsersServiceImpl.java
  15. +20
    -6
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletConfigServiceImpl.java
  16. +3
    -0
      ruoyi-mall/src/main/java/com/cyl/h5/service/H5PetService.java
  17. +11
    -2
      ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberExtendVo.java
  18. +3
    -0
      ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberV2VO.java

+ 1
- 1
CatmDogd-Mall-Front-test/.env.development View File

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


+ 7
- 3
CatmDogd-Mall-Front-test/src/views/model/AppletConfig/hhindex.vue View File

@ -99,6 +99,7 @@
<el-table-column label="编码" align="center" prop="paramCode" />
<el-table-column label="数值" align="center" prop="paramValueNum" />
<el-table-column label="比例(计算使用)" align="center" prop="paramValueNo" />
<el-table-column label="需邀请人数" align="center" prop="paramCondition" />
<el-table-column label="百分比" align="center" prop="paramValueText" />
<!-- <el-table-column label="参数值-图片" align="center" prop="paramValueImage" v-if="columns[3].visible"/>-->
@ -158,10 +159,13 @@
<el-form-item label="比例" prop="paramValueNo">
<el-input v-model="form.paramValueNo" placeholder="请输入参数值-百分比" />
</el-form-item>
<el-form-item label="需邀请人数" prop="paramCondition">
<el-input v-model="form.paramCondition" placeholder="需邀请人数" />
</el-form-item>
<!-- <el-form-item label="图片">-->
<!-- <oss-image-upload v-model="form.paramValueImage" :limit="1"></oss-image-upload>-->
<!-- </el-form-item>-->
<el-form-item label="图">
<oss-image-upload v-model="form.paramValueImage" :limit="1"></oss-image-upload>
</el-form-item>
<!-- <el-form-item label="富文本" prop="paramValueArea">-->
<!-- <Editor v-model="form.paramValueArea" placeholder="请输入内容" type="url"></Editor>-->
<!-- </el-form-item>-->


+ 1
- 1
ruoyi-admin/src/main/resources/application.yml View File

@ -20,7 +20,7 @@ ruoyi:
# 开发环境配置.0
server:
# 服务器的HTTP端口,默认为8080
port: 8002
port: 8003
servlet:
# 应用的访问路径
context-path: /


+ 55
- 5
ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiAppletHhrWorkOutController.java View File

@ -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<Member> 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<Member> list = service.selectList(query, page);
List<Member> list = memberMapper.selectList(Wrappers.<Member>lambdaQuery()
.eq(Member::getInviteCode, appUsers.getInvitationCode()));
List<MemberExtendVo> 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.<Order>lambdaQuery()
.select(Order::getCreateTime)
.orderByDesc(Order::getCreateTime)
.last("limit 1"));
memberExtendVo.setOrderTime(order.getCreateTime());
//查询累计报酬
List<AppletAmountLog> 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);
});


+ 31
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/ApiMallUserTeacherController.java View File

@ -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();
}


+ 0
- 2
ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/IApiMallOrderServiceImpl.java View File

@ -212,13 +212,11 @@ public class IApiMallOrderServiceImpl implements IApiMallOrderService {
item.setService(orderServiceInfo);
OmsOrderService omsOrderService = new OmsOrderService();
omsOrderService.setOrderId(item.getOrderId());
List<OmsOrderService> orderServiceList = omsOrderServiceMapper.selectListBySql(omsOrderService);
// 使用一个 Set 来跟踪已经添加的 PetVO id
Set<Integer> addedPetIds = new HashSet<>();
List<PetVO> petVOList = new ArrayList<>();


+ 6
- 0
ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppUsers.java View File

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


+ 10
- 2
ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletAmountLog.java View File

@ -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;
}

+ 4
- 0
ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppletConfig.java View File

@ -156,6 +156,10 @@ public class AppletConfig
@Excel(name = "参数值-数值")
private Integer paramValueNum;
/** 参数值-达成人数 */
@Excel(name = "参数值-达成人数")
private Integer paramCondition;
/** 参数值-百分比 */
@Excel(name = "参数值-百分比")
private BigDecimal paramValueNo;


+ 4
- 0
ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppUsersService.java View File

@ -67,4 +67,8 @@ public interface IAppUsersService extends IService<AppUsers>
public List<AppUsers> filterQualifiedUsers(filterQualifiedUsersVo filterVo);
String getUserCode(Long appUserId);
AppUsers bindCode(String code);
}

+ 5
- 1
ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppletConfigService.java View File

@ -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<AppletConfig>
{
/**
* 查询配置信息
@ -18,6 +20,8 @@ public interface IAppletConfigService
* @return 配置信息
*/
public AppletConfig selectAppletConfigById(Long id);
public AppletConfig selectAppletConfigByClassAndNum(String paramClass,Integer paramValueNum);
/**
* 查询配置信息列表


+ 252
- 31
ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletHhrWorkOutServiceImpl.java View File

@ -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<String,Object> 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<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);
}


+ 2
- 2
ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AApiAppletLoginServiceImpl.java View File

@ -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);


+ 72
- 0
ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppUsersServiceImpl.java View File

@ -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<AppUsersMapper, AppUsers> implements IAppUsersService
{
@Autowired
@ -237,4 +241,72 @@ public class AppUsersServiceImpl extends ServiceImpl<AppUsersMapper, AppUsers> 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.<AppUsers>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;
}
}

+ 20
- 6
ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppletConfigServiceImpl.java View File

@ -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<AppletConfigMapper, AppletConfig> 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<AppletConfig> selectAppletConfigList(AppletConfig appletConfig)
{
return appletConfigMapper.selectAppletConfigList(appletConfig);
if (appletConfig == null){
appletConfig = new AppletConfig();
}
return appletConfigMapper.selectList(Wrappers.<AppletConfig>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);
}
/**


+ 3
- 0
ruoyi-mall/src/main/java/com/cyl/h5/service/H5PetService.java View File

@ -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<String> list = Arrays.asList(pet.getPersonality().split(","));
petVO.setPersonality(list);


+ 11
- 2
ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberExtendVo.java View File

@ -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;
}

+ 3
- 0
ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberV2VO.java View File

@ -115,4 +115,7 @@ public class MemberV2VO extends BaseAudit {
/** 订单数量 */
private Integer orderNumber;
@Excel(name = "用户填写的邀请码")
private String inviteCode;
}

Loading…
Cancel
Save