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{ @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 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 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 findActivitiesList(Page 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 findSignReceiveList(Page 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 columnMap = new HashMap(); columnMap.put("activity_id", actId); columnMap.put("company_id", signForUpdateDto.getCompanyId()); List 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 arrayListOld = new ArrayList<>(); Map columnMap = new HashMap(); columnMap.put("activity_id", actId); columnMap.put("company_id", updateSignAwardSetDto.getCompanyId()); List activitySignAwardSetOld = activitySignAwardSetDao.selectByMap(columnMap); if(CollUtil.isNotEmpty(activitySignAwardSetOld)) { for(ActivitySignAwardSet activitySignAwardSetUpdate : activitySignAwardSetOld) { Long actSubid = activitySignAwardSetUpdate.getId(); arrayListOld.add(actSubid); } } //修改后的奖品 List activitySignAwardSetsUpdate = updateSignAwardSetDto.getActivitySignAwardSets(); ArrayList 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 selectCouponList(Page page, CouponDto couponDto) { return activitySignReceiveRecordDao.selectCouponList(page,couponDto); } public IPage selectGoodsList(Page page, GoodsDto goodsDto) { return activitySignReceiveRecordDao.selectGoodsList(page,goodsDto); } }