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();
|
/**
|
* todo签到活动的唯一性
|
*/
|
|
//新增活动主表信息
|
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_READY);
|
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);
|
activitySignAwardSetDao.insert(activitySignAwardSetUpdate);
|
}else {
|
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);
|
}
|
|
|
|
|
|
}
|