From b1c3cb31d1e8c250dd6817bd71ddfb3c785cb235 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 18 六月 2025 13:54:01 +0800
Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/HongRuiTang into 2.0
---
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 637 +++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 524 insertions(+), 113 deletions(-)
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
index cb6e64a..1161275 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -1,12 +1,14 @@
package com.ruoyi.member.service.impl.member;
-
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
@@ -26,6 +28,7 @@
import com.ruoyi.member.service.member.MemberService;
import com.ruoyi.member.service.member.MemberTotalService;
import com.ruoyi.member.util.HttpUtils;
+import com.ruoyi.member.util.MsgUtils;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.constant.SecurityConstant;
import com.ruoyi.system.api.domain.dto.*;
@@ -110,6 +113,12 @@
@Resource
private RemoteOrderService remoteOrderService;
+
+ @Resource
+ private RemoteUserService remoteUserService;
+
+
+
/**
* @description: TODO
@@ -199,7 +208,26 @@
String errcode = jsonUserPhoneNumber.getString("errcode");
String errmsg = jsonUserPhoneNumber.getString("errmsg");
if (!"0".equals(errcode)) {
- throw new ServiceException(errmsg);
+ //因为生产测试差异,临时更新token
+ redisService.deleteObject(SecurityConstant.WX_TOKEN);
+ String responseAccessToken = getAccessTokenByWX();
+ JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken);
+ accessToken = jsonAccessToken.getString("access_token");
+ errmsg = jsonAccessToken.getString("errmsg");
+ Long expiresIn = jsonAccessToken.getLong("expires_in");
+ if (StringUtils.isBlank(accessToken)) {
+ throw new ServiceException(errmsg);
+ } else {
+ expiresIn = expiresIn - 100;
+ redisService.setCacheObject(SecurityConstant.WX_TOKEN, accessToken, Long.valueOf(expiresIn), TimeUnit.SECONDS);
+ }
+ responseUserPhoneNumber = getMobileByWX(accessToken, appUserRegisterDto.getMobileCode());
+ jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber);
+ errcode = jsonUserPhoneNumber.getString("errcode");
+ errmsg = jsonUserPhoneNumber.getString("errmsg");
+ if (!"0".equals(errcode)) {
+ throw new ServiceException(errmsg);
+ }
}
String phoneInfo = jsonUserPhoneNumber.getString("phone_info");
JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo);
@@ -235,6 +263,7 @@
member.setMemberNo(memberNo);
member.setUserId(sysUser.getUserId());
member.setDelFlag(0);
+ member.setFrozenFlag(0);
member.setNickName("鸿瑞堂用户");
member.setRealName("鸿瑞堂用户");
member.setCustomerSource("小程序");
@@ -269,7 +298,6 @@
}
public static String getMobileByWX(String accessToken, String code) throws Exception {
- String method = "POST";
Map<String, String> headers = new HashMap<>(16);
headers.put("Content-Type", "application/json");
headers.put("Accept", "application/json");
@@ -298,6 +326,7 @@
appUserInfoVo.setNickName(member.getNickName());
appUserInfoVo.setRealName(member.getRealName());
appUserInfoVo.setPhonenumber(member.getMobile());
+ //绑定会员显示绑定店铺
if (member.getRelationShopId() != null && member.getBindingFlag() == 1) {
appUserInfoVo.setRelationShopId(member.getRelationShopId());
Shop shop = shopService.getShop(member.getRelationShopId()).getData();
@@ -307,9 +336,11 @@
appUserInfoVo.setBirthday(member.getBirthday());
appUserInfoVo.setGender(member.getGender());
appUserInfoVo.setAvatar(member.getAvatar());
+ //待支付待核销统计
AppOrderTotalVo appOrderTotalVo = orderService.getAppOrderTotal(userId).getData();
appUserInfoVo.setNoPayCount(appOrderTotalVo.getNoPayCount());
appUserInfoVo.setNoUseCount(appOrderTotalVo.getNoUseCount());
+ //积分
MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
appUserInfoVo.setIntegral(memberTotal.getUseableIntegral());
return appUserInfoVo;
@@ -337,7 +368,13 @@
member.setGender(Integer.valueOf(editValue));
break;
case 4:
+ if(editValue.compareTo(DateUtils.getDate())>0){
+ throw new ServiceException(AppErrorConstant.BIRTHDAY_BEYOND);
+ }
member.setBirthday(editValue);
+ break;
+ case 5:
+ member.setRealName(editValue);
break;
default:
break;
@@ -356,19 +393,33 @@
*/
@Override
public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto) {
+ //处理活跃度
List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
if (StringUtils.isNotBlank(merMemberPageDto.getMemberActiveness())) {
if(!activenessList.isEmpty()){
for(Activeness activeness : activenessList){
if(activeness.getActivenessName().equals(merMemberPageDto.getMemberActiveness())){
Date nowDay = DateUtils.getNowDate();
- String actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
- String actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
+ String actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay()));
+ String actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay()));
merMemberPageDto.setActStartDate(actStartDate);
merMemberPageDto.setActEndDate(actEndDate);
break;
}
}
+ }
+ }
+ //处理剩余次数
+ if(merMemberPageDto.getSurpNum()!=null){
+ if(merMemberPageDto.getSurpNum()==1){
+ merMemberPageDto.setSurpStartNum(0);
+ merMemberPageDto.setSurpEndNum(5);
+ }else if(merMemberPageDto.getSurpNum()==2){
+ merMemberPageDto.setSurpStartNum(5);
+ merMemberPageDto.setSurpEndNum(10);
+ }else if(merMemberPageDto.getSurpNum()==3){
+ merMemberPageDto.setSurpStartNum(10);
+ merMemberPageDto.setSurpEndNum(999999999);
}
}
List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto);
@@ -380,13 +431,15 @@
MgtActivenessJudgeVo mgtActivenessJudgeVo;
for (Activeness activeness : activenessList) {
mgtActivenessJudgeVo = new MgtActivenessJudgeVo();
- mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), activeness.getEndDay()));
- mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), activeness.getStartDay() - 1));
+ mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), -activeness.getEndDay()));
+ mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), -activeness.getStartDay()));
mgtActivenessJudgeVo.setActivenessName(activeness.getActivenessName());
+ mgtActivenessJudgeVoList.add(mgtActivenessJudgeVo);
}
//活跃度赋值
Date lastPayTime;
for (MerMemberPageVo mgtMemberPageVo : merMemberPageVoList) {
+ //实际是最后服务时间
lastPayTime = mgtMemberPageVo.getLastPayTime();
StringJoiner sj = new StringJoiner(",");
if (lastPayTime != null) {
@@ -422,7 +475,7 @@
Member member = this.getByUserId(userId);
// 设置MerMemberInfoVo对象的属性值
merMemberInfoVo.setUserId(userId);
- merMemberInfoVo.setNickName(member.getNickName());
+ merMemberInfoVo.setRealName(member.getRealName());
merMemberInfoVo.setPhonenumber(member.getMobile());
merMemberInfoVo.setAvatar(member.getAvatar());
merMemberInfoVo.setBirthday(member.getBirthday());
@@ -432,16 +485,16 @@
MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
// 设置MerMemberInfoVo对象的属性值
merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount());
- merMemberInfoVo.setUserNumber(memberTotal.getUsedServiceCount());
- merMemberInfoVo.setPayMoney(memberTotal.getTotalPayMoney());
// 创建MerBaseDto对象
MerBaseDto merBaseDto = new MerBaseDto();
// 设置MerBaseDto对象的属性值
merBaseDto.setShopId(merBaseGetDto.getShopId());
merBaseDto.setUserId(userId);
// 获取未支付订单金额
- BigDecimal unpaidMoney = remoteOrderService.getMemberUnpaidOrder(merBaseDto).getData();
- merMemberInfoVo.setUnpaidMoney(unpaidMoney);
+ MerMemberSimpleTotalVo memberSimpleTotalVo = remoteOrderService.getMerMemberSimpleTotalVo(merBaseDto).getData();
+ merMemberInfoVo.setUserNumber(memberSimpleTotalVo.getUserNumber());
+ merMemberInfoVo.setPayMoney(memberSimpleTotalVo.getPayMoney());
+ merMemberInfoVo.setUnpaidMoney(memberSimpleTotalVo.getUnpaidMoney());
// 获取最近的会员任务
MemberTaskSimpleVo memberTaskSimpleVo = remoteShopService.getLastMemberTask(userId).getData();
if (memberTaskSimpleVo != null) {
@@ -450,7 +503,7 @@
}
// 设置MerMemberInfoVo对象的属性值
merMemberInfoVo.setNextTaskTime(memberTotal.getNextTaskTime());
- merMemberInfoVo.setLastPayTime(memberTotal.getLastPayTime());
+ merMemberInfoVo.setLastPayTime(memberTotal.getLastConsumeTime());
// 返回MerMemberInfoVo对象
return merMemberInfoVo;
}
@@ -483,6 +536,7 @@
member.setBindingFlag(appMemberBindingDto.getBindingFlag());
member.setRelationShopId(appMemberBindingDto.getShopId());
member.setRelationShopName(appMemberBindingDto.getShopName());
+ member.setBindingType(appMemberBindingDto.getBindingType());
this.saveOrUpdate(member);
}
@@ -497,7 +551,7 @@
MerMemberBasicFileVo merMemberBasicFileVo = new MerMemberBasicFileVo();
Member member = this.getByUserId(userId);
BeanUtils.copyProperties(member, merMemberBasicFileVo);
- merMemberBasicFileVo.setNickName(member.getNickName());
+ merMemberBasicFileVo.setRealName(member.getRealName());
merMemberBasicFileVo.setPhonenumber(member.getMobile());
merMemberBasicFileVo.setCreateTime(member.getCreateTime());
/*List<MemberNurse> memberNurseList = memberNurseService.listByUserId(userId);
@@ -572,22 +626,30 @@
* @param merMemberAddDto
*/
@Override
- public void addMerMember(MerMemberAddDto merMemberAddDto) {
+ public Long addMerMember(MerMemberAddDto merMemberAddDto) {
String phoneNumber = merMemberAddDto.getPhonenumber();
Member oldMember = this.getByMobile(phoneNumber);
// Check if the member already exists
- if (oldMember != null) {
+ if (oldMember != null && oldMember.getBindingFlag() == 1) {
throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE);
+ }
+ if (oldMember != null && oldMember.getBindingFlag() == 0) {
+ oldMember.setRelationShopId(merMemberAddDto.getShopId());
+ oldMember.setBindingFlag(1);
+ oldMember.setBindingType(8);
+ this.updateById(oldMember);
+ return oldMember.getUserId();
}
// Get the sysUser by mobile number
SysUser sysUser = sysUserService.getSysUserByMobile(phoneNumber).getData();
// If sysUser does not exist, create a new one
- if (sysUser == null) {
+ if (sysUser == null || !sysUser.getUserType().equals("03")) {
String memberId = IdUtils.simpleUUID();
sysUser = new SysUser();
sysUser.setUserName(memberId);
sysUser.setUserType("03");
- sysUser.setNickName(merMemberAddDto.getNickName());
+ sysUser.setNickName(merMemberAddDto.getRealName());
+ sysUser.setPhonenumber(merMemberAddDto.getPhonenumber());
sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
String password = "hongruitang";
sysUser.setPassword(SecurityUtils.encryptPassword(password));
@@ -600,9 +662,11 @@
member.setMemberId(memberId);
member.setUserId(sysUser.getUserId());
member.setDelFlag(0);
- member.setNickName(merMemberAddDto.getNickName());
- member.setRealName(merMemberAddDto.getNickName());
+ member.setFrozenFlag(0);
+ member.setNickName(merMemberAddDto.getRealName());
+ member.setRealName(merMemberAddDto.getRealName());
member.setGender(merMemberAddDto.getGender());
+ member.setLevel(merMemberAddDto.getLevel());
member.setMobile(phoneNumber);
member.setReferrer(merMemberAddDto.getReferrer());
member.setBirthday(merMemberAddDto.getBirthday());
@@ -612,11 +676,18 @@
member.setMiniOpenid(null);
member.setBindingFlag(1);
member.setBindingTime(new Date());
+ member.setBindingType(6);
// Get shop information and set it to the member
Shop shop = remoteShopService.getShop(merMemberAddDto.getShopId()).getData();
member.setRelationShopName(shop.getShopName());
- member.setCustomerSource("商户添加");
+ member.setCustomerSource(merMemberAddDto.getCustomerSource());
member.setCreateTime(new Date());
+ //调理问题
+ List<String> memberNurse = merMemberAddDto.getMemberNurse();
+ if(memberNurse!=null&&!memberNurse.isEmpty()){
+ String memberNurseString = String.join(",", memberNurse);
+ member.setMemberNurse(memberNurseString);
+ }
// Save the member and initialize member total
this.saveOrUpdate(member);
initMemberTotal(memberId);
@@ -634,7 +705,10 @@
).collect(Collectors.toList());
memberArchiveService.saveBatch(memberArchiveList);
}
+ }else{
+ throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE);
}
+ return sysUser.getUserId();
}
/**
@@ -644,49 +718,54 @@
*/
@Override
public void editMerMember(MerMemberEditDto merMemberEditDto) {
- // 获取用户信息
- Member member = this.getByUserId(merMemberEditDto.getEditUserId());
- // 检查手机号是否已经存在
- if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) {
- Member memberOld = getByMobile(merMemberEditDto.getPhonenumber());
- if (memberOld != null) {
- throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE);
+ // 获取用户信息
+ Member member = this.getByUserId(merMemberEditDto.getEditUserId());
+ // 检查手机号是否已经存在
+ if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) {
+ Member memberOld = getByMobile(merMemberEditDto.getPhonenumber());
+ if (memberOld != null) {
+ throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE);
+ }
+ }
+ // 更新用户信息
+ member.setRealName(merMemberEditDto.getRealName());
+ member.setMobile(merMemberEditDto.getPhonenumber());
+ member.setGender(merMemberEditDto.getGender());
+ member.setReferrer(merMemberEditDto.getReferrer());
+ member.setCustomerSource(merMemberEditDto.getCustomerSource());
+ member.setLevel(merMemberEditDto.getLevel());
+ member.setBirthday(merMemberEditDto.getBirthday());
+ member.setUpdateUserId(merMemberEditDto.getUserId());
+ member.setUpdateTime(new Date());
+ List<String> memberNurse = merMemberEditDto.getMemberNurse();
+ if(memberNurse!=null&&!memberNurse.isEmpty()){
+ String memberNurseString = String.join(",", memberNurse);
+ member.setMemberNurse(memberNurseString);
+ }
+ this.saveOrUpdate(member);
+ // 更新用户手机号
+ SysUser sysUser = new SysUser();
+ sysUser.setUserId(merMemberEditDto.getEditUserId());
+ sysUser.setPhonenumber(merMemberEditDto.getPhonenumber());
+ sysUserService.updateUserMobile(sysUser);
+ // 删除用户的档案信息
+ memberArchiveService.deleteByUserId(sysUser.getUserId());
+ // 添加用户的档案信息
+ List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList();
+ if (achiveList != null && !achiveList.isEmpty()) {
+ // 构造用户档案列表
+ List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> {
+ MemberArchive memberArchive = new MemberArchive();
+ memberArchive.setDelFlag(0);
+ memberArchive.setUserId(sysUser.getUserId());
+ memberArchive.setFieldId(memberArchiveVo.getFieldId());
+ memberArchive.setFieldValue(memberArchiveVo.getFieldValue());
+ return memberArchive;
+ }).collect(Collectors.toList());
+ // 批量保存用户档案信息
+ memberArchiveService.saveBatch(memberArchiveList);
}
}
- // 更新用户信息
- member.setRealName(merMemberEditDto.getNickName());
- member.setMobile(merMemberEditDto.getPhonenumber());
- member.setGender(merMemberEditDto.getGender());
- member.setReferrer(merMemberEditDto.getReferrer());
- member.setCustomerSource(merMemberEditDto.getCustomerSource());
- member.setLevel(merMemberEditDto.getLevel());
- member.setBirthday(merMemberEditDto.getBirthday());
- member.setUpdateUserId(merMemberEditDto.getUserId());
- member.setUpdateTime(new Date());
- this.saveOrUpdate(member);
- // 更新用户手机号
- SysUser sysUser = new SysUser();
- sysUser.setUserId(merMemberEditDto.getEditUserId());
- sysUser.setPhonenumber(merMemberEditDto.getPhonenumber());
- sysUserService.updateUserMobile(sysUser);
- // 删除用户的档案信息
- memberArchiveService.deleteByUserId(sysUser.getUserId());
- // 添加用户的档案信息
- List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList();
- if (achiveList != null && !achiveList.isEmpty()) {
- // 构造用户档案列表
- List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> {
- MemberArchive memberArchive = new MemberArchive();
- memberArchive.setDelFlag(0);
- memberArchive.setUserId(sysUser.getUserId());
- memberArchive.setFieldId(memberArchiveVo.getFieldId());
- memberArchive.setFieldValue(memberArchiveVo.getFieldValue());
- return memberArchive;
- }).collect(Collectors.toList());
- // 批量保存用户档案信息
- memberArchiveService.saveBatch(memberArchiveList);
- }
-}
/**
* @param mobile
@@ -768,8 +847,8 @@
String memberNo = createMemberNo();
member.setMemberNo(memberNo);
member.setDelFlag(0);
+ member.setFrozenFlag(0);
member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
- member.setBindingFlag(0);
member.setCreateTime(new Date());
member.setCustomerSource("商户订单添加");
this.saveOrUpdate(member);
@@ -805,6 +884,7 @@
memberTotal.setShopSuggestFlag(0);
memberTotal.setSignFlag(0);
memberTotal.setBuyFlag(0);
+ memberTotal.setTotalConsumeCount(0);
memberTotalService.saveOrUpdate(memberTotal);
}
@@ -829,6 +909,7 @@
*/
@Override
public List<MgtMemberPageVo> pageMgtMember(Page page, MgtMemberPageDto merMemberPageDto) {
+
List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
Date nowDay = new Date();
if (merMemberPageDto.getActivenessId() != null) {
@@ -837,8 +918,8 @@
.filter(activeness -> activeness.getActivenessId().equals(merMemberPageDto.getActivenessId()))
.findFirst()
.ifPresent(activeness -> {
- merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay())));
- merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay())));
+ merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay())));
+ merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay())));
});
}
//处理标签为正则表达
@@ -854,12 +935,50 @@
}
if(merMemberPageDto.getEndAge()!=null){
LocalDate currentDate = LocalDate.now();
- LocalDate startBirthday = currentDate.minusYears(merMemberPageDto.getEndAge());
+ LocalDate startBirthday = currentDate.minusYears(merMemberPageDto.getEndAge()+1);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
merMemberPageDto.setStartBirthday(startBirthday.format(formatter));
}
+ // 获取当前登陆人的可视权限
+ SysUser sysUser = SecurityUtils.getSysUser();
+ // 店铺ids
+ List<Long> scope = new ArrayList<>();
+ if (sysUser!=null){
+ String dataScope = sysUser.getDataScope();
+ if (!sysUser.getUserName().equals("admin")){
+ if (org.springframework.util.StringUtils.hasLength(dataScope)){
+ switch (dataScope){
+ case "3":
+ // 本部门数据 查询当前登陆人属于哪个部门 查询这个部门下所有员工关联的所有店铺
+ // 根据用户id 查询同部门下所有员工id
+ List<Long> userIds = sysUserService.getUserIdsByDept(sysUser.getUserId()).getData();
+ // 获取店铺ids
+ List<Long> data = shopService.getShopIdsByUserIds(userIds).getData();
+ if (data.size()==0){
+ scope.add(0L);
+ }else{
+ scope.addAll(data);
+ }
+ break;
+ case "5":
+ // 仅个人数据 查询当前登陆人关联店铺下的用户
+ List<Long> longs = new ArrayList<>();
+ longs.add(sysUser.getUserId());
+ // 获取店铺ids
+ List<Long> data1 = shopService.getShopIdsByUserIds(longs).getData();
+ if (data1.size()==0){
+ scope.add(0L);
+ }else{
+ scope.addAll(data1);
+ }
+
+ break;
+ }
+ }
+ }
+ }
//查询获取结果列表
- List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto);
+ List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto,scope);
//处理活跃度返回
if (memberPageVoList != null && !memberPageVoList.isEmpty()) {
if (activenessList != null && !activenessList.isEmpty()) {
@@ -868,13 +987,22 @@
MgtActivenessJudgeVo mgtActivenessJudgeVo;
for (Activeness activeness : activenessList) {
mgtActivenessJudgeVo = new MgtActivenessJudgeVo();
- mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), activeness.getEndDay()));
- mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), activeness.getStartDay() - 1));
+ mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), -activeness.getEndDay()));
+ mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), -activeness.getStartDay()));
mgtActivenessJudgeVo.setActivenessName(activeness.getActivenessName());
}
//活跃度赋值
Date lastPayTime;
for (MgtMemberPageVo mgtMemberPageVo : memberPageVoList) {
+ if(null != mgtMemberPageVo.getRelationShopId() && 1 == mgtMemberPageVo.getBindingFlag()){
+ R<Shop> shop_r = remoteShopService.getShop(mgtMemberPageVo.getRelationShopId());
+ if(shop_r.getCode() == 200){
+ Shop data = shop_r.getData();
+ if(null != data){
+ mgtMemberPageVo.setRelationShopName(data.getShopName());
+ }
+ }
+ }
lastPayTime = mgtMemberPageVo.getLastPayTime();
StringJoiner sj = new StringJoiner(",");
if (lastPayTime != null) {
@@ -910,10 +1038,12 @@
member.setRelationShopId(shop.getShopId());
member.setRelationShopName(shop.getShopName());
member.setBindingFlag(1);
+ member.setBindingType(7);
member.setBindingTime(new Date());
member.setUpdateTime(new Date());
member.setUpdateUserId(mgtMemberRelEditDto.getUserId());
this.saveOrUpdate(member);
+ memberMapper.updateById(member);
}
}
}
@@ -930,11 +1060,14 @@
String memberUserIds = mgtMemberRelDelDto.getMemberUserIds();
String[] memberUserIdArr = memberUserIds.split(",");
for (String str : memberUserIdArr) {
- Member member = this.getByUserId(Long.valueOf(str));
- member.setBindingFlag(0);
- member.setUpdateTime(new Date());
- member.setUpdateUserId(mgtMemberRelDelDto.getUserId());
- this.saveOrUpdate(member);
+ LambdaUpdateWrapper<Member> updateWrapper = Wrappers.lambdaUpdate();
+ updateWrapper.eq(Member::getUserId, str)
+ .set(Member::getBindingFlag, 0)
+ .set(Member::getRelationShopId,null)
+ .set(Member::getRelationShopName,null)
+ .set(Member::getUpdateUserId,mgtMemberRelDelDto.getUserId())
+ .set(Member::getUpdateTime,new Date());
+ this.update(updateWrapper);
}
}
}
@@ -972,6 +1105,7 @@
*/
@Override
public void memberIntegralChange(MemberIntegralChangeDto memberIntegralChangeDto) {
+ log.info("会员积分变动---"+memberIntegralChangeDto.toString());
MemberTotal memberTotal = memberTotalService.getById(memberIntegralChangeDto.getMemberId());
Integer recordType = memberIntegralChangeDto.getRecordType();
Integer changeType = memberIntegralChangeDto.getChangeType();
@@ -1049,13 +1183,29 @@
mgtMemberGetVo.setNickName(member.getNickName());
mgtMemberGetVo.setAvatar(member.getAvatar());
mgtMemberGetVo.setMobile(member.getMobile());
- mgtMemberGetVo.setGender(member.getGender() == 0 ? "男" : member.getGender() == 1 ? "女" : null);
+ if(member.getGender()!=null){
+ if (member.getGender() == 0) {
+ mgtMemberGetVo.setGender("男");
+ } else if (member.getGender() == 1) {
+ mgtMemberGetVo.setGender("女");
+ }
+ }else {
+ mgtMemberGetVo.setGender("未知");
+ }
mgtMemberGetVo.setBirthday(member.getBirthday());
mgtMemberGetVo.setBelongDistrict(member.getBelongDistrict());
mgtMemberGetVo.setCreateTime(member.getCreateTime());
mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime());
mgtMemberGetVo.setGoodsType(member.getGoodsType());
- mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
+ if(member.getBindingFlag()==1){
+ R<Shop> shop = remoteShopService.getShop(member.getRelationShopId());
+ if(shop.getCode() == 200){
+ Shop data = shop.getData();
+ if(null != data){
+ mgtMemberGetVo.setRelationShopName(data.getShopName());
+ }
+ }
+ }
mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral());
mgtMemberGetVo.setMemberFrom(member.getCustomerSource());
mgtMemberGetVo.setTotalActivityCount(memberTotal.getTotalActivityCount());
@@ -1090,6 +1240,13 @@
//1.手动领取2.全部用户3.会员用户4非会员用户5自定义
return memberMapper.listIdBySendType(sendType,shopId);
}
+
+
+ public List<Long> listIdBySendType2(Long shopId) {
+ //1.手动领取2.全部用户3.会员用户4非会员用户5自定义
+ return memberMapper.listIdBySendType2(shopId);
+ }
+
/**
* @param userIds
@@ -1131,10 +1288,10 @@
* @date 2023/6/18 16:45
*/
@Override
- public MgtBulletinBoardVo boardMemberTotal() {
+ public MgtBulletinBoardVo boardMemberTotal(List<Long> shopIds) {
MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo();
- mgtBulletinBoardVo.setMemberTotal(memberMapper.memberTotal());
- mgtBulletinBoardVo.setMemberToday(memberMapper.memberToday());
+ mgtBulletinBoardVo.setMemberTotal(memberMapper.memberTotal(shopIds));
+ mgtBulletinBoardVo.setMemberToday(memberMapper.memberToday(shopIds));
return mgtBulletinBoardVo;
}
@@ -1148,10 +1305,36 @@
@Override
public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto) {
Date nowDay = DateUtils.getNowDate();
+ MgtTotalMemberTotalVo mgtTotalMemberTotalVo = new MgtTotalMemberTotalVo();
+ mgtTotalMemberTotalVo.setMemberTotal(0);
+ mgtTotalMemberTotalVo.setOnlineTotal(0);
+ mgtTotalMemberTotalVo.setOfflineTotal(0);
+ mgtTotalMemberTotalVo.setIntroduceTotal(0);
+ mgtTotalMemberTotalVo.setCycleTotal(0);
+ mgtTotalMemberTotalVo.setExperienceTotal(0);
+ mgtTotalMemberTotalVo.setServiceTotal(0);
+ mgtTotalMemberTotalVo.setManTotal(0);
+ mgtTotalMemberTotalVo.setManPercent(new BigDecimal("0"));
+ mgtTotalMemberTotalVo.setWomenTotal(0);
+ mgtTotalMemberTotalVo.setWomenPercent(new BigDecimal("0"));
+ mgtTotalMemberTotalVo.setAgeKey(new String[0]);
+ mgtTotalMemberTotalVo.setAgeValue(new Integer[0]);
+ mgtTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList());
+ mgtTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList());
+ mgtTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList());
+ mgtTotalMemberTotalVo.setActivenessList(Lists.newArrayList());
+ mgtTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList());
+ mgtTotalMemberTotalVo.setMemberPayList(Lists.newArrayList());
// 获取店铺ID
Long shopId = mgtBaseShopDto.getShopId();
// 获取总会员数和不同年龄段的会员数
- MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto);
+ MgtTotalMemberTotalVo totalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto);
+ mgtTotalMemberTotalVo.setMemberTotal(totalMemberTotalVo.getMemberTotal());
+ mgtTotalMemberTotalVo.setOnlineTotal(totalMemberTotalVo.getOnlineTotal());
+ mgtTotalMemberTotalVo.setOfflineTotal(totalMemberTotalVo.getOfflineTotal());
+ mgtTotalMemberTotalVo.setCycleTotal(totalMemberTotalVo.getCycleTotal());
+ mgtTotalMemberTotalVo.setExperienceTotal(totalMemberTotalVo.getExperienceTotal());
+ mgtTotalMemberTotalVo.setServiceTotal(totalMemberTotalVo.getServiceTotal());
MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto);
Integer manTotal = mgtAgeTotalVo.getManTotal();
Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
@@ -1163,6 +1346,9 @@
BigDecimal bigTen = new BigDecimal("100.00");
BigDecimal menPercent = new BigDecimal("100.00");
BigDecimal womenPercent = new BigDecimal("100.00");
+ if(personTotal==0){
+ personTotalBig = bigTen;
+ }
if(manTotal==0&&womenTotal==0){
menPercent = new BigDecimal("50.00");
womenPercent = new BigDecimal("50.00");
@@ -1173,7 +1359,7 @@
menPercent = new BigDecimal("100.00");
womenPercent = new BigDecimal("0.00");
}else{
- menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP);
+ menPercent = manTotalBig.divide(personTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
womenPercent = bigTen.subtract(menPercent);
}
mgtTotalMemberTotalVo.setManPercent(menPercent);
@@ -1182,6 +1368,18 @@
String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
// 不同年龄段的会员数数组
Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
+ BigDecimal[] agePercentValue = new BigDecimal[5];
+ Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge();
+ BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString());
+ BigDecimal hundredBig = new BigDecimal("100");
+ if(totalPerson==0){
+ totalPersonBig = hundredBig;
+ }
+ agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
// 设置年龄段数组和不同年龄段的会员数数组
mgtTotalMemberTotalVo.setAgeKey(ageKey);
mgtTotalMemberTotalVo.setAgeValue(ageValue);
@@ -1215,8 +1413,8 @@
// 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
for (int i = 0; i < activenessList.size(); i++) {
activeness = activenessList.get(i);
- actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
- actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
+ actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay()));
+ actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay()));
count = memberMapper.getTotalMemberTotalActiveness(shopId, actStartDate, actEndDate);
MgtMapIntTotalVo = new MgtMapIntTotalVo();
MgtMapIntTotalVo.setMapKey(activeness.getActivenessName());
@@ -1228,7 +1426,7 @@
//获取会员消费排名
List<MgtMapIntTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto);
if (memberPayList != null && memberPayList.size() > 0) {
- memberPayList = listRemoveNull(memberPayList);
+ //memberPayList = listRemoveNull(memberPayList);
mgtTotalMemberTotalVo.setMemberPayList(memberPayList);
}
//获取来源渠道排名
@@ -1264,39 +1462,109 @@
*/
@Override
public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
+ MgtPlTotalMemberTotalVo plTotalMemberTotalVo = new MgtPlTotalMemberTotalVo();
+ plTotalMemberTotalVo.setMemberTotal(0);
+ plTotalMemberTotalVo.setMemberYesterday(0);
+ plTotalMemberTotalVo.setMemberSeven(0);
+ plTotalMemberTotalVo.setManTotal(0);
+ plTotalMemberTotalVo.setManPercent(new BigDecimal("0"));
+ plTotalMemberTotalVo.setWomenTotal(0);
+ plTotalMemberTotalVo.setWomenPercent(new BigDecimal("0"));
+ plTotalMemberTotalVo.setAgeKey(new String[0]);
+ plTotalMemberTotalVo.setAgeValue(new Integer[0]);
+ plTotalMemberTotalVo.setAgePercent(new BigDecimal[0]);
+ plTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList());
+ plTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList());
+ plTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList());
+ plTotalMemberTotalVo.setActivenessList(Lists.newArrayList());
+ plTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList());
+ plTotalMemberTotalVo.setMemberPayList(Lists.newArrayList());
+ plTotalMemberTotalVo.setMemberGoodsRankList(Lists.newArrayList());
+ plTotalMemberTotalVo.setShopMemberRankList(Lists.newArrayList());
Date nowDay = DateUtils.getNowDate();
//如果区域代码不为null获取对应的商户id
+ List<Long> list = new ArrayList<>();
if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto();
mgtShopIdByCodeDto.setShopProvinceCode(mgtBasePlatformDto.getShopProvinceCode());
mgtShopIdByCodeDto.setShopCityCode(mgtBasePlatformDto.getShopCityCode());
mgtShopIdByCodeDto.setShopAreaCode(mgtBasePlatformDto.getShopAreaCode());
MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData();
+
if (StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())) {
- List<Long> list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(","))
+ list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(","))
.map(Long::valueOf)
.collect(Collectors.toList());
- mgtBasePlatformDto.setShopIdList(list);
+ }else{
+ return plTotalMemberTotalVo;
}
}
+ //数据权限
+ List<Long> userId = remoteUserService.getScopeOfAuthorityUserId();
+ BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
+ boardMemberTotalDto.setUserIds(userId);
+ List<Shop> shops = remoteShopService.getShopBySysUserIds(boardMemberTotalDto);
+ List<Long> collect = shops.stream().map(Shop::getShopId).collect(Collectors.toList());
+ list.addAll(collect);
+ mgtBasePlatformDto.setShopIdList(list);
+
+
//获取基础统计
- MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto);
+ MgtPlTotalMemberTotalVo plTotalMemberTotalByDayVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto);
+ plTotalMemberTotalVo.setMemberTotal(plTotalMemberTotalByDayVo.getMemberTotal());
+ plTotalMemberTotalVo.setMemberYesterday(plTotalMemberTotalByDayVo.getMemberYesterday());
+ plTotalMemberTotalVo.setMemberSeven(plTotalMemberTotalByDayVo.getMemberSeven());
MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto);
if (mgtAgeTotalVo != null) {
- plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal());
- plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal());
- } else {
- plTotalMemberTotalVo.setManTotal(0);
- plTotalMemberTotalVo.setWomenTotal(0);
+ Integer manTotal = mgtAgeTotalVo.getManTotal();
+ Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
+ Integer personTotal = manTotal + womenTotal;
+ BigDecimal manTotalBig = new BigDecimal(manTotal);
+ BigDecimal personTotalBig = new BigDecimal(personTotal);
+ BigDecimal bigTen = new BigDecimal("100.00");
+ BigDecimal menPercent = new BigDecimal("100.00");
+ BigDecimal womenPercent = new BigDecimal("100.00");
+ if(personTotal==0){
+ personTotalBig = bigTen;
+ }
+ if(manTotal==0&&womenTotal==0){
+ menPercent = new BigDecimal("50.00");
+ womenPercent = new BigDecimal("50.00");
+ }else if(manTotal==0&&womenTotal>0){
+ menPercent = new BigDecimal("0.00");
+ womenPercent = new BigDecimal("100.00");
+ }else if(manTotal>0&&womenTotal==0){
+ menPercent = new BigDecimal("100.00");
+ womenPercent = new BigDecimal("0.00");
+ }else{
+ menPercent = manTotalBig.divide(personTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
+ womenPercent = bigTen.subtract(menPercent);
+ }
+ plTotalMemberTotalVo.setManTotal(manTotal);
+ plTotalMemberTotalVo.setWomenTotal(womenTotal);
+ plTotalMemberTotalVo.setManPercent(menPercent);
+ plTotalMemberTotalVo.setWomenPercent(womenPercent);
}
-
// 年龄段数组
String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
// 不同年龄段的会员数数组
Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
+ BigDecimal[] agePercentValue = new BigDecimal[5];
+ Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge();
+ BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString());
+ BigDecimal hundredBig = new BigDecimal("100");
+ if(totalPerson==0){
+ totalPersonBig = hundredBig;
+ }
+ agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
// 设置年龄段数组和不同年龄段的会员数数组
plTotalMemberTotalVo.setAgeKey(ageKey);
plTotalMemberTotalVo.setAgeValue(ageValue);
+ plTotalMemberTotalVo.setAgePercent(agePercentValue);
// 获取不同调理类型的会员数
List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto);
if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
@@ -1328,8 +1596,8 @@
// 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
for (int i = 0; i < activenessList.size(); i++) {
activeness = activenessList.get(i);
- actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
- actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
+ actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay()));
+ actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay()));
count = memberMapper.getPlTotalMemberTotalActiveness(shopIdList, actStartDate, actEndDate);
if (StringUtils.isNotBlank(activeness.getActivenessName())) {
MgtMapIntTotalVo = new MgtMapIntTotalVo();
@@ -1413,6 +1681,18 @@
String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
// 不同年龄段的会员数数组
Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
+ BigDecimal[] agePercentValue = new BigDecimal[5];
+ Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge();
+ BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString());
+ BigDecimal hundredBig = new BigDecimal("100");
+ if(totalPerson==0){
+ totalPersonBig = hundredBig;
+ }
+ agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
// 设置年龄段数组和不同年龄段的会员数数组
mgtShopTotalMemberVo.setAgeKey(ageKey);
mgtShopTotalMemberVo.setAgeValue(ageValue);
@@ -1428,6 +1708,7 @@
*/
@Override
public void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto) {
+ log.info("会员统计变动---"+memberTotalChangeDto.toString());
Member member = this.getByUserId(memberTotalChangeDto.getUserId());
MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
//积分变动
@@ -1438,6 +1719,17 @@
} else {
memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getChangeIntegral());
memberTotal.setTotalIntegral(memberTotal.getTotalIntegral() + memberTotalChangeDto.getChangeIntegral());
+ IntegralRecord integralRecord = new IntegralRecord();
+ integralRecord.setDelFlag(0);
+ integralRecord.setUserId(memberTotalChangeDto.getUserId());
+ integralRecord.setChangeType(5);
+ integralRecord.setCreateTime(new Date());
+ integralRecord.setChangeIntegral(memberTotalChangeDto.getChangeIntegral());
+ integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+memberTotalChangeDto.getChangeIntegral());
+ integralRecord.setChangeReason("订单【"+memberTotalChangeDto.getOrderNo()+"】获得积分");
+ integralRecord.setOrderId(memberTotalChangeDto.getOrderId());
+ integralRecord.setOrderNo(memberTotalChangeDto.getOrderNo());
+ integralRecordService.saveOrUpdate(integralRecord);
}
}
//消费变动
@@ -1457,8 +1749,9 @@
if (memberTotalChangeDto.getTypeService() == 2) {
memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() - memberTotalChangeDto.getServiceCount());
memberTotal.setUsedServiceCount(memberTotal.getUsedServiceCount() + memberTotalChangeDto.getServiceCount());
+ memberTotal.setLastServiceTime(new Date());
} else {
- memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getServiceCount());
+ memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() + memberTotalChangeDto.getServiceCount());
memberTotal.setTotalServiceCount(memberTotal.getTotalServiceCount() + memberTotalChangeDto.getServiceCount());
}
}
@@ -1483,6 +1776,11 @@
}
if (memberTotalChangeDto.getGoodsOrderChange() != null) {
memberTotal.setTotalGoodsOrder(memberTotal.getTotalGoodsOrder() + memberTotalChangeDto.getGoodsOrderChange());
+ }
+ //消费记录
+ if(memberTotalChangeDto.getConsumeTime()!=null){
+ memberTotal.setTotalConsumeCount(memberTotal.getTotalConsumeCount()+1);
+ memberTotal.setLastConsumeTime(memberTotalChangeDto.getConsumeTime());
}
memberTotalService.saveOrUpdate(memberTotal);
}
@@ -1521,11 +1819,6 @@
}
MerMemberFixedTotalVo memberFixedTotalVo = new MerMemberFixedTotalVo();
Date nowDay = DateUtils.getNowDate();
- if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){
- List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
- merTotalDto.setShopIdList(shopIdList);
- merTotalDto.setShopId(null);
- }
MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getMerMemberTotalAge(merTotalDto);
Integer manTotal = mgtAgeTotalVo.getManTotal();
Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
@@ -1537,6 +1830,9 @@
BigDecimal bigTen = new BigDecimal("100.00");
BigDecimal menPercent = new BigDecimal("100.00");
BigDecimal womenPercent = new BigDecimal("100.00");
+ if(personTotal==0){
+ personTotalBig = bigTen;
+ }
if(manTotal==0&&womenTotal==0){
menPercent = new BigDecimal("50.00");
womenPercent = new BigDecimal("50.00");
@@ -1547,7 +1843,7 @@
menPercent = new BigDecimal("100.00");
womenPercent = new BigDecimal("0.00");
}else{
- menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP);
+ menPercent = manTotalBig.divide(personTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
womenPercent = bigTen.subtract(menPercent);
}
memberFixedTotalVo.setManPercent(menPercent);
@@ -1556,13 +1852,29 @@
String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
// 不同年龄段的会员数数组
Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
+ BigDecimal[] agePercentValue = new BigDecimal[5];
+ Integer totalPerson = mgtAgeTotalVo.getTenAge()+mgtAgeTotalVo.getTwentyAge()+ mgtAgeTotalVo.getThirtyAge()+mgtAgeTotalVo.getFortyAge()+mgtAgeTotalVo.getFiftyAge();
+ BigDecimal totalPersonBig = new BigDecimal(totalPerson.toString());
+ BigDecimal hundredBig = new BigDecimal("100");
+ if(totalPerson==0){
+ totalPersonBig = hundredBig;
+ }
+ agePercentValue[0] = new BigDecimal(mgtAgeTotalVo.getTenAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[1] = new BigDecimal(mgtAgeTotalVo.getTwentyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[2] = new BigDecimal(mgtAgeTotalVo.getThirtyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[3] = new BigDecimal(mgtAgeTotalVo.getFortyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
+ agePercentValue[4] = new BigDecimal(mgtAgeTotalVo.getFiftyAge().toString()).divide(totalPersonBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig);
// 设置年龄段数组和不同年龄段的会员数数组
memberFixedTotalVo.setAgeKey(ageKey);
memberFixedTotalVo.setAgeValue(ageValue);
+ memberFixedTotalVo.setAgePercentValue(agePercentValue);
// 获取不同护理类型的会员数
List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getMerMemberTotalNurse(merTotalDto);
if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
nurseTotalVos = listRemoveNull(nurseTotalVos);
+ memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
+ }else{
+ nurseTotalVos = new ArrayList<>();
memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
}
//获取不同等级的会员数
@@ -1570,17 +1882,26 @@
if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
+ }else{
+ memberLevelTotalVos = new ArrayList<>();
+ memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
}
// 获取不同商品类型的会员数
List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getMerMemberTotalGoodsType(merTotalDto);
if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
+ }else{
+ goodsTypeTotalVos = new ArrayList<>();
+ memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
}
//获取会员消费排名
List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto);
if (memberPayList != null && memberPayList.size() > 0) {
memberPayList = listRemoveNull(memberPayList);
+ memberFixedTotalVo.setMemberPayList(memberPayList);
+ }else{
+ memberPayList = new ArrayList<>();
memberFixedTotalVo.setMemberPayList(memberPayList);
}
// 获取不同活跃度的会员数
@@ -1590,22 +1911,25 @@
String actStartDate;
String actEndDate;
Integer count;
- List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>();
+ List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>();
MgtMapIntTotalVo MgtMapIntTotalVo;
// 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
for (int i = 0; i < activenessList.size(); i++) {
activeness = activenessList.get(i);
- actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
- actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
+ actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getEndDay()));
+ actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, -activeness.getStartDay()));
merTotalDto.setStartDate(actStartDate);
merTotalDto.setEndDate(actEndDate);
count = memberMapper.getMerMemberTotalActiveness(merTotalDto);
MgtMapIntTotalVo = new MgtMapIntTotalVo();
MgtMapIntTotalVo.setMapKey(activeness.getActivenessName());
MgtMapIntTotalVo.setMapValue(count);
- MgtMapIntTotalVoList.add(MgtMapIntTotalVo);
+ mgtMapIntTotalVoList.add(MgtMapIntTotalVo);
}
- memberFixedTotalVo.setActivenessList(MgtMapIntTotalVoList);
+ memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList);
+ }else{
+ List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>();
+ memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList);
}
return memberFixedTotalVo;
}
@@ -1651,11 +1975,13 @@
}
MerMemberRecommendTotalVo memberRecommendTotalVo = new MerMemberRecommendTotalVo();
//获取会员推荐排名
- List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto);
+ /*List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto);
if (recommendList != null && recommendList.size() > 0) {
recommendList = listRemoveNull(recommendList);
memberRecommendTotalVo.setRecommendList(recommendList);
- }
+ }*/
+ List<MgtMapIntTotalVo> recommendList = new ArrayList<>();
+ memberRecommendTotalVo.setRecommendList(recommendList);
return memberRecommendTotalVo;
}
@@ -1701,17 +2027,34 @@
orderAgeUserVoList.add(merOrderAgeUserVo);
return orderAgeUserVoList;
}
-
+ /**
+ * @description 通过年龄层获取用户id列表
+ * @author jqs
+ * @date 2023/8/23 18:59
+ * @param ageType
+ * @return List<Long>
+ */
+ @Override
+ public List<Long> listUserIdByAgeType(Integer ageType){
+ MerTotalDto merTotalDto = new MerTotalDto();
+ merTotalDto.setAgeType(ageType);
+ List<Long> userIdList = memberMapper.listOrderAgeUser(merTotalDto);
+ return userIdList;
+ }
/**
* @description
* @author jqs
* @date 2023/7/5 21:18
- * @param mgtBaseGetDto
+ * @param mgtFrozenMemberDto
* @return void
*/
@Override
- public void mgtFrozenMember(MgtBaseGetDto mgtBaseGetDto){
- sysUserService.frozenUser(Long.valueOf(mgtBaseGetDto.getId()));
+ public void mgtFrozenMember(MgtFrozenMemberDto mgtFrozenMemberDto){
+ Long userId = mgtFrozenMemberDto.getId();
+ Member member = this.getByUserId(userId);
+ member.setFrozenFlag(mgtFrozenMemberDto.getFrozenFlag());
+ this.saveOrUpdate(member);
+ sysUserService.frozenUser(mgtFrozenMemberDto);
}
/**
@@ -1779,6 +2122,7 @@
*/
@Override
public Boolean changeIntegral(IntegralChangeDto integralChangeDto){
+ log.info("会员积分变动---"+integralChangeDto.toString());
Member member = this.getByUserId(integralChangeDto.getUserId());
Integer integralType = integralChangeDto.getIntegralType();
Integer changeIntegral = integralChangeDto.getChangeIntegral();
@@ -1884,4 +2228,71 @@
public Integer getAreaNewMember(List<Long> shopIdList){
return memberMapper.getAreaNewMember(shopIdList);
}
+
+ /**
+ * @description 更新会员绑定商户名
+ * @author jqs
+ * @date 2023/7/26 17:08
+ * @param mgtMemberShopNameDto
+ * @return void
+ */
+ @Override
+ public void updateMemberShopName(MgtMemberShopNameDto mgtMemberShopNameDto){
+ LambdaUpdateWrapper<Member> updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.eq(Member::getRelationShopId,mgtMemberShopNameDto.getShopId());
+ updateWrapper.set(Member::getRelationShopName,mgtMemberShopNameDto.getShopName());
+ this.update(updateWrapper);
+ }
+
+ /**
+ * @description 发送生日祝福
+ * @author jqs
+ * @date 2023/8/7 15:40
+ * @param
+ * @return void
+ */
+ @Override
+ public void sendBirthdayBless(){
+ List<Member> mobileList = memberMapper.listTodayBirthday();
+ if(mobileList!=null&&!mobileList.isEmpty()){
+ log.info("生日祝福发送短信---"+mobileList.toString());
+ for (Member member : mobileList) {
+ try {
+ String msg = "{\"name\":\"" + (StringUtils.isEmpty(member.getRealName()) ? member.getNickName() : member.getRealName()) + "\"}";
+ MsgUtils.sendMsg(member.getMobile(), null, msg);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+
+
+ /**
+ * 手动添加用户积分
+ *
+ * @param integral
+ * @param userId
+ * @return
+ */
+ @Override
+ public R addIntegralRecord(Integer integral, Long userId, String orderId) {
+ Member member = this.getByUserId(userId);
+ MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
+ IntegralRecord integralRecord = new IntegralRecord();
+ integralRecord.setDelFlag(0);
+ integralRecord.setUserId(userId);
+ integralRecord.setChangeType(6);
+ integralRecord.setChangeIntegral(integral);
+ integralRecord.setSurpIntegral(memberTotal.getUseableIntegral() + integral);
+ integralRecord.setCreateTime(new Date());
+ integralRecord.setOrderId(orderId);
+ integralRecord.setChangeReason("抽奖活动获得");
+ integralRecordService.save(integralRecord);
+ memberTotal.setTotalIntegral(memberTotal.getTotalIntegral() + integral);
+ memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + integral);
+ memberTotal.setPlSuggestFlag(1);
+ memberTotalService.saveOrUpdate(memberTotal);
+ return R.ok();
+ }
}
--
Gitblit v1.7.1