| package com.matrix.system.activity.service; | 
|   | 
| 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; | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import com.matrix.core.constance.MatrixConstance; | 
| import com.matrix.core.pojo.AjaxResult; | 
| import com.matrix.core.tools.WebUtil; | 
| import com.matrix.system.activity.dao.ActivitySignAwardSetDao; | 
| 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; | 
| import com.matrix.system.shopXcx.dao.ShopActivitiesDao; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| 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 奖品设置表 | 
|  * @author yourName | 
|  * @date 2021-03-31 16:57 | 
|  */ | 
| @Service | 
| public class ActivitySignAwardSetService  extends ServiceImpl<ActivitySignAwardSetDao, ActivitySignAwardSet>{ | 
|      | 
|     @Autowired | 
|     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()); | 
|         shopActivities.setActCode(addSignAwardSetDto.getActCode()); | 
|         shopActivities.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE); | 
|         shopActivities.setActType(ShopActivities.ACTIVITIES_TYPE_SIGN); | 
|         shopActivities.setActStatus(ShopActivities.ACTSTATUS_STATUS_RELEASE); | 
|         shopActivities.setActBeginTime(addSignAwardSetDto.getBeginTime()); | 
|         shopActivities.setActEndTime(addSignAwardSetDto.getEndTime()); | 
|         shopActivities.setCompanyId(companyId); | 
|         shopActivities.setCreateBy(user.getSuName()); | 
|         shopActivities.setUpdateBy(user.getSuName()); | 
|         //将基本信息转换成JSON字符串存储到活动主表的act_content字段 | 
|         SignSetBasicJsonDto signSetBasicJsonDto = addSignAwardSetDto.getSignSetBasicJsonDto(); | 
|         String json=JSON.toJSONString(signSetBasicJsonDto); | 
|         shopActivities.setActContent(json); | 
|         int insert = shopActivitiesDao.insert(shopActivities); | 
|         if(insert > 0){ | 
|             //新增活动奖品信息 | 
|             List<ActivitySignAwardSet> activitySignAwardSets = addSignAwardSetDto.getActivitySignAwardSets(); | 
|             if(CollUtil.isNotEmpty(activitySignAwardSets)) { | 
|                 for(ActivitySignAwardSet activitySignAwardSet : activitySignAwardSets) { | 
|                     activitySignAwardSet.setCreateBy(user.getSuName()); | 
|                     activitySignAwardSet.setCreateTime(new Date()); | 
|                     activitySignAwardSet.setUpdateTime(new Date()); | 
|                     activitySignAwardSet.setUpdateBy(user.getSuName()); | 
|                     activitySignAwardSet.setCompanyId(companyId); | 
|                     activitySignAwardSet.setActivityId(shopActivities.getId()); | 
|                     activitySignAwardSet.setAwardState(ActivitySignAwardSet.AWARDSTATE_WORK); | 
|                     activitySignAwardSetDao.insert(activitySignAwardSet); | 
|                 } | 
|             } | 
|         }else{ | 
|             return new AjaxResult(AjaxResult.STATUS_FAIL, "保存失败"); | 
|         } | 
|         return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功"); | 
|     } | 
|   | 
|     public IPage<ActivitiesListVo> findActivitiesList(Page<ActivitiesListVo> page, | 
|             ActivitiesListDto activitiesListDto) { | 
|         return shopActivitiesDao.findActivitiesList(page,activitiesListDto); | 
|     } | 
|   | 
|     @Transactional | 
|     public AjaxResult beReady(BeReadyDto beReadyDto) { | 
|         //设置用户公司ID | 
|         QueryUtil.setQueryLimitCom(beReadyDto); | 
|         Long actId = beReadyDto.getActId(); | 
|         ShopActivities shopActivity = shopActivitiesDao.selectById(actId); | 
|         if(ObjectUtil.isEmpty(shopActivity)) { | 
|             return AjaxResult.buildFailInstance("网络不通畅,请刷新页面"); | 
|         } | 
|         //未发布状态点击发布,状态变成进行中,且是开启状态 | 
|         shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_ING); | 
|         shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_OPEN); | 
|         shopActivitiesDao.updateByModel(shopActivity); | 
|         return AjaxResult.buildSuccessInstance("操作成功"); | 
|     } | 
|   | 
|     public AjaxResult delRow(DelRowDto delRowDto) { | 
|         //设置用户公司ID | 
|         QueryUtil.setQueryLimitCom(delRowDto); | 
|         Long actId = delRowDto.getActId(); | 
|         ShopActivities shopActivity = shopActivitiesDao.selectById(actId); | 
|         if(ObjectUtil.isEmpty(shopActivity)) { | 
|             return AjaxResult.buildFailInstance("网络不通畅,请刷新页面"); | 
|         } | 
|         /** | 
|          * 删除状态更新状态为已删除,只能查看活动统计 | 
|          */ | 
|         shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_DEL); | 
|         shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE); | 
|         shopActivitiesDao.updateByModel(shopActivity); | 
|         return AjaxResult.buildSuccessInstance("操作成功"); | 
|     } | 
|   | 
|     public AjaxResult beClose(BeCloseDto beCloseDto) { | 
|         //设置用户公司ID | 
|         QueryUtil.setQueryLimitCom(beCloseDto); | 
|         Long actId = beCloseDto.getActId(); | 
|         ShopActivities shopActivity = shopActivitiesDao.selectById(actId); | 
|         if(ObjectUtil.isEmpty(shopActivity)) { | 
|             return AjaxResult.buildFailInstance("网络不通畅,请刷新页面"); | 
|         } | 
|         /** | 
|          * 关闭状态 | 
|          */ | 
|         shopActivity.setActStatus(ShopActivities.ACTSTATUS_STATUS_END); | 
|         shopActivity.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE); | 
|         shopActivitiesDao.updateByModel(shopActivity); | 
|         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); | 
|     } | 
|   | 
|   | 
|   | 
|   | 
|    | 
| } |