From fc39a04331e80226d50242ac1ec27f93494fb359 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期二, 30 五月 2023 18:23:09 +0800
Subject: [PATCH] 用户管理

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java |  205 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 201 insertions(+), 4 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 4b092e9..fe39f94 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,4 +1,5 @@
 package com.ruoyi.member.service.impl.member;
+import com.google.common.collect.Lists;
 import java.util.Date;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
@@ -11,21 +12,22 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.DateUtils;
 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.utils.SecurityUtils;
 import com.ruoyi.member.domain.dto.*;
+import com.ruoyi.member.domain.pojo.member.IntegralRecord;
 import com.ruoyi.member.domain.pojo.member.MemberNurse;
 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.MemberNurseService;
-import com.ruoyi.member.service.member.MemberService;
-import com.ruoyi.member.service.member.MemberTotalService;
+import com.ruoyi.member.service.member.*;
 import com.ruoyi.member.util.CodeFactoryUtil;
 import com.ruoyi.member.util.HttpUtils;
 import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto;
+import com.ruoyi.system.api.domain.poji.config.Activeness;
 import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo;
 import com.ruoyi.system.api.service.RemoteConfigService;
 import com.ruoyi.system.api.service.RemoteOrderService;
@@ -43,6 +45,7 @@
 import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
 import com.ruoyi.system.api.model.AppMiniLoginDto;
 import com.ruoyi.system.api.model.AppMiniLoginVo;
+import io.swagger.models.auth.In;
 import lombok.extern.log4j.Log4j2;
 import com.ruoyi.common.core.utils.StringUtils;
 import org.apache.commons.lang3.ArrayUtils;
@@ -102,6 +105,13 @@
 
     @Resource
     private MemberTotalService memberTotalService;
+
+    @Resource
+    private IntegralRecordService integralRecordService;
+
+    @Resource
+    private MemberArchiveService memberArchiveService;
+
 
     /**
      * @description: TODO
@@ -655,8 +665,195 @@
      */
     @Override
     public List<MgtMemberPageVo> pageMgtMember(Page page,MgtMemberPageDto merMemberPageDto){
+        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
+        Date nowDay = DateUtils.getNowDate();
+        //处理活跃度筛选
+        if(activenessList!=null&&!activenessList.isEmpty()){
+            for(Activeness activeness : activenessList){
+               if(activeness.getActivenessId().equals(merMemberPageDto.getActivenessId())){
+                   merMemberPageDto.setActStartDate(DateUtils.addDays(nowDay,activeness.getEndDay()));
+                   merMemberPageDto.setActEndDate(DateUtils.addDays(nowDay,activeness.getStartDay()));
+               }
+            }
+        }
+        //查询获取结果列表
         List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto);
-
+        //处理活跃度返回
+        if(memberPageVoList!=null&&!memberPageVoList.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(MgtMemberPageVo mgtMemberPageVo : memberPageVoList){
+                    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.setActiveness(sj.toString());
+                        }
+                    }
+                }
+            }
+        }
         return memberPageVoList;
     }
+
+
+    /**
+     * 修改会员关联商户
+     * @param mgtMemberRelEditDto
+     */
+    @Override
+    public void editMemberRelationShop(MgtMemberRelEditDto mgtMemberRelEditDto){
+        Member member = this.getByUserId(mgtMemberRelEditDto.getMemberUserId());
+        Shop shop = shopService.getShop(mgtMemberRelEditDto.getShopId()).getData();
+        member.setRelationShopId(shop.getShopId());
+        member.setRelationShopName(shop.getShopName());
+        member.setBindingFlag(1);
+        member.setUpdateTime(new Date());
+        member.setUpdateUserId(mgtMemberRelEditDto.getUserId());
+        this.saveOrUpdate(member);
+    }
+
+
+    /**
+     * 删除会员关联商户
+     * @param mgtMemberRelDelDto
+     */
+    @Override
+    public void deleteMemberRelationShop(MgtMemberRelDelDto mgtMemberRelDelDto){
+        Member member = this.getById(mgtMemberRelDelDto.getMemberUserId());
+        member.setBindingFlag(0);
+        member.setUpdateTime(new Date());
+        member.setUpdateUserId(mgtMemberRelDelDto.getUserId());
+        this.saveOrUpdate(member);
+    }
+
+    /**
+     * 修改会员积分
+     * @param mgtMemberIntEditDto
+     */
+    @Override
+    public void editMemberIntegral(MgtMemberIntEditDto mgtMemberIntEditDto){
+        MemberIntegralChangeDto memberIntegralChangeDto = new MemberIntegralChangeDto();
+        Member member = this.getByUserId(mgtMemberIntEditDto.getMemberUserId());
+        memberIntegralChangeDto.setMemberId(member.getMemberId());
+        memberIntegralChangeDto.setChangeType(1);
+        memberIntegralChangeDto.setRecordType(3);
+        memberIntegralChangeDto.setIntegral(mgtMemberIntEditDto.getIntegral());
+        //调用积分变动
+        memberIntegralChange(memberIntegralChangeDto);
+    }
+
+
+
+    /**
+     * 会员积分变动
+     * @param memberIntegralChangeDto
+     */
+    @Override
+    public void memberIntegralChange(MemberIntegralChangeDto memberIntegralChangeDto){
+        MemberTotal memberTotal = memberTotalService.getById(memberIntegralChangeDto.getMemberId());
+        Integer recordType = memberIntegralChangeDto.getRecordType();
+        Integer changeType = memberIntegralChangeDto.getChangeType();
+        Integer integer = memberIntegralChangeDto.getIntegral();
+        Integer totalIntegral = memberTotal.getTotalIntegral();
+        Integer usedIntegral = memberTotal.getUsedIntegral();
+        Integer useableIntegral = memberTotal.getUseableIntegral();
+        //变动统计
+        if(changeType==1){
+            totalIntegral = totalIntegral + integer;
+            useableIntegral = useableIntegral + integer;
+            memberTotal.setTotalIntegral(totalIntegral);
+            memberTotal.setUseableIntegral(useableIntegral);
+        }else if(changeType==2){
+            usedIntegral = usedIntegral + integer;
+            useableIntegral = useableIntegral - integer;
+            if(useableIntegral<0){
+                throw new ServiceException(AppErrorConstant.INTEGRAL_USE_FAILED);
+            }
+            memberTotal.setTotalIntegral(totalIntegral);
+            memberTotal.setUseableIntegral(useableIntegral);
+            memberTotal.setUsedIntegral(usedIntegral);
+        }
+        memberTotalService.saveOrUpdate(memberTotal);
+        //记录变动
+        IntegralRecord integralRecord = new IntegralRecord();
+        integralRecord.setDelFlag(0);
+        integralRecord.setChangeType(recordType);
+        if(changeType==1){
+            integralRecord.setChangeIntegral(integer);
+        }else if(changeType==2){
+            integralRecord.setChangeIntegral( 0-integer);
+        }
+        integralRecord.setSurpIntegral(useableIntegral);
+        integralRecord.setCreateTime(new Date());
+        integralRecord.setOrderId(memberIntegralChangeDto.getOrderId());
+        integralRecord.setOrderNo(memberIntegralChangeDto.getOrderNo());
+        switch (recordType){
+            case 1:
+                integralRecord.setChangeReason("购物赠送");
+                break;
+            case 2:
+                integralRecord.setChangeReason("活动赠送");
+                break;
+            case 3:
+                integralRecord.setChangeReason("平台赠送");
+                break;
+            default:
+                break;
+        }
+        integralRecordService.saveOrUpdate(integralRecord);
+    }
+
+    /**
+     * 平台获取会员信息
+     * @param userId
+     * @return
+     */
+    @Override
+    public MgtMemberGetVo getMgtMemberInfo(Long userId){
+        MgtMemberGetVo mgtMemberGetVo = new MgtMemberGetVo();
+        Member member = this.getByUserId(userId);
+        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
+        List<MemberArchiveVo> memberArchiveVoList = memberArchiveService.listVoByUserId(member.getUserId());
+        if(memberArchiveVoList!=null&&!memberArchiveVoList.isEmpty()){
+            //去掉未完善信息
+            memberArchiveVoList.removeIf(o -> Objects.isNull(o.getFieldValue()));
+        }
+        mgtMemberGetVo.setMemberId(member.getMemberId());
+        mgtMemberGetVo.setUserId(member.getUserId());
+        mgtMemberGetVo.setMemberNo(member.getMemberNo());
+        mgtMemberGetVo.setRealName(member.getRealName());
+        mgtMemberGetVo.setNickName(member.getNickName());
+        mgtMemberGetVo.setMobile(member.getMobile());
+        mgtMemberGetVo.setGender(member.getGender()==0 ? "男" : member.getGender()==1 ? "女" : null);
+        mgtMemberGetVo.setBirthday(member.getBirthday());
+        mgtMemberGetVo.setBelongDistrict(member.getBelongDistrict());
+        mgtMemberGetVo.setCreateTime(member.getCreateTime());
+        mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime());
+        mgtMemberGetVo.setGoodsType(member.getGoodsType());
+        mgtMemberGetVo.setRelationShopName(member.getRelationShopName());
+        mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral());
+        mgtMemberGetVo.setMemberFrom(member.getCustomerSource());
+        mgtMemberGetVo.setTotalActivityCount(memberTotal.getTotalActivityCount());
+        mgtMemberGetVo.setTotalPayMoney(memberTotal.getTotalPayMoney());
+        mgtMemberGetVo.setMemberRemark(null);
+        mgtMemberGetVo.setMemberArchiveVoList(memberArchiveVoList);
+        mgtMemberGetVo.setMemberTags(member.getUserTags());
+        return mgtMemberGetVo;
+    }
 }

--
Gitblit v1.7.1