From 6b34c3ba5cf27dd8693e2bd23426fe96fefd9688 Mon Sep 17 00:00:00 2001
From: jiangqs <343695869@qq.com>
Date: 星期日, 30 七月 2023 23:42:35 +0800
Subject: [PATCH] bug
---
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 648 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 611 insertions(+), 37 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 2f9d437..23caea9 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
@@ -4,6 +4,7 @@
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;
@@ -21,7 +22,10 @@
import com.ruoyi.member.domain.pojo.member.MemberTotal;
import com.ruoyi.member.domain.vo.*;
import com.ruoyi.member.mapper.member.MemberMapper;
-import com.ruoyi.member.service.member.*;
+import com.ruoyi.member.service.member.IntegralRecordService;
+import com.ruoyi.member.service.member.MemberArchiveService;
+import com.ruoyi.member.service.member.MemberService;
+import com.ruoyi.member.service.member.MemberTotalService;
import com.ruoyi.member.util.HttpUtils;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.constant.SecurityConstant;
@@ -46,6 +50,8 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -84,8 +90,6 @@
@Resource
private RemoteOrderService orderService;
- @Resource
- private MemberNurseService memberNurseService;
@Resource
private RemoteConfigService remoteConfigService;
@@ -196,7 +200,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);
@@ -222,6 +245,7 @@
sysUser.setUserName(memberId);
sysUser.setUserType("03");
sysUser.setNickName("鸿瑞堂用户");
+ sysUser.setPhonenumber(mobile);
sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
String password = "hongruitang";
sysUser.setPassword(SecurityUtils.encryptPassword(password));
@@ -231,6 +255,7 @@
member.setMemberNo(memberNo);
member.setUserId(sysUser.getUserId());
member.setDelFlag(0);
+ member.setFrozenFlag(0);
member.setNickName("鸿瑞堂用户");
member.setRealName("鸿瑞堂用户");
member.setCustomerSource("小程序");
@@ -240,12 +265,14 @@
member.setCreateTime(new Date());
member.setMobile(mobile);
initMemberTotal(memberId);
+ log.info("sysUser01-----------------" + sysUser.toString());
} else {
sysUser = sysUserService.getSysUser(member.getUserId()).getData();
+ log.info("sysUser02-----------------" + sysUser.toString());
}
member.setWxUnionid(appUserRegisterDto.getWxUnionid());
member.setMiniOpenid(appUserRegisterDto.getMiniOpenid());
- log.info("member-----------------" + member.toString());
+ log.info("member02-----------------" + member.toString());
this.saveOrUpdate(member);
appUserRegisterVo.setMobile(mobile);
appUserRegisterVo.setNickName(member.getNickName());
@@ -304,6 +331,8 @@
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;
}
@@ -321,27 +350,22 @@
switch (editType) {
case 1:
member.setNickName(editValue);
- member.setUpdateTime(new Date());
- member.setUpdateUserId(appEditUserDto.getUserId());
- this.saveOrUpdate(member);
break;
case 2:
+ member.setAvatar(editValue);
break;
case 3:
member.setGender(Integer.valueOf(editValue));
- member.setUpdateTime(new Date());
- member.setUpdateUserId(appEditUserDto.getUserId());
- this.saveOrUpdate(member);
break;
case 4:
member.setBirthday(editValue);
- member.setUpdateTime(new Date());
- member.setUpdateUserId(appEditUserDto.getUserId());
- this.saveOrUpdate(member);
break;
default:
break;
}
+ member.setUpdateTime(new Date());
+ member.setUpdateUserId(appEditUserDto.getUserId());
+ this.saveOrUpdate(member);
sysUserService.editUserInfo(appEditUserDto);
}
@@ -353,17 +377,52 @@
*/
@Override
public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto) {
+ List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
if (StringUtils.isNotBlank(merMemberPageDto.getMemberActiveness())) {
- Activeness activeness = remoteConfigService.getActivenessByName(merMemberPageDto.getMemberActiveness()).getData();
- if (activeness != null) {
- 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()));
- merMemberPageDto.setActStartDate(actStartDate);
- merMemberPageDto.setActEndDate(actEndDate);
+ 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()));
+ merMemberPageDto.setActStartDate(actStartDate);
+ merMemberPageDto.setActEndDate(actEndDate);
+ break;
+ }
+ }
}
}
List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto);
+ //处理活跃度返回
+ if (merMemberPageVoList != null && !merMemberPageVoList.isEmpty()) {
+ if (activenessList != null && !activenessList.isEmpty()) {
+ //生成活跃度时间段列表
+ List<MgtActivenessJudgeVo> mgtActivenessJudgeVoList = new ArrayList<>();
+ 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.setActivenessName(activeness.getActivenessName());
+ }
+ //活跃度赋值
+ Date lastPayTime;
+ for (MerMemberPageVo mgtMemberPageVo : merMemberPageVoList) {
+ lastPayTime = mgtMemberPageVo.getLastPayTime();
+ StringJoiner sj = new StringJoiner(",");
+ if (lastPayTime != null) {
+ for (MgtActivenessJudgeVo entity : mgtActivenessJudgeVoList) {
+ if (lastPayTime.compareTo(entity.getStartDay()) >= 0 && lastPayTime.compareTo(entity.getEndDay()) <= 0) {
+ sj.add(entity.getActivenessName());
+ }
+ }
+ if (sj.length() > 0) {
+ mgtMemberPageVo.setMemberActiveness(sj.toString());
+ }
+ }
+ }
+ }
+ }
return merMemberPageVoList;
}
@@ -562,6 +621,7 @@
member.setMemberId(memberId);
member.setUserId(sysUser.getUserId());
member.setDelFlag(0);
+ member.setFrozenFlag(0);
member.setNickName(merMemberAddDto.getNickName());
member.setRealName(merMemberAddDto.getNickName());
member.setGender(merMemberAddDto.getGender());
@@ -577,7 +637,7 @@
// 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());
// Save the member and initialize member total
this.saveOrUpdate(member);
@@ -669,24 +729,51 @@
*/
@Override
public void updateMemberGoodsType(AppMemberGoodsTypeDto appMemberGoodsTypeDto) {
+ // 根据用户ID获取会员信息
Member member = this.getByUserId(appMemberGoodsTypeDto.getUserId());
+ // 获取商品类型集合和商品护理集合
HashSet<String> goodsTypeSet = appMemberGoodsTypeDto.getGoodsTypeSet();
+ HashSet<String> goodsNurseSet = appMemberGoodsTypeDto.getGoodsNurseSet();
+ // 如果会员存在
if (member != null) {
- String goodsType = member.getGoodsType();
+ // 标识是否有变化
Boolean change = false;
- for (String str : goodsTypeSet) {
- if (goodsType != null) {
- if (!goodsType.contains(str)) {
- goodsType = goodsType + "," + str;
+ // 更新商品类型
+ if (goodsTypeSet != null && goodsTypeSet.size() > 0) {
+ String goodsType = member.getGoodsType();
+ HashSet<String> goodsTypeOldSet = new HashSet<>();
+ // 如果商品类型不为空
+ if (StringUtils.isNotBlank(goodsType)) {
+ goodsTypeOldSet = new HashSet<>(Arrays.asList(goodsType.split(",")));
+ // 如果商品类型集合相等
+ if (!goodsTypeSet.equals(goodsTypeOldSet)) {
change = true;
}
} else {
- goodsType = str;
change = true;
}
+ goodsTypeOldSet.addAll(goodsTypeSet);
+ member.setGoodsType(String.join(",", goodsTypeOldSet));
}
+ // 更新商品护理
+ if (goodsNurseSet != null && goodsNurseSet.size() > 0) {
+ String memberNurse = member.getMemberNurse();
+ HashSet<String> memberNurseOldSet = new HashSet<>();
+ // 如果会员护理不为空
+ if (StringUtils.isNotBlank(memberNurse)) {
+ memberNurseOldSet = new HashSet<>(Arrays.asList(memberNurse.split(",")));
+ // 如果商品护理集合相等
+ if (!goodsNurseSet.equals(memberNurseOldSet)) {
+ change = true;
+ }
+ } else {
+ change = true;
+ }
+ memberNurseOldSet.addAll(goodsNurseSet);
+ member.setMemberNurse(String.join(",", memberNurseOldSet));
+ }
+ // 如果有变化,则保存或更新会员信息
if (change) {
- member.setGoodsType(goodsType);
this.saveOrUpdate(member);
}
}
@@ -703,8 +790,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);
@@ -735,6 +822,11 @@
memberTotal.setTotalExperienceOrder(0);
memberTotal.setTotalServiceOrder(0);
memberTotal.setTotalGoodsOrder(0);
+ memberTotal.setShareFlag(0);
+ memberTotal.setPlSuggestFlag(0);
+ memberTotal.setShopSuggestFlag(0);
+ memberTotal.setSignFlag(0);
+ memberTotal.setBuyFlag(0);
memberTotalService.saveOrUpdate(memberTotal);
}
@@ -774,6 +866,19 @@
//处理标签为正则表达
if (StringUtils.isNotBlank(merMemberPageDto.getMemberTags())) {
merMemberPageDto.setMemberTags(merMemberPageDto.getMemberTags().replace(",", "|"));
+ }
+ //处理生日
+ if(merMemberPageDto.getStartAge()!=null){
+ LocalDate currentDate = LocalDate.now();
+ LocalDate endBirthday = currentDate.minusYears(merMemberPageDto.getStartAge());
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ merMemberPageDto.setEndBirthday(endBirthday.format(formatter));
+ }
+ if(merMemberPageDto.getEndAge()!=null){
+ LocalDate currentDate = LocalDate.now();
+ LocalDate startBirthday = currentDate.minusYears(merMemberPageDto.getEndAge());
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ merMemberPageDto.setStartBirthday(startBirthday.format(formatter));
}
//查询获取结果列表
List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto);
@@ -831,6 +936,7 @@
member.setUpdateTime(new Date());
member.setUpdateUserId(mgtMemberRelEditDto.getUserId());
this.saveOrUpdate(member);
+ memberMapper.updateById(member);
}
}
}
@@ -964,8 +1070,17 @@
mgtMemberGetVo.setMemberNo(member.getMemberNo());
mgtMemberGetVo.setRealName(member.getRealName());
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());
@@ -1002,9 +1117,9 @@
* @date 2023/6/13 17:53
*/
@Override
- public List<Long> listIdBySendType(Integer sendType) {
+ public List<Long> listIdBySendType(Integer sendType,Long shopId) {
//1.手动领取2.全部用户3.会员用户4非会员用户5自定义
- return memberMapper.listIdBySendType(sendType);
+ return memberMapper.listIdBySendType(sendType,shopId);
}
/**
@@ -1069,6 +1184,31 @@
// 获取总会员数和不同年龄段的会员数
MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto);
MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto);
+ Integer manTotal = mgtAgeTotalVo.getManTotal();
+ Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
+ mgtTotalMemberTotalVo.setManTotal(manTotal);
+ mgtTotalMemberTotalVo.setWomenTotal(womenTotal);
+ 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(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).setScale(0,BigDecimal.ROUND_HALF_UP);
+ womenPercent = bigTen.subtract(menPercent);
+ }
+ mgtTotalMemberTotalVo.setManPercent(menPercent);
+ mgtTotalMemberTotalVo.setWomenPercent(womenPercent);
// 年龄段数组
String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
// 不同年龄段的会员数数组
@@ -1081,6 +1221,12 @@
if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
nurseTotalVos = listRemoveNull(nurseTotalVos);
mgtTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
+ }
+ //获取不同等级的会员数
+ List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getTotalMemberTotalLevel(mgtBaseShopDto);
+ if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
+ memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
+ mgtTotalMemberTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
}
// 获取不同商品类型的会员数
List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto);
@@ -1187,6 +1333,12 @@
if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
nurseTotalVos = listRemoveNull(nurseTotalVos);
plTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
+ }
+ //获取不同等级的会员数
+ List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getPlTotalMemberTotalLevel(mgtBasePlatformDto);
+ if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
+ memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
+ plTotalMemberTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
}
// 获取不同商品类型的会员数
List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto);
@@ -1321,10 +1473,15 @@
}
//消费变动
if (memberTotalChangeDto.getPayMoney() != null) {
- memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney()));
- memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() + 1);
- memberTotal.setLastPayMoney(memberTotalChangeDto.getPayMoney());
- memberTotal.setLastPayTime(memberTotalChangeDto.getPayTime());
+ if(memberTotalChangeDto.getPayMoney().compareTo(BigDecimal.ZERO)>=0){
+ memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney()));
+ memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() + 1);
+ memberTotal.setLastPayMoney(memberTotalChangeDto.getPayMoney());
+ memberTotal.setLastPayTime(memberTotalChangeDto.getPayTime());
+ }else{
+ memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney()));
+ memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() - 1);
+ }
}
//服务次数变动
if (memberTotalChangeDto.getServiceCount() != null) {
@@ -1360,4 +1517,421 @@
}
memberTotalService.saveOrUpdate(memberTotal);
}
+
+ /**
+ * @description 商户获取会员统计
+ * @author jqs
+ * @date 2023/7/3 17:16
+ * @param merTotalDto
+ * @return MerMemberTotalVo
+ */
+ @Override
+ public MerMemberTotalVo getMerMemberTotal(MerTotalDto merTotalDto){
+ if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){
+ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
+ merTotalDto.setShopIdList(shopIdList);
+ merTotalDto.setShopId(null);
+ }
+ MerMemberTotalVo merMemberTotalVo = memberMapper.getMerMemberTotal(merTotalDto);
+ return merMemberTotalVo;
+ }
+
+ /**
+ * @description 商户获取会员固定统计
+ * @author jqs
+ * @date 2023/7/3 18:34
+ * @param merTotalDto
+ * @return MerMemberFixedTotalVo
+ */
+ @Override
+ public MerMemberFixedTotalVo getMerMemberFixedTotal(MerTotalDto merTotalDto){
+ if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){
+ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
+ merTotalDto.setShopIdList(shopIdList);
+ merTotalDto.setShopId(null);
+ }
+ 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();
+ memberFixedTotalVo.setManTotal(manTotal);
+ memberFixedTotalVo.setWomenTotal(womenTotal);
+ 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(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,0,BigDecimal.ROUND_HALF_UP);
+ womenPercent = bigTen.subtract(menPercent);
+ }
+ memberFixedTotalVo.setManPercent(menPercent);
+ memberFixedTotalVo.setWomenPercent(womenPercent);
+ // 年龄段数组
+ String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
+ // 不同年龄段的会员数数组
+ Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
+ // 设置年龄段数组和不同年龄段的会员数数组
+ memberFixedTotalVo.setAgeKey(ageKey);
+ memberFixedTotalVo.setAgeValue(ageValue);
+ // 获取不同护理类型的会员数
+ List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getMerMemberTotalNurse(merTotalDto);
+ if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
+ nurseTotalVos = listRemoveNull(nurseTotalVos);
+ memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
+ }
+ //获取不同等级的会员数
+ List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getMerMemberTotalLevel(merTotalDto);
+ if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
+ memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
+ memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
+ }
+ // 获取不同商品类型的会员数
+ List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getMerMemberTotalGoodsType(merTotalDto);
+ if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
+ goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
+ memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
+ }
+ //获取会员消费排名
+ List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto);
+ if (memberPayList != null && memberPayList.size() > 0) {
+ memberPayList = listRemoveNull(memberPayList);
+ memberFixedTotalVo.setMemberPayList(memberPayList);
+ }
+ // 获取不同活跃度的会员数
+ List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
+ if (activenessList != null && !activenessList.isEmpty()) {
+ Activeness activeness;
+ String actStartDate;
+ String actEndDate;
+ Integer count;
+ 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()));
+ merTotalDto.setStartDate(actStartDate);
+ merTotalDto.setEndDate(actEndDate);
+ count = memberMapper.getMerMemberTotalActiveness(merTotalDto);
+ MgtMapIntTotalVo = new MgtMapIntTotalVo();
+ MgtMapIntTotalVo.setMapKey(activeness.getActivenessName());
+ MgtMapIntTotalVo.setMapValue(count);
+ MgtMapIntTotalVoList.add(MgtMapIntTotalVo);
+ }
+ memberFixedTotalVo.setActivenessList(MgtMapIntTotalVoList);
+ }
+ return memberFixedTotalVo;
+ }
+
+ /**
+ * @description 商会获取会员来源统计
+ * @author jqs
+ * @date 2023/7/3 19:09
+ * @param merTotalDto
+ * @return MerMemberSourceTotalVo
+ */
+ @Override
+ public MerMemberSourceTotalVo getMerMemberSourceTotal(MerTotalDto merTotalDto){
+ if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){
+ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
+ merTotalDto.setShopIdList(shopIdList);
+ merTotalDto.setShopId(null);
+ }
+ MerMemberSourceTotalVo memberSourceTotalVo = new MerMemberSourceTotalVo();
+ //获取来源渠道排名
+ List<MgtMapIntTotalVo> customerSourceList = memberMapper.getMerMemberCustomerSourceRank(merTotalDto);
+ if (customerSourceList != null && customerSourceList.size() > 0) {
+ customerSourceList = listRemoveNull(customerSourceList);
+ memberSourceTotalVo.setCustomerSourceList(customerSourceList);
+ }
+
+ return memberSourceTotalVo;
+ }
+
+ /**
+ * @description 商会获取会员推荐排名
+ * @author jqs
+ * @date 2023/7/3 19:14
+ * @param merTotalDto
+ * @return MerMemberRecommendTotalVo
+ */
+ @Override
+ public MerMemberRecommendTotalVo getMerMemberRecommendTotal(MerTotalDto merTotalDto){
+ if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){
+ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
+ merTotalDto.setShopIdList(shopIdList);
+ merTotalDto.setShopId(null);
+ }
+ MerMemberRecommendTotalVo memberRecommendTotalVo = new MerMemberRecommendTotalVo();
+ //获取会员推荐排名
+ List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto);
+ if (recommendList != null && recommendList.size() > 0) {
+ recommendList = listRemoveNull(recommendList);
+ memberRecommendTotalVo.setRecommendList(recommendList);
+ }
+ return memberRecommendTotalVo;
+ }
+
+ /**
+ * @description 获取各年龄层用户
+ * @author jqs
+ * @date 2023/7/4 9:50
+ * @param merTotalDto
+ * @return MerOrderAgeUserVo
+ */
+ @Override
+ public List<MerOrderAgeUserVo> listOrderAgeUser(MerTotalDto merTotalDto){
+ List<MerOrderAgeUserVo> orderAgeUserVoList = new ArrayList<>();
+ MerOrderAgeUserVo merOrderAgeUserVo = new MerOrderAgeUserVo();
+ merTotalDto.setAgeType(1);
+ List<Long> userIdList = memberMapper.listOrderAgeUser(merTotalDto);
+ merOrderAgeUserVo.setAgeType(1);
+ merOrderAgeUserVo.setUserIdList(userIdList);
+ orderAgeUserVoList.add(merOrderAgeUserVo);
+ merOrderAgeUserVo = new MerOrderAgeUserVo();
+ merTotalDto.setAgeType(2);
+ userIdList = memberMapper.listOrderAgeUser(merTotalDto);
+ merOrderAgeUserVo.setAgeType(2);
+ merOrderAgeUserVo.setUserIdList(userIdList);
+ orderAgeUserVoList.add(merOrderAgeUserVo);
+ merOrderAgeUserVo = new MerOrderAgeUserVo();
+ merTotalDto.setAgeType(3);
+ userIdList = memberMapper.listOrderAgeUser(merTotalDto);
+ merOrderAgeUserVo.setAgeType(3);
+ merOrderAgeUserVo.setUserIdList(userIdList);
+ orderAgeUserVoList.add(merOrderAgeUserVo);
+ merOrderAgeUserVo = new MerOrderAgeUserVo();
+ merTotalDto.setAgeType(4);
+ userIdList = memberMapper.listOrderAgeUser(merTotalDto);
+ merOrderAgeUserVo.setAgeType(4);
+ merOrderAgeUserVo.setUserIdList(userIdList);
+ orderAgeUserVoList.add(merOrderAgeUserVo);
+ merOrderAgeUserVo = new MerOrderAgeUserVo();
+ merTotalDto.setAgeType(5);
+ userIdList = memberMapper.listOrderAgeUser(merTotalDto);
+ merOrderAgeUserVo.setAgeType(4);
+ merOrderAgeUserVo.setUserIdList(userIdList);
+ orderAgeUserVoList.add(merOrderAgeUserVo);
+ return orderAgeUserVoList;
+ }
+
+ /**
+ * @description
+ * @author jqs
+ * @date 2023/7/5 21:18
+ * @param mgtFrozenMemberDto
+ * @return void
+ */
+ @Override
+ public void mgtFrozenMember(MgtFrozenMemberDto mgtFrozenMemberDto){
+ Long userId = mgtFrozenMemberDto.getId();
+ Member member = this.getByUserId(userId);
+ member.setFrozenFlag(mgtFrozenMemberDto.getFrozenFlag());
+ this.saveOrUpdate(member);
+ sysUserService.frozenUser(mgtFrozenMemberDto);
+ }
+
+ /**
+ * @description 获取用户任务列表
+ * @author jqs
+ * @date 2023/7/12 15:07
+ * @param userId
+ * @return List<AppIntegralTaskListVo>
+ */
+ @Override
+ public List<AppIntegralTaskListVo> listAppMemberIntegralTask(Long userId){
+ // 获取指定用户的会员信息
+ Member member = this.getByUserId(userId);
+ // 获取会员的总积分信息
+ MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
+ // 获取其他配置信息
+ AppOtherConfigGetVo appOtherConfigGetVo = remoteConfigService.getAppOtherConfigGetVo().getData();
+ // 创建一个空的积分任务列表
+ List<AppIntegralTaskListVo> appIntegralTaskListVoList = new ArrayList<>();
+ // 创建分享小程序任务
+ AppIntegralTaskListVo shareTask = new AppIntegralTaskListVo();
+ shareTask.setTaskContent("分享小程序给微信好友");
+ shareTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getShareIntegral() + "积分");
+ shareTask.setRecommendFlag(1);
+ shareTask.setCompleteFlag(memberTotal.getShareFlag());
+ appIntegralTaskListVoList.add(shareTask);
+ // 创建提交平台建议任务
+ AppIntegralTaskListVo plSuggestTask = new AppIntegralTaskListVo();
+ plSuggestTask.setTaskContent("提交平台建议");
+ plSuggestTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getSuggestPlatformIntegral() + "积分");
+ plSuggestTask.setRecommendFlag(1);
+ plSuggestTask.setCompleteFlag(memberTotal.getPlSuggestFlag());
+ appIntegralTaskListVoList.add(plSuggestTask);
+ // 创建提交门店建议任务
+ AppIntegralTaskListVo shopSuggestTask = new AppIntegralTaskListVo();
+ shopSuggestTask.setTaskContent("提交门店建议");
+ shopSuggestTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getSuggestShopIntegral() + "积分");
+ shopSuggestTask.setRecommendFlag(1);
+ shopSuggestTask.setCompleteFlag(memberTotal.getShopSuggestFlag());
+ appIntegralTaskListVoList.add(shopSuggestTask);
+ // 创建每日签到任务
+ AppIntegralTaskListVo signTask = new AppIntegralTaskListVo();
+ signTask.setTaskContent("每日签到");
+ signTask.setTaskDesc("完成任务+" + appOtherConfigGetVo.getSignInIntegral() + "积分");
+ signTask.setRecommendFlag(1);
+ signTask.setCompleteFlag(memberTotal.getSignFlag());
+ appIntegralTaskListVoList.add(signTask);
+ // 创建消费得积分任务
+ AppIntegralTaskListVo buyTask = new AppIntegralTaskListVo();
+ buyTask.setTaskContent("消费得积分");
+ buyTask.setTaskDesc("每消费1元+" + appOtherConfigGetVo.getPayMoneyIntegral() + "积分");
+ buyTask.setRecommendFlag(1);
+ buyTask.setCompleteFlag(memberTotal.getBuyFlag());
+ appIntegralTaskListVoList.add(buyTask);
+ // 返回积分任务列表
+ return appIntegralTaskListVoList;
+ }
+
+ /**
+ * @description 积分变动
+ * @author jqs
+ * @date 2023/7/12 15:59
+ * @param integralChangeDto
+ * @return void
+ */
+ @Override
+ public Boolean changeIntegral(IntegralChangeDto integralChangeDto){
+ Member member = this.getByUserId(integralChangeDto.getUserId());
+ Integer integralType = integralChangeDto.getIntegralType();
+ Integer changeIntegral = integralChangeDto.getChangeIntegral();
+ MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
+ Boolean completeFlag = false;
+ switch(integralType){
+ case 1:
+ if(memberTotal.getShareFlag()==1){
+ completeFlag = true;
+ }
+ break;
+ case 2:
+ if(memberTotal.getPlSuggestFlag()==1){
+ completeFlag = true;
+ }
+ break;
+ case 3:
+ if(memberTotal.getShopSuggestFlag()==1){
+ completeFlag = true;
+ }
+ break;
+ case 4:
+ if(memberTotal.getSignFlag()==1){
+ completeFlag = true;
+ }
+ break;
+ default:
+ break;
+ }
+ if(completeFlag){
+ return completeFlag;
+ }
+ AppOtherConfigGetVo appOtherConfigGetVo = remoteConfigService.getAppOtherConfigGetVo().getData();
+ IntegralRecord integralRecord = new IntegralRecord();
+ integralRecord.setDelFlag(0);
+ integralRecord.setUserId(integralChangeDto.getUserId());
+ integralRecord.setChangeType(integralType);
+ integralRecord.setCreateTime(new Date());
+ //1分享获取2平台建议获取3门店建议获取4每日签到5消费得积分
+ switch(integralType){
+ case 1:
+ changeIntegral = appOtherConfigGetVo.getShareIntegral();
+ integralRecord.setChangeIntegral(changeIntegral);
+ integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ integralRecord.setChangeReason("每日任务【分享小程序】获得积分");
+ memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
+ memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ memberTotal.setShareFlag(1);
+ break;
+ case 2:
+ changeIntegral = appOtherConfigGetVo.getSuggestPlatformIntegral();
+ integralRecord.setChangeIntegral(changeIntegral);
+ integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ integralRecord.setChangeReason("每日任务【提交平台建议】获得积分");
+ memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
+ memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ memberTotal.setPlSuggestFlag(1);
+ break;
+ case 3:
+ changeIntegral = appOtherConfigGetVo.getSuggestShopIntegral();
+ integralRecord.setChangeIntegral(changeIntegral);
+ integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ integralRecord.setChangeReason("每日任务【提交门店建议】获得积分");
+ memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
+ memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ memberTotal.setShopSuggestFlag(1);
+ break;
+ case 4:
+ changeIntegral = appOtherConfigGetVo.getSignInIntegral();
+ integralRecord.setChangeIntegral(changeIntegral);
+ integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ integralRecord.setChangeReason("每日任务【签到】获得积分");
+ memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
+ memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ memberTotal.setSignFlag(1);
+ break;
+ case 5:
+ integralRecord.setChangeIntegral(changeIntegral);
+ integralRecord.setSurpIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ integralRecord.setChangeReason("订单【"+integralChangeDto.getOrderNo()+"】获得积分");
+ integralRecord.setOrderId(integralChangeDto.getOrderId());
+ integralRecord.setOrderNo(integralChangeDto.getOrderNo());
+ memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+changeIntegral);
+ memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+changeIntegral);
+ memberTotal.setBuyFlag(1);
+ break;
+ default:
+ break;
+ }
+ memberTotalService.saveOrUpdate(memberTotal);
+ integralRecordService.saveOrUpdate(integralRecord);
+ return completeFlag;
+ }
+
+ /**
+ * @description 统计商户今日新增会员
+ * @author jqs
+ * @date 2023/7/14 19:54
+ * @param shopIdList
+ * @return Integer
+ */
+ @Override
+ 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);
+ }
}
--
Gitblit v1.7.1