|  |  |  | 
|---|
|  |  |  | package com.matrix.system.activity.action; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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.matrix.core.constance.MatrixConstance; | 
|---|
|  |  |  | import com.matrix.core.pojo.AjaxResult; | 
|---|
|  |  |  | import com.matrix.core.tools.StringUtils; | 
|---|
|  |  |  | 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.core.tools.WebUtil; | 
|---|
|  |  |  | import com.matrix.system.activity.dao.ActivitySignAwardSetDao; | 
|---|
|  |  |  | import com.matrix.system.activity.dto.*; | 
|---|
|  |  |  | import com.matrix.system.activity.entity.ActivitySignAwardSet; | 
|---|
|  |  |  | import com.matrix.system.activity.service.ActivitySignAwardSetService; | 
|---|
|  |  |  | import com.matrix.system.activity.vo.ActivitiesListVo; | 
|---|
|  |  |  | import com.matrix.system.activity.vo.*; | 
|---|
|  |  |  | 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 io.swagger.annotations.ApiOperation; | 
|---|
|  |  |  | import io.swagger.annotations.ApiResponse; | 
|---|
|  |  |  | import io.swagger.annotations.ApiResponses; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @description 奖品设置表 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ActivitySignAwardSetService activitySignAwardSetService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ShopActivitiesDao shopActivitiesDao; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ActivitySignAwardSetDao activitySignAwardSetDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 马上创建转盘抽奖 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping(value = "/createLuckyDrawSet") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult createLuckyDrawSet() { | 
|---|
|  |  |  | //获取当前登录人员信息 | 
|---|
|  |  |  | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | Long companyId = user.getCompanyId(); | 
|---|
|  |  |  | //签到活动的唯一性 | 
|---|
|  |  |  | List<ShopActivities> shopActivitiesDone = shopActivitiesDao.selectOneByCompanyIdAndActType(companyId,ShopActivities.ACTIVITIES_TYPE_LUCKYDRAW); | 
|---|
|  |  |  | if(CollUtil.isNotEmpty(shopActivitiesDone)){ | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_FAIL, "转盘抽奖已经创建,请去活动管理菜单查看"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_SUCCESS, ""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 新增转盘抽奖 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping(value = "/addLuckyDrawSet") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult addLuckyDrawSet(@RequestBody AddLuckyDrawSetDto addLuckyDrawSetDto) { | 
|---|
|  |  |  | //获取当前登录人员信息 | 
|---|
|  |  |  | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | Long companyId = user.getCompanyId(); | 
|---|
|  |  |  | //转盘抽奖活动的唯一性 | 
|---|
|  |  |  | List<ShopActivities> shopActivitiesDone = shopActivitiesDao.selectOneByCompanyIdAndActType(companyId,ShopActivities.ACTIVITIES_TYPE_LUCKYDRAW); | 
|---|
|  |  |  | if(CollUtil.isNotEmpty(shopActivitiesDone)){ | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_FAIL, "转盘抽奖只能创建一次"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //新增活动主表信息 | 
|---|
|  |  |  | ShopActivities shopActivities = new ShopActivities(); | 
|---|
|  |  |  | shopActivities.setActName(addLuckyDrawSetDto.getActName()); | 
|---|
|  |  |  | shopActivities.setActCode(addLuckyDrawSetDto.getActCode()); | 
|---|
|  |  |  | shopActivities.setIsStart(ShopActivities.ACTIVITIES_STATUS_CLOSE); | 
|---|
|  |  |  | shopActivities.setActType(ShopActivities.ACTIVITIES_TYPE_LUCKYDRAW); | 
|---|
|  |  |  | shopActivities.setActStatus(ShopActivities.ACTSTATUS_STATUS_RELEASE); | 
|---|
|  |  |  | shopActivities.setActBeginTime(addLuckyDrawSetDto.getBeginTime()); | 
|---|
|  |  |  | shopActivities.setActEndTime(addLuckyDrawSetDto.getEndTime()); | 
|---|
|  |  |  | shopActivities.setCompanyId(companyId); | 
|---|
|  |  |  | shopActivities.setCreateBy(user.getSuName()); | 
|---|
|  |  |  | shopActivities.setUpdateBy(user.getSuName()); | 
|---|
|  |  |  | //将基本信息转换成JSON字符串存储到活动主表的act_content字段 | 
|---|
|  |  |  | LuckyDrawBasicJsonDto luckyDrawBasicJsonDto = addLuckyDrawSetDto.getLuckyDrawBasicJsonDto(); | 
|---|
|  |  |  | String json= JSON.toJSONString(luckyDrawBasicJsonDto); | 
|---|
|  |  |  | shopActivities.setActContent(json); | 
|---|
|  |  |  | int insert = shopActivitiesDao.insert(shopActivities); | 
|---|
|  |  |  | if(insert > 0){ | 
|---|
|  |  |  | //新增活动奖品信息 | 
|---|
|  |  |  | List<ActivitySignAwardSet> activitySignAwardSets = addLuckyDrawSetDto.getLuckyDrawAwardSets(); | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //生成中奖顺序 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Long actId = shopActivities.getId(); | 
|---|
|  |  |  | List<ActivitySignAwardSet> activitySignAwardSetList = activitySignAwardSetDao | 
|---|
|  |  |  | .selectActivitySignAwardSetByActIDAndCompanyIdAndAwardType(actId, companyId, ActivitySignAwardSet.AWARDSTATE_WORK,ActivitySignAwardSet.AWARDRULE_CUMULATIVEDAY); | 
|---|
|  |  |  | if(CollUtil.isNotEmpty(activitySignAwardSetList)){ | 
|---|
|  |  |  | String awrdList = getAwrdList(activitySignAwardSets).toString(); | 
|---|
|  |  |  | ShopActivities shopActivitiesAward = shopActivitiesDao.selectById(actId); | 
|---|
|  |  |  | String actContent = shopActivitiesAward.getActContent(); | 
|---|
|  |  |  | LuckyDrawAwardCodeListVo luckyDrawAwardCodeListVo = JSON.parseObject(actContent, LuckyDrawAwardCodeListVo.class); | 
|---|
|  |  |  | luckyDrawAwardCodeListVo.setAwardLine(awrdList); | 
|---|
|  |  |  | luckyDrawAwardCodeListVo.setAwrdLineIndex(0); | 
|---|
|  |  |  | String awardJson= JSON.toJSONString(luckyDrawAwardCodeListVo); | 
|---|
|  |  |  | shopActivitiesAward.setActContent(awardJson); | 
|---|
|  |  |  | shopActivitiesDao.updateByModel(shopActivitiesAward); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_FAIL, "保存失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //所有奖品ID后的集合 | 
|---|
|  |  |  | public List getAwrdList(List<ActivitySignAwardSet> activitySignAwardSets){ | 
|---|
|  |  |  | //插入所有奖品ID后的集合 | 
|---|
|  |  |  | LinkedList awardIdFinalList = new LinkedList<>(); | 
|---|
|  |  |  | if(CollUtil.isNotEmpty(activitySignAwardSets)){ | 
|---|
|  |  |  | //总数 | 
|---|
|  |  |  | int maxCount = 0; | 
|---|
|  |  |  | HashMap<Long, ActivitySignAwardSet> integerStringHashMap = new HashMap<>(); | 
|---|
|  |  |  | for(ActivitySignAwardSet activitySignAwardSet : activitySignAwardSets){ | 
|---|
|  |  |  | //总共派发数量 | 
|---|
|  |  |  | int awardInventoryCnt = activitySignAwardSet.getAwardInventoryCnt(); | 
|---|
|  |  |  | integerStringHashMap.put(activitySignAwardSet.getId(),activitySignAwardSet); | 
|---|
|  |  |  | maxCount = maxCount + awardInventoryCnt; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | HashMap<Long, ActivitySignAwardSet> sortHashMap = sortHashMap(integerStringHashMap,2); | 
|---|
|  |  |  | HashMap<Long, ActivitySignAwardSet> sortHashMapAec = sortHashMap(integerStringHashMap,1); | 
|---|
|  |  |  | //获取奖品最多的ID | 
|---|
|  |  |  | Long maxAwardIds = sortHashMap.keySet().stream().findFirst().get(); | 
|---|
|  |  |  | Long minAwardIds = sortHashMapAec.keySet().stream().findFirst().get(); | 
|---|
|  |  |  | //获取最大长度的奖品集合 | 
|---|
|  |  |  | List awardIdList = new LinkedList<Long>(); | 
|---|
|  |  |  | for(int i = 0; i< maxCount ; i++){ | 
|---|
|  |  |  | awardIdList.add(maxAwardIds); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Iterator<Map.Entry<Long, ActivitySignAwardSet>> entries = sortHashMap.entrySet().iterator(); | 
|---|
|  |  |  | //插入奖品 | 
|---|
|  |  |  | while (entries.hasNext()) { | 
|---|
|  |  |  | Map.Entry<Long, ActivitySignAwardSet> entry = entries.next(); | 
|---|
|  |  |  | ActivitySignAwardSet activitySignAwardSetDone = entry.getValue(); | 
|---|
|  |  |  | int awardInventoryCnt = activitySignAwardSetDone.getAwardInventoryCnt(); | 
|---|
|  |  |  | Long awardIdNew = entry.getKey(); | 
|---|
|  |  |  | if(awardIdNew != maxAwardIds){ | 
|---|
|  |  |  | //分段之后的List | 
|---|
|  |  |  | List splitLists = getSplitList(awardInventoryCnt, awardIdList); | 
|---|
|  |  |  | for(int j = 0; j<awardInventoryCnt; j++){ | 
|---|
|  |  |  | List splitList = (List) splitLists.get(j); | 
|---|
|  |  |  | //中间插入对应的奖品ID,如果和maxAwardIds相同,则索引+1 | 
|---|
|  |  |  | List<Long> listInsert = getListInsert(maxAwardIds, awardIdNew, splitList); | 
|---|
|  |  |  | if(minAwardIds == awardIdNew){ | 
|---|
|  |  |  | awardIdFinalList.addAll(listInsert); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return awardIdFinalList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //中间插入对应的奖品ID,如果和maxAwardIds相同,则索引+1 | 
|---|
|  |  |  | public static List<Long> getListInsert(Long awardOld,Long awardNew,List splitList){ | 
|---|
|  |  |  | //中间位置索引 | 
|---|
|  |  |  | LinkedList<Integer> indexs = new LinkedList<>(); | 
|---|
|  |  |  | int groupFlag = splitList.size() % 2 == 0 ? (splitList.size() / 2) : (splitList.size() / 2 + 1); | 
|---|
|  |  |  | for(int j = groupFlag-1; j < splitList.size();j++){ | 
|---|
|  |  |  | if(splitList.get(j) == awardOld){ | 
|---|
|  |  |  | indexs.add(j); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(CollUtil.isNotEmpty(indexs)){ | 
|---|
|  |  |  | splitList.set(indexs.get(0),awardNew); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | splitList.add(groupFlag,awardNew); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return splitList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //等份平分数组,最后剩余的添加到倒数第二个集合中 | 
|---|
|  |  |  | public static List<List<Long>> getSplitList(int splitNum, List<Long> list) { | 
|---|
|  |  |  | LinkedList<List<Long>> splitList = new LinkedList<>(); | 
|---|
|  |  |  | // groupFlag >= 1 | 
|---|
|  |  |  | int groupFlag = list.size() % splitNum == 0 ? (list.size() / splitNum) : (list.size() / splitNum); | 
|---|
|  |  |  | if(groupFlag * splitNum < list.size()){ | 
|---|
|  |  |  | for (int j = 1; j <= splitNum +1; j++) { | 
|---|
|  |  |  | if ((j * groupFlag) <= list.size() ) { | 
|---|
|  |  |  | splitList.add(list.subList(j * groupFlag - groupFlag, j * groupFlag)); | 
|---|
|  |  |  | } else if ((j * groupFlag) > list.size()) { | 
|---|
|  |  |  | splitList.add(list.subList(j * groupFlag - groupFlag, list.size())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else if(groupFlag * splitNum > list.size()){ | 
|---|
|  |  |  | for (int j = 1; j < splitNum; j++) { | 
|---|
|  |  |  | if ((j * groupFlag) <= list.size() ) { | 
|---|
|  |  |  | splitList.add(list.subList(j * groupFlag - groupFlag, j * groupFlag)); | 
|---|
|  |  |  | } else if ((j * groupFlag) > list.size()) { | 
|---|
|  |  |  | splitList.add(list.subList(j * groupFlag - groupFlag, list.size())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | for (int j = 1; j <= splitNum; j++) { | 
|---|
|  |  |  | if ((j * groupFlag) <= list.size() ) { | 
|---|
|  |  |  | splitList.add(list.subList(j * groupFlag - groupFlag, j * groupFlag)); | 
|---|
|  |  |  | } else if ((j * groupFlag) > list.size()) { | 
|---|
|  |  |  | splitList.add(list.subList(j * groupFlag - groupFlag, list.size())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return splitList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //对于奖品排序 1:升序进行排,2是倒序就是o2-o1 | 
|---|
|  |  |  | public static HashMap<Long, ActivitySignAwardSet> sortHashMap(HashMap<Long, ActivitySignAwardSet> map,int type) { | 
|---|
|  |  |  | // 首先拿到 map 的键值对集合 | 
|---|
|  |  |  | Set<Map.Entry<Long, ActivitySignAwardSet>> entrySet = map.entrySet(); | 
|---|
|  |  |  | // 将 set 集合转为 List 集合,为什么,为了使用工具类的排序方法 | 
|---|
|  |  |  | List<Map.Entry<Long, ActivitySignAwardSet>> list = new ArrayList<Map.Entry<Long, ActivitySignAwardSet>>(entrySet); | 
|---|
|  |  |  | // 使用 Collections 集合工具类对 list 进行排序,排序规则使用匿名内部类来实现 | 
|---|
|  |  |  | Collections.sort(list, new Comparator<Map.Entry<Long, ActivitySignAwardSet>>() { | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public int compare(Map.Entry<Long, ActivitySignAwardSet> o1, Map.Entry<Long, ActivitySignAwardSet> o2) { | 
|---|
|  |  |  | if(type == 2){ | 
|---|
|  |  |  | //按照要求根据 升序进行排,如果是倒序就是o2-o1 | 
|---|
|  |  |  | return o2.getValue().getAwardInventoryCnt() - o1.getValue().getAwardInventoryCnt(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return o1.getValue().getAwardInventoryCnt() - o2.getValue().getAwardInventoryCnt(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | //创建一个新的有序的 HashMap 子类的集合 | 
|---|
|  |  |  | LinkedHashMap<Long, ActivitySignAwardSet> linkedHashMap = new LinkedHashMap<Long, ActivitySignAwardSet>(); | 
|---|
|  |  |  | //将 List 中的数据存储在 LinkedHashMap 中 | 
|---|
|  |  |  | for (Map.Entry<Long, ActivitySignAwardSet> entry : list) { | 
|---|
|  |  |  | linkedHashMap.put(entry.getKey(), entry.getValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //返回结果 | 
|---|
|  |  |  | return linkedHashMap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | *进入修改 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "进入修改") | 
|---|
|  |  |  | @PostMapping(value = "/findLuckyDrawForUpdate") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult findLuckyDrawForUpdate(@RequestBody LuckyDrawForUpdateDto luckyDrawForUpdateDto) { | 
|---|
|  |  |  | //设置用户公司ID | 
|---|
|  |  |  | QueryUtil.setQueryLimitCom(luckyDrawForUpdateDto); | 
|---|
|  |  |  | Long actId = luckyDrawForUpdateDto.getActId(); | 
|---|
|  |  |  | AjaxResult result= AjaxResult.buildSuccessInstance("查询成功"); | 
|---|
|  |  |  | //获取对应的活动主表信息和对应的奖品设置信息 | 
|---|
|  |  |  | AddLuckyDrawSetVo addLuckyDrawSetVo = new AddLuckyDrawSetVo(); | 
|---|
|  |  |  | ShopActivities shopActivity = shopActivitiesDao.selectById(actId); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(shopActivity)) { | 
|---|
|  |  |  | addLuckyDrawSetVo.setId(actId); | 
|---|
|  |  |  | addLuckyDrawSetVo.setActName(shopActivity.getActName()); | 
|---|
|  |  |  | addLuckyDrawSetVo.setActCode(shopActivity.getActCode()); | 
|---|
|  |  |  | addLuckyDrawSetVo.setBeginTime(shopActivity.getActBeginTime()); | 
|---|
|  |  |  | addLuckyDrawSetVo.setEndTime(shopActivity.getActEndTime()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String actContent = shopActivity.getActContent(); | 
|---|
|  |  |  | LuckyDrawBasicJsonVo luckyDrawBasicJsonVo = JSON.parseObject(actContent, LuckyDrawBasicJsonVo.class); | 
|---|
|  |  |  | addLuckyDrawSetVo.setLuckyDrawBasicJsonVo(luckyDrawBasicJsonVo); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Map<String, Object> columnMap = new HashMap<String, Object>(); | 
|---|
|  |  |  | columnMap.put("activity_id", actId); | 
|---|
|  |  |  | columnMap.put("company_id", luckyDrawForUpdateDto.getCompanyId()); | 
|---|
|  |  |  | List<ActivitySignAwardSet> activityAwardSets = activitySignAwardSetDao.selectByMap(columnMap); | 
|---|
|  |  |  | addLuckyDrawSetVo.setActivityluckyDrawSets(activityAwardSets); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | result.putInMap("addLuckyDrawSetVo", addLuckyDrawSetVo); | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 保存 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping(value = "/updateLuckyDrawSet") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult updateLuckyDrawSet(@RequestBody UpdateLuckyDrawSetDto updateLuckyDrawSetDto) { | 
|---|
|  |  |  | //获取当前登录人员信息 | 
|---|
|  |  |  | QueryUtil.setQueryLimitCom(updateLuckyDrawSetDto); | 
|---|
|  |  |  | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | Long actId = updateLuckyDrawSetDto.getActMainId(); | 
|---|
|  |  |  | Long companyId = user.getCompanyId(); | 
|---|
|  |  |  | ShopActivities shopActivity = shopActivitiesDao.selectById(actId); | 
|---|
|  |  |  | //更新活动主表信息 | 
|---|
|  |  |  | shopActivity.setActName(updateLuckyDrawSetDto.getActName()); | 
|---|
|  |  |  | shopActivity.setActCode(updateLuckyDrawSetDto.getActCode()); | 
|---|
|  |  |  | shopActivity.setActBeginTime(updateLuckyDrawSetDto.getBeginTime()); | 
|---|
|  |  |  | shopActivity.setActEndTime(updateLuckyDrawSetDto.getEndTime()); | 
|---|
|  |  |  | shopActivity.setCompanyId(companyId); | 
|---|
|  |  |  | shopActivity.setCreateBy(user.getSuName()); | 
|---|
|  |  |  | shopActivity.setUpdateBy(user.getSuName()); | 
|---|
|  |  |  | //将基本信息转换成JSON字符串存储到活动主表的act_content字段 | 
|---|
|  |  |  | LuckyDrawBasicJsonDto luckyDrawBasicJsonDto = updateLuckyDrawSetDto.getLuckyDrawBasicJsonDto(); | 
|---|
|  |  |  | String json=JSON.toJSONString(luckyDrawBasicJsonDto); | 
|---|
|  |  |  | 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", updateLuckyDrawSetDto.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 = updateLuckyDrawSetDto.getActivityAwardSets(); | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //生成中奖顺序 | 
|---|
|  |  |  | List<ActivitySignAwardSet> activitySignAwardSetList = activitySignAwardSetDao | 
|---|
|  |  |  | .selectActivitySignAwardSetByActIDAndCompanyIdAndAwardType(actId, companyId, ActivitySignAwardSet.AWARDSTATE_WORK,ActivitySignAwardSet.AWARDRULE_CUMULATIVEDAY); | 
|---|
|  |  |  | if(CollUtil.isNotEmpty(activitySignAwardSetList)){ | 
|---|
|  |  |  | String awrdList = getAwrdList(activitySignAwardSetList).toString(); | 
|---|
|  |  |  | ShopActivities shopActivitiesAward = shopActivitiesDao.selectById(actId); | 
|---|
|  |  |  | String actContent = shopActivitiesAward.getActContent(); | 
|---|
|  |  |  | LuckyDrawAwardCodeListVo luckyDrawAwardCodeListVo = JSON.parseObject(actContent, LuckyDrawAwardCodeListVo.class); | 
|---|
|  |  |  | luckyDrawAwardCodeListVo.setAwardLine(awrdList); | 
|---|
|  |  |  | luckyDrawAwardCodeListVo.setAwrdLineIndex(0); | 
|---|
|  |  |  | String awardJson= JSON.toJSONString(luckyDrawAwardCodeListVo); | 
|---|
|  |  |  | shopActivitiesAward.setActContent(awardJson); | 
|---|
|  |  |  | shopActivitiesDao.updateByModel(shopActivitiesAward); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public IPage<ActivitiesListVo> findActivitiesList(Page<ActivitiesListVo> page, | 
|---|
|  |  |  | ActivitiesListDto activitiesListDto) { | 
|---|
|  |  |  | return shopActivitiesDao.findActivitiesList(page,activitiesListDto); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 马上创建签到活动 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping(value = "/createSignAwardSet") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult createSignAwardSet() { | 
|---|
|  |  |  | //获取当前登录人员信息 | 
|---|
|  |  |  | 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, "签到活动已经创建,请去活动管理菜单查看"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_SUCCESS, ""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 新增签到活动 | 
|---|
|  |  |  | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult addSignAwardSet(@RequestBody AddSignAwardSetDto addSignAwardSetDto) { | 
|---|
|  |  |  | return activitySignAwardSetService.activitySignAwardSetService(addSignAwardSetDto); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 查询优惠券 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "查询优惠券") | 
|---|
|  |  |  | @ApiResponses({ | 
|---|
|  |  |  | @ApiResponse(code = 200, message = "OK",  response = CouponVo.class) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @PostMapping(value = "/selectCouponList") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult selectCouponList(@RequestBody CouponDto couponDto) { | 
|---|
|  |  |  | //设置用户公司ID | 
|---|
|  |  |  | QueryUtil.setQueryLimitCom(couponDto); | 
|---|
|  |  |  | //排序 | 
|---|
|  |  |  | if(StringUtils.isBlank(couponDto.getSort())){ | 
|---|
|  |  |  | couponDto.setSort("create_time"); | 
|---|
|  |  |  | couponDto.setOrder("desc"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Page<CouponVo> page = new Page(couponDto.getPageNum(), couponDto.getPageSize()); | 
|---|
|  |  |  | IPage<CouponVo> rows = activitySignAwardSetService.selectCouponList(page,couponDto); | 
|---|
|  |  |  | AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 查询商品 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "查询商品") | 
|---|
|  |  |  | @ApiResponses({ | 
|---|
|  |  |  | @ApiResponse(code = 200, message = "OK",  response = GoodsVo.class) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @PostMapping(value = "/selectGoodsList") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult selectGoodsList(@RequestBody GoodsDto goodsDto) { | 
|---|
|  |  |  | //设置用户公司ID | 
|---|
|  |  |  | QueryUtil.setQueryLimitCom(goodsDto); | 
|---|
|  |  |  | //排序 | 
|---|
|  |  |  | if(StringUtils.isBlank(goodsDto.getSort())){ | 
|---|
|  |  |  | goodsDto.setSort("create_time"); | 
|---|
|  |  |  | goodsDto.setOrder("desc"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Page<GoodsVo> page = new Page(goodsDto.getPageNum(), goodsDto.getPageSize()); | 
|---|
|  |  |  | IPage<GoodsVo> rows = activitySignAwardSetService.selectGoodsList(page,goodsDto); | 
|---|
|  |  |  | AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | AjaxResult beClose(@RequestBody BeCloseDto beCloseDto) { | 
|---|
|  |  |  | return activitySignAwardSetService.beClose(beCloseDto); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 活动统计 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "活动统计") | 
|---|
|  |  |  | @ApiResponses({ | 
|---|
|  |  |  | @ApiResponse(code = 200, message = "OK",  response = SignReceiveListVo.class) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @PostMapping(value = "/findSignReceiveList") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult findSignReceiveList(@RequestBody SignReceiveListDto signReceiveListDto) { | 
|---|
|  |  |  | //设置用户公司ID | 
|---|
|  |  |  | QueryUtil.setQueryLimitCom(signReceiveListDto); | 
|---|
|  |  |  | //排序 | 
|---|
|  |  |  | if(StringUtils.isBlank(signReceiveListDto.getSort())){ | 
|---|
|  |  |  | signReceiveListDto.setSort("create_time"); | 
|---|
|  |  |  | signReceiveListDto.setOrder("desc"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Page<SignReceiveListVo> page = new Page(signReceiveListDto.getPageNum(), signReceiveListDto.getPageSize()); | 
|---|
|  |  |  | IPage<SignReceiveListVo> rows = activitySignAwardSetService.findSignReceiveList(page,signReceiveListDto); | 
|---|
|  |  |  | AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | *进入修改 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "进入修改") | 
|---|
|  |  |  | @PostMapping(value = "/findSignForUpdate") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult findSignForUpdate(@RequestBody SignForUpdateDto signForUpdateDto) { | 
|---|
|  |  |  | return activitySignAwardSetService.findSignForUpdate(signForUpdateDto); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 保存 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping(value = "/updateSignAwardSet") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult updateSignAwardSet(@RequestBody UpdateSignAwardSetDto updateSignAwardSetDto) { | 
|---|
|  |  |  | return activitySignAwardSetService.updateSignAwardSet(updateSignAwardSetDto); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|