935090232@qq.com
2021-07-09 3cd342a343fd67a32415b832abe1a39bab9e627d
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java
@@ -2,7 +2,6 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,14 +10,15 @@
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.activity.dao.ActivitySignAwardSetDao;
import com.matrix.system.activity.dto.ActivitiesListDto;
import com.matrix.system.activity.dto.AddSignAwardSetDto;
import com.matrix.system.activity.dto.BeCloseDto;
import com.matrix.system.activity.dto.BeReadyDto;
import com.matrix.system.activity.dto.DelRowDto;
import com.matrix.system.activity.dto.SignSetBasicJsonDto;
import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao;
import com.matrix.system.activity.dto.*;
import com.matrix.system.activity.entity.ActivitySignAwardSet;
import com.matrix.system.activity.vo.ActivitiesListVo;
import com.matrix.system.activity.vo.AddSignAwardSetVo;
import com.matrix.system.activity.vo.CouponVo;
import com.matrix.system.activity.vo.GoodsVo;
import com.matrix.system.activity.vo.SignReceiveListVo;
import com.matrix.system.activity.vo.SignSetBasicJsonVo;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.shopXcx.bean.ShopActivities;
@@ -27,8 +27,11 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @description 奖品设置表
@@ -42,13 +45,20 @@
    private ShopActivitiesDao shopActivitiesDao;
   @Autowired
   private ActivitySignAwardSetDao activitySignAwardSetDao;
   @Autowired
   private ActivitySignReceiveRecordDao activitySignReceiveRecordDao;
   @Transactional
   public AjaxResult activitySignAwardSetService(AddSignAwardSetDto addSignAwardSetDto) {
      //获取当前登录人员信息
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        Long companyId = user.getCompanyId();
        //签到活动的唯一性
      List<ShopActivities> shopActivitiesDone = shopActivitiesDao.selectOneByCompanyIdAndActType(companyId,ShopActivities.ACTIVITIES_TYPE_SIGN);
      if(CollUtil.isNotEmpty(shopActivitiesDone)){
         return new AjaxResult(AjaxResult.STATUS_FAIL, "签到活动只能创建一次");
      }
        //新增活动主表信息
        ShopActivities shopActivities = new ShopActivities();
        shopActivities.setActName(addSignAwardSetDto.getActName());
@@ -77,6 +87,7 @@
               activitySignAwardSet.setUpdateBy(user.getSuName());
               activitySignAwardSet.setCompanyId(companyId);
               activitySignAwardSet.setActivityId(shopActivities.getId());
               activitySignAwardSet.setAwardState(ActivitySignAwardSet.AWARDSTATE_WORK);
               activitySignAwardSetDao.insert(activitySignAwardSet);
            }
         }
@@ -100,11 +111,8 @@
        if(ObjectUtil.isEmpty(shopActivity)) {
           return AjaxResult.buildFailInstance("网络不通畅,请刷新页面");
        }
        /**
         * 未发布状态即使达到活动时间也不进入进行中状态
         */
        //未发布状态点击发布,状态变成未开始,且是开启状态
        shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_READY);
        //未发布状态点击发布,状态变成进行中,且是开启状态
        shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_ING);
        shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_OPEN);
        shopActivitiesDao.updateByModel(shopActivity);
      return AjaxResult.buildSuccessInstance("操作成功");
@@ -144,6 +152,119 @@
      return AjaxResult.buildSuccessInstance("操作成功");
   }
   public IPage<SignReceiveListVo> findSignReceiveList(Page<SignReceiveListVo> page,
         SignReceiveListDto signReceiveListDto) {
      return activitySignReceiveRecordDao.findSignReceiveList(page,signReceiveListDto);
   }
   public AjaxResult findSignForUpdate(SignForUpdateDto signForUpdateDto) {
      //设置用户公司ID
        QueryUtil.setQueryLimitCom(signForUpdateDto);
        Long actId = signForUpdateDto.getActId();
        AjaxResult result= AjaxResult.buildSuccessInstance("查询成功");
        //获取对应的活动主表信息和对应的奖品设置信息
        AddSignAwardSetVo addSignAwardSetVo = new AddSignAwardSetVo();
        ShopActivities shopActivity = shopActivitiesDao.selectById(actId);
        if(ObjectUtil.isNotEmpty(shopActivity)) {
           addSignAwardSetVo.setId(actId);
           addSignAwardSetVo.setActName(shopActivity.getActName());
           addSignAwardSetVo.setActCode(shopActivity.getActCode());
           addSignAwardSetVo.setBeginTime(shopActivity.getActBeginTime());
           addSignAwardSetVo.setEndTime(shopActivity.getActEndTime());
           String actContent = shopActivity.getActContent();
           SignSetBasicJsonVo signSetBasicJsonVo = JSON.parseObject(actContent, SignSetBasicJsonVo.class);
           addSignAwardSetVo.setSignSetBasicJsonDto(signSetBasicJsonVo);
           Map<String, Object> columnMap = new HashMap<String, Object>();
           columnMap.put("activity_id", actId);
           columnMap.put("company_id", signForUpdateDto.getCompanyId());
         List<ActivitySignAwardSet> activitySignAwardSets = activitySignAwardSetDao.selectByMap(columnMap);
         addSignAwardSetVo.setActivitySignAwardSets(activitySignAwardSets);
        }
        result.putInMap("addSignAwardSetVo", addSignAwardSetVo);
        return result;
   }
   @Transactional
   public AjaxResult updateSignAwardSet(UpdateSignAwardSetDto updateSignAwardSetDto) {
      //获取当前登录人员信息
        QueryUtil.setQueryLimitCom(updateSignAwardSetDto);
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        Long actId = updateSignAwardSetDto.getActMainId();
        Long companyId = user.getCompanyId();
        ShopActivities shopActivity = shopActivitiesDao.selectById(actId);
        //更新活动主表信息
        shopActivity.setActName(updateSignAwardSetDto.getActName());
        shopActivity.setActCode(updateSignAwardSetDto.getActCode());
        shopActivity.setActBeginTime(updateSignAwardSetDto.getBeginTime());
        shopActivity.setActEndTime(updateSignAwardSetDto.getEndTime());
        shopActivity.setCompanyId(companyId);
        shopActivity.setCreateBy(user.getSuName());
        shopActivity.setUpdateBy(user.getSuName());
        //将基本信息转换成JSON字符串存储到活动主表的act_content字段
        SignSetBasicJsonDto signSetBasicJsonDto = updateSignAwardSetDto.getSignSetBasicJsonDto();
      String json=JSON.toJSONString(signSetBasicJsonDto);
      shopActivity.setActContent(json);
      shopActivitiesDao.updateByModel(shopActivity);
      /**
       * 比较两个奖品名单,多的新增,减少的更新为已失效,不变的更新
       */
      //原有的奖品
      ArrayList<Long> arrayListOld = new ArrayList<>();
      Map<String, Object> columnMap = new HashMap<String, Object>();
       columnMap.put("activity_id", actId);
       columnMap.put("company_id", updateSignAwardSetDto.getCompanyId());
      List<ActivitySignAwardSet> activitySignAwardSetOld = activitySignAwardSetDao.selectByMap(columnMap);
      if(CollUtil.isNotEmpty(activitySignAwardSetOld)) {
         for(ActivitySignAwardSet activitySignAwardSetUpdate : activitySignAwardSetOld) {
            Long actSubid = activitySignAwardSetUpdate.getId();
            arrayListOld.add(actSubid);
         }
      }
      //修改后的奖品
      List<ActivitySignAwardSet> activitySignAwardSetsUpdate = updateSignAwardSetDto.getActivitySignAwardSets();
      ArrayList<Long> arrayListUpdate = new ArrayList<>();
      if(CollUtil.isNotEmpty(activitySignAwardSetsUpdate)) {
         for(ActivitySignAwardSet activitySignAwardSetUpdate : activitySignAwardSetsUpdate) {
            Long actSubid = activitySignAwardSetUpdate.getId();
            //如果ID为空则新增,不为空则修改
            if(ObjectUtil.isEmpty(actSubid)) {
               activitySignAwardSetUpdate.setCreateBy(user.getSuName());
               activitySignAwardSetUpdate.setCreateTime(new Date());
               activitySignAwardSetUpdate.setUpdateTime(new Date());
               activitySignAwardSetUpdate.setUpdateBy(user.getSuName());
               activitySignAwardSetUpdate.setCompanyId(companyId);
               activitySignAwardSetUpdate.setActivityId(actId);
               activitySignAwardSetUpdate.setAwardState(ActivitySignAwardSet.AWARDSTATE_WORK);
               activitySignAwardSetDao.insert(activitySignAwardSetUpdate);
            }else {
               activitySignAwardSetUpdate.setAwardState(ActivitySignAwardSet.AWARDSTATE_WORK);
               activitySignAwardSetDao.updateById(activitySignAwardSetUpdate);
               arrayListUpdate.add(actSubid);
            }
         }
      }
      //比较获取原来的比现在多出来的奖品,修改状态为失效
      boolean removeAll = arrayListOld.removeAll(arrayListUpdate);
      if(removeAll && CollUtil.isNotEmpty(arrayListOld)) {
         for(long id : arrayListOld) {
            ActivitySignAwardSet activitySignAwardSetDel = activitySignAwardSetDao.selectById(id);
            activitySignAwardSetDel.setAwardState(ActivitySignAwardSet.AWARDSTATE_UNWORK);
            activitySignAwardSetDao.updateById(activitySignAwardSetDel);
         }
      }
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功");
   }
   public IPage<CouponVo> selectCouponList(Page<CouponVo> page, CouponDto couponDto) {
      return activitySignReceiveRecordDao.selectCouponList(page,couponDto);
   }
   public IPage<GoodsVo> selectGoodsList(Page<GoodsVo> page, GoodsDto goodsDto) {
      return activitySignReceiveRecordDao.selectGoodsList(page,goodsDto);
   }