From c71055635df3d75e5dc838a9b66036c591913a13 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期六, 08 七月 2023 18:37:12 +0800
Subject: [PATCH] 管理台bug和用户端

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java |  343 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 340 insertions(+), 3 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
index 5a0aa94..ac9260d 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -1,10 +1,45 @@
 package com.ruoyi.goods.service.impl.activity;
 
-import com.ruoyi.goods.domain.pojo.activity.Activity;
-import com.ruoyi.goods.mapper.activity.ActivityMapper;
-import com.ruoyi.goods.service.activity.ActivityService;
+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.StringUtils;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
+import com.ruoyi.goods.domain.dto.MgtActivityGoodsEditDto;
+import com.ruoyi.goods.domain.dto.MgtActivityPageDto;
+import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto;
+import com.ruoyi.goods.domain.pojo.activity.Activity;
+import com.ruoyi.goods.domain.pojo.activity.ActivityTotal;
+import com.ruoyi.goods.domain.vo.*;
+import com.ruoyi.goods.mapper.activity.ActivityMapper;
+import com.ruoyi.goods.service.activity.ActivityGoodsService;
+import com.ruoyi.goods.service.activity.ActivityRecordService;
+import com.ruoyi.goods.service.activity.ActivityService;
+import com.ruoyi.goods.service.activity.ActivityTotalService;
+import com.ruoyi.system.api.constant.AppErrorConstant;
+import com.ruoyi.system.api.domain.dto.ActivityGoodsGetDto;
+import com.ruoyi.system.api.domain.dto.MerPageDto;
+import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
+import com.ruoyi.system.api.domain.dto.MgtUserIdByKeywordDto;
+import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
+import com.ruoyi.system.api.domain.vo.ActivityGoodsGetVo;
+import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo;
+import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
+import com.ruoyi.system.api.domain.vo.MgtUserIdByKeywordVo;
+import com.ruoyi.system.api.service.RemoteMemberService;
+import com.ruoyi.system.api.service.RemoteShopService;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +52,306 @@
 @Service
 public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> implements ActivityService {
 
+    @Resource
+    private ActivityMapper activityMapper;
+
+    @Resource
+    private ActivityGoodsService activityGoodsService;
+
+    @Resource
+    private ActivityTotalService activityTotalService;
+
+    @Resource
+    private ActivityRecordService activityRecordService;
+
+    @Resource
+    private RemoteShopService remoteShopService;
+
+    @Resource
+    private RemoteMemberService remoteMemberService;
+
+    /**
+     * @param mgtActivityEditDto
+     * @return void
+     * @description 平台编辑活动
+     * @author jqs
+     * @date 2023/6/14 15:12
+     */
+    @Override
+    public void editMgtActivity(MgtActivityEditDto mgtActivityEditDto) {
+        Activity activity;
+        // 获取当前时间
+        Date nowTime = new Date();
+        // 如果活动ID不为空,则表示修改活动信息
+        if (StringUtils.isNotBlank(mgtActivityEditDto.getActivityId())) {
+            // 获取活动信息
+            activity = this.getById(mgtActivityEditDto.getActivityId());
+            // 如果活动状态不为0,则表示活动正在进行中,不能修改
+            if (activity.getActivityStatus() != 0) {
+                throw new ServiceException(AppErrorConstant.ACTIVITY_ING_EDIT);
+            }
+            // 删除活动商品信息
+            activityGoodsService.deleteByActivityId(activity.getActivityId());
+        } else {
+            // 如果活动ID为空,则表示新增活动信息
+            activity = new Activity();
+            // 生成活动ID
+            String activityId = IdUtils.simpleUUID();
+            activity.setActivityId(activityId);
+            activity.setDelFlag(0);
+            activity.setCreateUserId(mgtActivityEditDto.getUserId());
+            activity.setCreateTime(nowTime);
+            ActivityTotal activityTotal = new ActivityTotal();
+            activityTotal.setActivityId(activityId);
+            activityTotal.setOrderTotal(0);
+            activityTotal.setPersonTotal(0);
+            activityTotal.setRefundTotal(0);
+            activityTotal.setOrderMoneyTotal(BigDecimal.ZERO);
+            activityTotalService.save(activityTotal);
+        }
+        // 获取活动开始时间和结束时间
+        Date activityStartTime = mgtActivityEditDto.getActivityStartTime();
+        Date activityEndTime = mgtActivityEditDto.getActivityEndTime();
+        // 根据当前时间和活动时间判断活动状态
+        if (nowTime.compareTo(activityStartTime) < 0) {
+            activity.setActivityStatus(0);
+        } else if (nowTime.compareTo(activityStartTime) >= 0 && nowTime.compareTo(activityEndTime) <= 0) {
+            activity.setActivityStatus(1);
+        } else if (nowTime.compareTo(activityEndTime) > 0) {
+            activity.setActivityStatus(2);
+        }
+        // 设置活动信息
+        activity.setActivityName(mgtActivityEditDto.getActivityName());
+        activity.setActivityStartTime(activityStartTime);
+        activity.setActivityEndTime(activityEndTime);
+        activity.setGroupBuyNumber(mgtActivityEditDto.getGroupBuyNumber());
+        activity.setPurchaseLimitationFlag(mgtActivityEditDto.getPurchaseLimitationFlag());
+        activity.setLimitNumber(mgtActivityEditDto.getLimitNumber());
+        activity.setPropagandaPoster(mgtActivityEditDto.getPropagandaPoster());
+        activity.setAreaFlag(mgtActivityEditDto.getAreaFlag());
+        activity.setDesignatedArea(mgtActivityEditDto.getDesignatedArea());
+        activity.setShopFlag(mgtActivityEditDto.getShopFlag());
+        activity.setApplicableShop(mgtActivityEditDto.getApplicableShop());
+        activity.setUpdateUserId(mgtActivityEditDto.getUserId());
+        activity.setUpdateTime(nowTime);
+        activity.setRecommendFlag(mgtActivityEditDto.getRecommendFlag());
+        this.saveOrUpdate(activity);
+        // 获取活动商品信息
+        List<MgtActivityGoodsEditDto> mgtActivityGoodsEditDtoList = mgtActivityEditDto.getMgtActivityGoodsEditDtoList();
+        // 如果活动商品信息不为空,则保存活动商品信息
+        if (!mgtActivityGoodsEditDtoList.isEmpty()) {
+            List<ActivityGoods> activityGoodsList = mgtActivityGoodsEditDtoList.stream().map(
+                    dto -> {
+                        ActivityGoods activityGoods = new ActivityGoods();
+                        activityGoods.setDelFlag(0);
+                        activityGoods.setGoodsId(dto.getGoodsId());
+                        activityGoods.setActivityId(activity.getActivityId());
+                        activityGoods.setActivityPrice(dto.getActivityPrice());
+                        activityGoods.setActivitySubscription(dto.getActivitySubscription());
+                        activityGoods.setActivityNumber(dto.getActivityNumber());
+                        activityGoods.setActivityDeadline(activity.getActivityEndTime());
+                        activityGoods.setSellOutFlag(0);
+                        activityGoods.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag());
+                        activityGoods.setLimitNumber(activity.getLimitNumber());
+                        return activityGoods;
+                    }
+            ).collect(Collectors.toList());
+            if (!activityGoodsList.isEmpty()) {
+                activityGoodsService.saveBatch(activityGoodsList);
+            }
+        }
+    }
+
+    /**
+     * @description  分页获取活动列表
+     * @author  jqs
+     * @date    2023/6/14 16:39
+     * @param mgtActivityPageDto
+     * @return  List<MgtActivityPageVo>
+     */
+    @Override
+    public List<MgtActivityPageVo> pageMgtActivity(Page page, MgtActivityPageDto mgtActivityPageDto){
+        List<MgtActivityPageVo> mgtActivityPageVoList = activityMapper.pageMgtActivity(page, mgtActivityPageDto);
+        return mgtActivityPageVoList;
+    }
+
+    /**
+     * @description  获取活动编辑信息
+     * @author  jqs
+     * @date    2023/6/14 17:30
+     * @param activityId
+     * @return  MgtActivityGetVo
+     */
+    @Override
+    public MgtActivityGetVo getMgtActivity(String activityId){
+        MgtActivityGetVo mgtActivityGetVo = new MgtActivityGetVo();
+        Activity activity = this.getById(activityId);
+        BeanUtils.copyProperties(activity, mgtActivityGetVo);
+        //活动关联商户
+        if(activity.getShopFlag()==2&&StringUtils.isNotBlank(activity.getApplicableShop())){
+            String applicableShop = activity.getApplicableShop();
+            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(applicableShop);
+            List<MgtSimpleShopVo> mgtSimpleShopVoList= remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+            mgtActivityGetVo.setMgtSimpleShopVosList(mgtSimpleShopVoList);
+        }
+        //活动关联商品
+        List<MgtActivityGoodsListVo> mgtActivityGoodsVoList = activityGoodsService.listVoByActivityId(activityId);
+        mgtActivityGetVo.setMgtActivityGoodsVoList(mgtActivityGoodsVoList);
+        return mgtActivityGetVo;
+    }
+
+    /**
+     * @description 平台删除活动
+     * @author  jqs
+     * @date    2023/6/14 18:12
+     * @param activityId
+     * @return  void
+     */
+    @Override
+    public void deleteMgtActivity(String activityId){
+        Activity activity = this.getById(activityId);
+        if (activity.getActivityStatus() != 0) {
+            throw new ServiceException(AppErrorConstant.ACTIVITY_ING_DELETE);
+        }
+        activity.setDelFlag(1);
+        activity.setActivityStatus(-1);
+        this.saveOrUpdate(activity);
+    }
+
+    /**
+     * @description 分页获取活动参与记录列表
+     * @param mgtActivityRecordPageDto
+     * @return MgtActivityRecordPageVo
+     * @author jqs34
+     * @date 2023/6/24 16:58
+     */
+    @Override
+    public List<MgtActivityRecordPageVo> pageMgtActivityRecord(Page page, MgtActivityRecordPageDto mgtActivityRecordPageDto){
+        if(StringUtils.isNotBlank(mgtActivityRecordPageDto.getKeyword())){
+            MgtUserIdByKeywordDto mgtUserIdByKeywordDto = new MgtUserIdByKeywordDto();
+            mgtUserIdByKeywordDto.setKeyword(mgtActivityRecordPageDto.getKeyword());
+            MgtUserIdByKeywordVo mgtUserIdByKeywordVo = remoteMemberService.getUserIdByKeyword(mgtUserIdByKeywordDto).getData();
+            if(StringUtils.isNotBlank(mgtUserIdByKeywordVo.getUserIds())){
+                mgtActivityRecordPageDto.setUserIds(mgtUserIdByKeywordVo.getUserIds());
+            }
+        }
+        List<MgtActivityRecordPageVo> activityRecordPageVoList = activityMapper.pageMgtActivityRecord(page, mgtActivityRecordPageDto);
+        if(!activityRecordPageVoList.isEmpty()){
+            // 定义变量
+            HashSet<Long> userIdSet = new HashSet<>();
+            // 遍历列表,用户 ID
+            for (MgtActivityRecordPageVo mgtActivityRecordPageVo : activityRecordPageVoList) {
+                userIdSet.add(mgtActivityRecordPageVo.getUserId());
+            }
+            // 将店铺 ID 和用户 ID 转换为逗号分隔的字符串
+            String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+            // 从远程服务获取店铺和用户信息
+            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(userJoinedString);
+            List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+            Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
+                    .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+            for (MgtActivityRecordPageVo mgtActivityRecordPageVo : activityRecordPageVoList) {
+                mgtActivityRecordPageVo.setNickName(userMap.get(mgtActivityRecordPageVo.getUserId()).getNickName()+"/"+(userMap.get(mgtActivityRecordPageVo.getUserId()).getRealName()));
+                mgtActivityRecordPageVo.setMobile(userMap.get(mgtActivityRecordPageVo.getUserId()).getUserMobile());
+            }
+        }
+        return activityRecordPageVoList;
+    }
+
+    /**
+     * @description  分页获取平台活动列表
+     * @author  jqs
+     * @date    2023/6/30 17:33
+     * @param page
+     * @param merPageDto
+     * @return  List<MerActivityPageVo>
+     */
+    @Override
+    public List<MerActivityPageVo> pagePlatformMerActivity(Page page, MerPageDto merPageDto){
+        List<MerActivityPageVo> activityPageVoList = activityMapper.pagePlatformMerActivity(page, merPageDto);
+        return activityPageVoList;
+    }
+
+    /**
+     * @description  获取活动列表
+     * @author  jqs
+     * @date    2023/7/4 15:31
+     * @param
+     * @return  List<MgtActivityListVo>
+     */
+    @Override
+    public List<MgtActivityListVo> listMgtActivity(){
+        return activityMapper.listMgtActivity();
+    }
+
+    /**
+     * @description  获取商户推荐活动
+     * @author  jqs
+     * @date    2023/7/4 18:14
+     * @param shopId
+     * @return  Activity
+     */
+    @Override
+    public Activity getRecommendActivity(Long shopId){
+        return activityMapper.getRecommendActivity(shopId);
+    }
+
+    /**
+     * @description  获取商户参与活动id
+     * @author  jqs
+     * @date    2023/7/4 19:55
+     * @param shopId
+     * @return  List<Long>
+     */
+    @Override
+    public List<String> listActivityIdByShopId(Long shopId){
+        return activityMapper.listActivityIdByShopId(shopId);
+    }
+
+    /**
+     * @description  分页获取活动列表
+     * @author  jqs
+     * @date    2023/7/5 18:45
+     * @param page
+     * @param shopId
+     * @return  List<AppActivityPageVo>
+     */
+    @Override
+    public List<AppActivityPageVo> pageAppActivity(Page page, Long shopId){
+        return activityMapper.pageAppActivity(page, shopId);
+    }
+
+    /**
+     * @description  获取用户活动商品信息
+     * @author  jqs
+     * @date    2023/7/6 16:18
+     * @param activityGoodsGetDto
+     * @return  ActivityGoodsGetVo
+     */
+    @Override
+    public ActivityGoodsGetVo getUserActivityGoods(ActivityGoodsGetDto activityGoodsGetDto){
+        ActivityGoodsGetVo activityGoodsGetVo = new ActivityGoodsGetVo();
+        String activityId = activityGoodsGetDto.getActivityId();
+        String goodsId = activityGoodsGetDto.getGoodsId();
+        Activity activity = this.getById(activityId);
+        ActivityGoods activityGoods = activityGoodsService.getByGoodsId(activityId,goodsId);
+        activityGoodsGetVo.setActivityPrice(activityGoods.getActivityPrice());
+        activityGoodsGetVo.setActivitySubscription(activityGoods.getActivitySubscription());
+        activityGoodsGetVo.setActivityStatus(activity.getActivityStatus());
+        Integer availableBuyNum = activityGoods.getActivityNumber() - activityGoods.getSalesNumber();
+        //限购判断
+        if(activityGoods.getPurchaseLimitationFlag()==1){
+            Integer buyNum = activityRecordService.getUserActivityGoodsNum(goodsId,activityId,activityGoodsGetDto.getUserId());
+            Integer limitBuyNum = activityGoods.getLimitNumber() - buyNum;
+            if(limitBuyNum<availableBuyNum){
+                availableBuyNum = limitBuyNum;
+            }
+        }
+        activityGoodsGetVo.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag());
+        activityGoodsGetVo.setAvailableBuyNum(availableBuyNum);
+        return activityGoodsGetVo;
+    }
 }

--
Gitblit v1.7.1