From c5d38d650d2ac4101b1293a4f17346e7d5420076 Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期五, 04 七月 2025 20:39:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0
---
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 312 insertions(+), 39 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 b3cc1d8..c8a2f2e 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
@@ -8,12 +8,15 @@
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;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.CodeFactoryUtil;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.member.domain.dto.*;
@@ -35,21 +38,25 @@
import com.ruoyi.system.api.domain.poji.config.SysTag;
import com.ruoyi.system.api.domain.poji.member.Member;
import com.ruoyi.system.api.domain.poji.shop.Shop;
+import com.ruoyi.system.api.domain.poji.sys.SysFile;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.model.AppMiniLoginDto;
import com.ruoyi.system.api.model.AppMiniLoginVo;
-import com.ruoyi.system.api.service.RemoteConfigService;
-import com.ruoyi.system.api.service.RemoteOrderService;
-import com.ruoyi.system.api.service.RemoteShopService;
-import com.ruoyi.system.api.service.RemoteUserService;
+import com.ruoyi.system.api.service.*;
+import io.jsonwebtoken.lang.Assert;
import lombok.extern.log4j.Log4j2;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
+import org.springframework.util.FileCopyUtils;
+import org.springframework.web.multipart.MultipartFile;
+import javax.annotation.Nullable;
import javax.annotation.Resource;
+import java.io.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@@ -106,13 +113,23 @@
@Resource
private MemberArchiveService memberArchiveService;
-
+
@Resource
private RemoteShopService remoteShopService;
-
+
@Resource
private RemoteOrderService remoteOrderService;
-
+
+ @Resource
+ private RemoteUserService remoteUserService;
+
+ @Resource
+ private TokenService tokenService;
+
+ @Resource
+ private RemoteFileService remoteFileService;
+
+
/**
* @description: TODO
* @author jqs34
@@ -291,7 +308,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");
@@ -320,6 +336,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();
@@ -329,9 +346,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;
@@ -476,16 +495,16 @@
MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
// 设置MerMemberInfoVo对象的属性值
merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount());
- merMemberInfoVo.setUserNumber(memberTotal.getTotalPayCount());
- 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) {
@@ -494,7 +513,7 @@
}
// 设置MerMemberInfoVo对象的属性值
merMemberInfoVo.setNextTaskTime(memberTotal.getNextTaskTime());
- merMemberInfoVo.setLastPayTime(memberTotal.getLastPayTime());
+ merMemberInfoVo.setLastPayTime(memberTotal.getLastConsumeTime());
// 返回MerMemberInfoVo对象
return merMemberInfoVo;
}
@@ -621,8 +640,15 @@
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();
@@ -868,6 +894,7 @@
memberTotal.setShopSuggestFlag(0);
memberTotal.setSignFlag(0);
memberTotal.setBuyFlag(0);
+ memberTotal.setTotalConsumeCount(0);
memberTotalService.saveOrUpdate(memberTotal);
}
@@ -892,6 +919,7 @@
*/
@Override
public List<MgtMemberPageVo> pageMgtMember(Page page, MgtMemberPageDto merMemberPageDto) {
+
List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
Date nowDay = new Date();
if (merMemberPageDto.getActivenessId() != null) {
@@ -921,8 +949,46 @@
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()) {
@@ -938,6 +1004,15 @@
//活跃度赋值
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) {
@@ -1133,7 +1208,13 @@
mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime());
mgtMemberGetVo.setGoodsType(member.getGoodsType());
if(member.getBindingFlag()==1){
- mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
+ 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());
@@ -1169,6 +1250,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
@@ -1210,10 +1298,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;
}
@@ -1227,10 +1315,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();
@@ -1242,6 +1356,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");
@@ -1252,7 +1369,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);
@@ -1319,7 +1436,7 @@
//获取会员消费排名
List<MgtMapIntTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto);
if (memberPayList != null && memberPayList.size() > 0) {
- memberPayList = listRemoveNull(memberPayList);
+ //memberPayList = listRemoveNull(memberPayList);
mgtTotalMemberTotalVo.setMemberPayList(memberPayList);
}
//获取来源渠道排名
@@ -1355,23 +1472,58 @@
*/
@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) {
Integer manTotal = mgtAgeTotalVo.getManTotal();
@@ -1382,6 +1534,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");
@@ -1392,7 +1547,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);
}
plTotalMemberTotalVo.setManTotal(manTotal);
@@ -1632,6 +1787,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);
}
@@ -1669,11 +1829,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();
@@ -1685,6 +1840,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");
@@ -1725,11 +1883,17 @@
if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
nurseTotalVos = listRemoveNull(nurseTotalVos);
memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
+ }else{
+ nurseTotalVos = new ArrayList<>();
+ memberFixedTotalVo.setNurseTotalVos(nurseTotalVos);
}
//获取不同等级的会员数
List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getMerMemberTotalLevel(merTotalDto);
if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) {
memberLevelTotalVos = listRemoveNull(memberLevelTotalVos);
+ memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
+ }else{
+ memberLevelTotalVos = new ArrayList<>();
memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos);
}
// 获取不同商品类型的会员数
@@ -1737,11 +1901,17 @@
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);
}
// 获取不同活跃度的会员数
@@ -1751,7 +1921,7 @@
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++) {
@@ -1764,9 +1934,12 @@
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;
}
@@ -1812,11 +1985,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;
}
@@ -2088,16 +2263,114 @@
*/
@Override
public void sendBirthdayBless(){
- List<String> mobileList = memberMapper.listTodayBirthday();
+ List<Member> mobileList = memberMapper.listTodayBirthday();
if(mobileList!=null&&!mobileList.isEmpty()){
log.info("生日祝福发送短信---"+mobileList.toString());
- for(String mobile : mobileList){
+ for (Member member : mobileList) {
try {
- MsgUtils.sendMsg(mobile,null,null);
+ 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();
+ }
+
+
+ @Override
+ public String getWeiXinQrCode(String scene, String path) {
+ try {
+ File file = wxMaService.getQrcodeService().createWxaCodeUnlimit(scene, path);
+ FileInputStream input = new FileInputStream(file);
+ MultipartFile multipartFile = new MyMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input));
+
+ SysFile sysFile = remoteFileService.upload(multipartFile).getData();
+ return sysFile.getUrl();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public class MyMultipartFile implements MultipartFile {
+ private final String name;
+ private final byte[] content;
+ private String originalFilename;
+ @Nullable
+ private String contentType;
+
+
+ public MyMultipartFile(String name, @Nullable String originalFilename, @Nullable String contentType, @Nullable byte[] content) {
+ Assert.hasLength(name, "Name must not be null");
+ this.name = name;
+ this.originalFilename = originalFilename != null ? originalFilename : "";
+ this.contentType = contentType;
+ this.content = content != null ? content : new byte[0];
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public String getOriginalFilename() {
+ return this.originalFilename;
+ }
+
+ @Nullable
+ public String getContentType() {
+ return this.contentType;
+ }
+
+ public boolean isEmpty() {
+ return this.content.length == 0;
+ }
+
+ public long getSize() {
+ return (long) this.content.length;
+ }
+
+ public byte[] getBytes() throws IOException {
+ return this.content;
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return new ByteArrayInputStream(this.content);
+ }
+
+ public void transferTo(File dest) throws IOException, IllegalStateException {
+ FileCopyUtils.copy(this.content, dest);
+ }
+ }
+
}
--
Gitblit v1.7.1