From e53fcbe9fe844b7788b29c5106c1ac24d17c5535 Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Sat, 08 May 2021 22:40:19 +0800 Subject: [PATCH] Merge branch 'score_shop' into api_score_meger --- zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java | 19 zq-erp/src/main/resources/static/images/luckyDraw/oAward.png | 0 zq-erp/src/main/java/com/matrix/system/activity/dto/LuckyDrawForUpdateDto.java | 17 zq-erp/src/main/resources/templates/views/admin/activity/activity-luckyDraw-update.html | 1116 ++++++++++ zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignSuccessVo.java | 9 zq-erp/src/main/java/com/matrix/system/activity/vo/LuckyDrawBasicJsonVo.java | 51 zq-erp/src/main/resources/config/db/increment/签到活动.sql | 11 zq-erp/src/main/resources/static/images/luckyDraw/line.png | 0 zq-erp/src/main/resources/config/test/application.properties | 2 zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-logistics-info.html | 44 zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateGroupBuyDTO.java | 2 zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java | 3 zq-erp/src/main/java/com/matrix/system/activity/vo/AddSignAwardSetVo.java | 9 zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html | 13 zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java | 11 zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SeeAwardTextVo.java | 29 zq-erp/src/main/java/com/matrix/system/activity/vo/AddLuckyDrawSetVo.java | 34 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/SeeAwardTextDto.java | 8 zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignWriteoffDao.xml | 13 zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawInfoVo.java | 44 zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java | 6 zq-erp/src/main/java/com/matrix/system/activity/dto/AddLuckyDrawSetDto.java | 28 zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawSuccessVo.java | 150 + zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignWriteoff.java | 5 zq-erp/src/main/resources/static/images/luckyDraw/zhuanpanchoujian.png | 0 zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java | 2 zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignAwardListVo.java | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java | 6 zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml | 10 zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff.html | 33 zq-erp/src/main/java/com/matrix/system/activity/vo/CouponVo.java | 5 zq-erp/src/main/java/com/matrix/system/common/actions/CommonAction.java | 34 zq-erp/src/main/resources/templates/views/admin/activity/activity-luckyDraw.html | 1027 ++++++++++ zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java | 3 zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java | 171 - zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java | 9 zq-erp/src/test/java/com/matrix/四月份家居产品业绩恢复.java | 61 zq-erp/src/main/resources/static/images/luckyDraw/xiexiecanyu.png | 0 zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html | 76 zq-erp/src/main/resources/static/images/luckyDraw/zhuanpan.png | 0 zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java | 64 zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java | 3 zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawBasicInfoJsonVo.java | 60 zq-erp/src/main/java/com/matrix/core/tools/DingDingRobotUtil.java | 1 zq-erp/src/main/resources/static/images/luckyDraw/start.png | 0 zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff-info.html | 3 zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java | 2 zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html | 18 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java | 25 zq-erp/src/main/java/com/matrix/system/activity/vo/ZjrVo.java | 7 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java | 1 zq-erp/src/test/java/com/matrix/FenxiaoSoreInitTest.java | 765 ++++++ zq-erp/src/main/java/com/matrix/system/shopXcx/quartz/ShopActivityTimeOutQuartz.java | 2 zq-erp/src/main/resources/templates/views/admin/activity/activity-luckdraw-receive.html | 279 ++ zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml | 11 zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffListVo.java | 4 zq-erp/src/main/resources/config/db/increment/2021-04-20bug.sql | 5 zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignWriteoffDao.java | 2 zq-erp/src/main/resources/static/images/luckyDraw/sAward.png | 0 zq-erp/src/main/java/com/matrix/system/activity/dto/LuckyDrawBasicJsonDto.java | 53 zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java | 17 zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java | 392 +++ zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesLuckydrawAction.java | 542 +++++ zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java | 9 zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html | 17 zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateLuckyDrawSetDto.java | 34 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml | 11 zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java | 10 zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml | 7 zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateSecKillDTO.java | 68 zq-erp/src/main/resources/static/images/luckyDraw/tAward.png | 0 zq-erp/src/test/java/com/matrix/JyyTests.java | 13 zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html | 42 zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java | 6 zq-erp/src/main/java/com/matrix/system/activity/vo/LuckyDrawAwardCodeListVo.java | 57 zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateSignAwardSetDto.java | 12 zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml | 24 zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java | 6 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java | 451 +++- zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffVo.java | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java | 1 zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java | 4 85 files changed, 5,580 insertions(+), 519 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java b/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java index 3cbe384..c960084 100644 --- a/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java +++ b/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java @@ -7,6 +7,7 @@ import com.matrix.core.tools.LogUtil; import com.matrix.system.shopXcx.mqTask.*; import com.matrix.system.wechart.templateMsg.Task.UniformMsgSentTask; +import com.rabbitmq.client.DeliverCallback; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -43,9 +44,12 @@ return new ScoreOrderTask(); } - - @Bean + DeliverCallback OrderDingDingNoticeTask() { + return new OrderDingDingNoticeTask(); + } + + OrderTask OrderrCreateTask() { return new OrderTask(); } @@ -95,6 +99,7 @@ taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,OrderrCreateTask())); taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SALES_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,SalesOrderTask())); taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SCORE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,ScoreOrderTask())); + taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.DINGDING_NOTICE + evn,MQTaskRouting.CREATE_ORDER + evn, OrderDingDingNoticeTask())); rabiitMqTemplate.binding(taskList); @@ -103,4 +108,5 @@ } + } diff --git a/zq-erp/src/main/java/com/matrix/core/tools/DingDingRobotUtil.java b/zq-erp/src/main/java/com/matrix/core/tools/DingDingRobotUtil.java index 894b644..6cab70c 100644 --- a/zq-erp/src/main/java/com/matrix/core/tools/DingDingRobotUtil.java +++ b/zq-erp/src/main/java/com/matrix/core/tools/DingDingRobotUtil.java @@ -70,6 +70,7 @@ response = httpclient.execute(httppost); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String result = EntityUtils.toString(response.getEntity(), "utf-8"); + LogUtil.debug("发送钉钉结果"+result); } } catch (IOException e) { e.printStackTrace(); diff --git a/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java index 997821c..6caec1a 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/action/ActivitySignAwardSetAction.java @@ -1,30 +1,30 @@ 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.CouponDto; -import com.matrix.system.activity.dto.DelRowDto; -import com.matrix.system.activity.dto.GoodsDto; -import com.matrix.system.activity.dto.SignForUpdateDto; -import com.matrix.system.activity.dto.SignReceiveListDto; -import com.matrix.system.activity.dto.UpdateSignAwardSetDto; +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.CouponVo; -import com.matrix.system.activity.vo.GoodsVo; -import com.matrix.system.activity.vo.SignReceiveListVo; +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 奖品设置表 @@ -37,6 +37,370 @@ @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, ""); + } /** * 新增签到活动 diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java index bff7cc7..1061314 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignAwardSetDao.java @@ -17,4 +17,10 @@ List<ActivitySignAwardSetVo> selectListByActIDAndCompanyId(@Param("actId")Long actId, @Param("companyId")Long companyId,@Param("awardState")int awardstateWork); + List<ActivitySignAwardSetVo> selectListByActIDAndCompanyIdAndAwardType(@Param("actId")Long actId, @Param("companyId")Long companyId + ,@Param("awardState")int awardstateWork,@Param("awardRule")int awardRule); + + List<ActivitySignAwardSet> selectActivitySignAwardSetByActIDAndCompanyIdAndAwardType(@Param("actId")Long actId, @Param("companyId")Long companyId + ,@Param("awardState")int awardstateWork,@Param("awardRule")int awardRule); + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java index 41a6db3..b7c5eb1 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignRecordDao.java @@ -21,4 +21,7 @@ @Param("userId")Long userId, @Param("format")Date format); List<ActivitySignRecordVo> selectRecordByMonth(@Param("actId")Long actId, @Param("userId")Long userId, @Param("date") DateTime date); + + List<ActivitySignRecord> selectListByActIdAndUserIdLikesignTime(@Param("actId")long actId, + @Param("userId")Long userId, @Param("format")Date format); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignWriteoffDao.java b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignWriteoffDao.java index 660ab82..2e1477b 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignWriteoffDao.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/dao/ActivitySignWriteoffDao.java @@ -25,4 +25,6 @@ ZjrVo selectUsernameByUserId(@Param("userId")Long userId, @Param("receiveId")Long receiveId); ShopDeliveryInfo selectShopDeliveryInfoByLogisticsId(@Param("logisticsId")Integer logisticsId); + + ActivitySignWriteoff selectActivitySignWriteoffByUserIDAndReceiveId(@Param("userId")Long userId, @Param("receiveId")long receiveId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/AddLuckyDrawSetDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/AddLuckyDrawSetDto.java new file mode 100644 index 0000000..b559a2c --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/AddLuckyDrawSetDto.java @@ -0,0 +1,28 @@ +package com.matrix.system.activity.dto; + +import com.matrix.system.activity.entity.ActivitySignAwardSet; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@ApiModel(value = "AddLuckyDrawSetDto", description = "查询参数") +public class AddLuckyDrawSetDto { + + @ApiModelProperty(value ="活动名称") + private String actName; + @ApiModelProperty(value ="活动编码") + private String actCode; + @ApiModelProperty(value ="活动开始时间") + private Date beginTime; + @ApiModelProperty(value ="活动结束时间") + private Date endTime; + + private LuckyDrawBasicJsonDto luckyDrawBasicJsonDto; + + private List<ActivitySignAwardSet> luckyDrawAwardSets; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/LuckyDrawBasicJsonDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/LuckyDrawBasicJsonDto.java new file mode 100644 index 0000000..f1ba92d --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/LuckyDrawBasicJsonDto.java @@ -0,0 +1,53 @@ +package com.matrix.system.activity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "LuckyDrawBasicJsonDto", description = "查询参数") +public class LuckyDrawBasicJsonDto { + + @ApiModelProperty(value ="头部图片") + private String imageUrlHead; + @ApiModelProperty(value ="开始按钮") + private String imageUrlTitle; + @ApiModelProperty(value ="转盘背景") + private String imageUrlButton; + @ApiModelProperty(value ="状态图片") + private String imageUrlState; + @ApiModelProperty(value ="奖品划分线") + private String imageLine; + + @ApiModelProperty(value ="规则内容") + private String ruleExplain; + @ApiModelProperty(value ="字体颜色") + private String typographyColor; + @ApiModelProperty(value ="背景颜色") + private String backgroundColor; + @ApiModelProperty(value ="字体大小") + private Integer typographyNum; + @ApiModelProperty(value ="字体透明度") + private Integer typographyLight; + + /** + * 抽奖规则 + */ + //每人每日有10次无门槛抽奖机会 + private Integer wmkcjjh; + //可用积分兑换1次抽奖机会, + private Integer dhycjfs; + // 每日最多兑换 + //10 + //次抽奖机会 + private Integer jfdhcs; + // 每人最多可中奖 + //10 + //次 + private Integer zzjcs; + // 总中奖率 + //10 + //% + private Integer zzjl; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/LuckyDrawForUpdateDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/LuckyDrawForUpdateDto.java new file mode 100644 index 0000000..1d02334 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/LuckyDrawForUpdateDto.java @@ -0,0 +1,17 @@ +package com.matrix.system.activity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "LuckyDrawForUpdateDto", description = "参数") +public class LuckyDrawForUpdateDto { + + @ApiModelProperty(value ="活动主表ID") + private Long actId; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateLuckyDrawSetDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateLuckyDrawSetDto.java new file mode 100644 index 0000000..536191a --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateLuckyDrawSetDto.java @@ -0,0 +1,34 @@ +package com.matrix.system.activity.dto; + +import com.matrix.system.activity.entity.ActivitySignAwardSet; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@ApiModel(value = "UpdateLuckyDrawSetDto", description = "查询参数") +public class UpdateLuckyDrawSetDto { + + @ApiModelProperty(value ="活动名称") + private String actName; + @ApiModelProperty(value ="活动编码") + private String actCode; + @ApiModelProperty(value ="活动开始时间") + private Date beginTime; + @ApiModelProperty(value ="活动结束时间") + private Date endTime; + + private LuckyDrawBasicJsonDto luckyDrawBasicJsonDto; + + private List<ActivitySignAwardSet> activityAwardSets; + + @ApiModelProperty(value ="活动主表ID") + private Long actMainId; + + @ApiModelProperty(hidden = true) + private Long companyId; + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateSignAwardSetDto.java b/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateSignAwardSetDto.java index 20134c2..11ec9f6 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateSignAwardSetDto.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/dto/UpdateSignAwardSetDto.java @@ -11,23 +11,23 @@ @Data @ApiModel(value = "UpdateSignAwardSetDto", description = "查询参数") public class UpdateSignAwardSetDto { - + @ApiModelProperty(value ="活动名称") - private String actName; + private String actName; @ApiModelProperty(value ="活动编码") private String actCode; @ApiModelProperty(value ="活动开始时间") private Date beginTime; @ApiModelProperty(value ="活动结束时间") private Date endTime; - + private SignSetBasicJsonDto signSetBasicJsonDto; - + private List<ActivitySignAwardSet> activitySignAwardSets; - + @ApiModelProperty(value ="活动主表ID") private Long actMainId; - + @ApiModelProperty(hidden = true) private Long companyId; diff --git a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java index 985978f..3d30f87 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignAwardSet.java @@ -146,6 +146,8 @@ @ApiModelProperty(value ="客服微信") private String wechatImg; + @ApiModelProperty(value ="客服电话") + private String customerPhone; /** * 积分数量 diff --git a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java index ab7a432..07a2563 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignReceiveRecord.java @@ -51,7 +51,7 @@ private Long awardId; /** - * 是否已领取(1:待领取2:已领取 3:待配送 4:待收货) + * 是否已领取(1:待领取2:已领取 3:待配送 4:待收货 5:已失效) */ @@ -61,6 +61,7 @@ public static final int STATE_DONE = 2; public static final int STATE_THREE = 3; public static final int STATE_FOUR = 4; + public static final int STATE_FIVE = 5; /** * 核销码 diff --git a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignWriteoff.java b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignWriteoff.java index febff5f..e4435f5 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignWriteoff.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/entity/ActivitySignWriteoff.java @@ -66,13 +66,14 @@ private Date winTime; /** - * 状态(1:待兑换 2:待发货 3:已兑换 ) + * 状态(1:待兑换 2:待发货 3:已兑换 4:已失效 ) */ private Integer state; public static final int STATE_ONE = 1; public static final int STATE_TWO = 2; public static final int STATE_THREE = 3; - + public static final int STATE_FOUR = 4; + /** * 中奖者ID */ diff --git a/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java index 01910f4..905c4fa 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignAwardSetService.java @@ -53,10 +53,12 @@ //获取当前登录人员信息 SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); Long companyId = user.getCompanyId(); - /** - * todo签到活动的唯一性 - */ - + //签到活动的唯一性 + 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()); @@ -109,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("操作成功"); diff --git a/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java index 3774bde..b6d7560 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java @@ -1,6 +1,7 @@ package com.matrix.system.activity.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -24,9 +25,11 @@ import com.matrix.system.activity.vo.ZjrVo; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.bean.SystemDictionary; +import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.SystemDictionaryDao; import com.matrix.system.hive.action.util.QueryUtil; import com.matrix.system.hive.dao.SysVipInfoDao; +import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService; import com.matrix.system.shopXcx.bean.ShopActivities; import com.matrix.system.shopXcx.bean.ShopDeliveryInfo; import com.matrix.system.shopXcx.bean.ShopLogisticsInfo; @@ -65,6 +68,8 @@ ShopDeliveryInfoDao shopDeliveryInfoDao; @Autowired ShopLogisticsInfoDao shopLogisticsInfoDao; + @Autowired + private WxShopLogisticsQueryService wxShopLogisticsQueryService; public IPage<SignWriteoffListVo> findSignWriteoffList(Page<SignWriteoffListVo> page, SignWriteoffListDto signWriteoffListDto) { @@ -108,20 +113,24 @@ //物流跟踪 Integer logisticsId = activitySignWriteoffLogistics.getLogisticsId(); - if(ObjectUtil.isNotEmpty(logisticsId)) { - List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(logisticsId); - if(CollUtil.isNotEmpty(shopLogisticsInfos)) { - ArrayList<LogisticsVo> logisticsVos = new ArrayList<>(); - for(ShopLogisticsInfo shopLogistics : shopLogisticsInfos) { - LogisticsVo logisticsVo = new LogisticsVo(); - logisticsVo.setContent(shopLogistics.getDescribe()); - logisticsVo.setTimestamp(shopLogistics.getLogisticsTime()); - logisticsVos.add(logisticsVo); - } - signWriteoffVo.setActivities(logisticsVos); - } - } - + ShopDeliveryInfo shopDeliveryInfo = shopDeliveryInfoDao.selectById(logisticsId); + if(ObjectUtil.isNotEmpty(shopDeliveryInfo)){ + signWriteoffVo.setLogisticsNum(shopDeliveryInfo.getWaybillNo()); + signWriteoffVo.setLogisticsCompany(shopDeliveryInfo.getLogisticsCompany()); + //查看物流信息 + wxShopLogisticsQueryService.selectLogisticsInfo(shopDeliveryInfo); + List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId()); + if(CollUtil.isNotEmpty(shopLogisticsInfos)) { + ArrayList<LogisticsVo> logisticsVos = new ArrayList<>(); + for(ShopLogisticsInfo shopLogistics : shopLogisticsInfos) { + LogisticsVo logisticsVo = new LogisticsVo(); + logisticsVo.setContent(shopLogistics.getDescribe()); + logisticsVo.setTimestamp(shopLogistics.getLogisticsTime()); + logisticsVos.add(logisticsVo); + } + signWriteoffVo.setActivities(logisticsVos); + } + } } } result.putInMap("signWriteoffVo", signWriteoffVo); @@ -137,18 +146,45 @@ String writeOffCode = writeoffCodeSubmitDto.getWriteOffCode(); /** * 验证核销码是不是匹配 + * 只能核销一次 * 更新核销记录 * 更新领取记录 */ //验证核销码是不是匹配 ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectById(writeoffId); + if(ActivitySignWriteoff.STATE_ONE != activitySignWriteoff.getState()){ + return new AjaxResult(AjaxResult.STATUS_FAIL, "兑奖码已失效"); + } if(ObjectUtil.isNotEmpty(activitySignWriteoff)) { String writeoffCodeReal = activitySignWriteoff.getWriteoffCode(); if(!writeoffCodeReal.equals(writeOffCode)) { return new AjaxResult(AjaxResult.STATUS_FAIL, "兑奖码无效"); } } - //更新核销记录 + //线下兑换失效 + Long awardId = activitySignWriteoff.getAwardId(); + ActivitySignAwardSet activitySignAwardSet = activitySignAwardSetDao.selectById(awardId); + if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSet.getAwardWay() + || ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSet.getAwardWay()){ + Date prizeStartTime = activitySignAwardSet.getPrizeStartTime(); + if(DateUtil.date().getTime() < prizeStartTime.getTime()){ + return new AjaxResult(AjaxResult.STATUS_FAIL, "兑奖还没开始呢!"); + } + Date prizeEndTime = activitySignAwardSet.getPrizeEndTime(); + if(DateUtil.date().getTime() > prizeEndTime.getTime()){ + Long receiveId = activitySignWriteoff.getReceiveId(); + ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId); + if(ObjectUtil.isNotEmpty(activitySignReceiveRecord)){ + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_FIVE); + } + activitySignReceiveRecordDao.updateById(activitySignReceiveRecord); + + activitySignWriteoff.setState(ActivitySignWriteoff.STATE_FOUR); + activitySignWriteoffDao.updateById(activitySignWriteoff); + return new AjaxResult(AjaxResult.STATUS_FAIL, "已超出兑奖结束时间!"); + } + } + //更新核销记录 activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE); activitySignWriteoff.setWriteoffTime(new Date()); activitySignWriteoff.setWriteoffUser(sysUsers.getSuName()); @@ -187,6 +223,7 @@ shopDeliveryInfo.setLogisticsCompany(systemDictionary.getName()); shopDeliveryInfo.setLogisticsCompanyCode(systemDictionary.getCode()); shopDeliveryInfo.setDeliveryWay("物流配送"); + shopDeliveryInfo.setLogisticsStatus(AppConstance.LOGISTICS_STATUS_OF_RECEIVE); shopDeliveryInfo.setWaybillNo(logisticsSubmitDto.getKddh()); shopDeliveryInfo.setUpdateBy(sysUsers.getSuName()); @@ -194,96 +231,20 @@ shopDeliveryInfo.setDeliveryTime(new Date()); shopDeliveryInfoDao.insert(shopDeliveryInfo); -// Integer id = shopDeliveryInfo.getId(); -// if(ObjectUtil.isNotEmpty(id)) { -// List<ShopLogisticsInfo> shopLogisticsList = new ArrayList<ShopLogisticsInfo>(); -// AjaxResult result = new AjaxResult(); -// Map<String, String> logisticsInfo = new HashMap<String, String>(); -// try { -// if (shopDeliveryInfo == null) { -// return new AjaxResult(AjaxResult.STATUS_FAIL, "找不到发货信息"); -// } -// if (!StringUtils.isNotBlank(shopDeliveryInfo.getWaybillNo()) || !StringUtils.isNotBlank(shopDeliveryInfo.getLogisticsCompanyCode())) { -// return new AjaxResult(AjaxResult.STATUS_FAIL, "物流公司信息为空"); -// } -// logisticsInfo.put("logisticsCompany", shopDeliveryInfo.getLogisticsCompany()); -// logisticsInfo.put("waybillNo", shopDeliveryInfo.getWaybillNo()); -// -// //如果已经签收直接查数据库 -// if (AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR.equals(shopDeliveryInfo.getLogisticsStatus())) { -// -// List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId()); -// logisticsInfo.put("logisticsStatus", String.valueOf(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR)); -// result.setStatus(AjaxResult.STATUS_SUCCESS); -// result.setRows(shopLogisticsInfos); -// result.putInMap("logisticsInfo", logisticsInfo); -// return result; -// } -// Map<String, String> param = new HashMap<String, String>(); -// param.put("ShipperCode", shopDeliveryInfo.getLogisticsCompanyCode()); -// param.put("LogisticCode", shopDeliveryInfo.getWaybillNo()); -// Map<String, String> paramsUrl = getparams(param); -// LogUtil.info("物流查询参数" + paramsUrl); -// String logisticsResult = HttpCurlUtil.sendPost(logisticsUrl, paramsUrl); -// LogUtil.info("查询物流返回信息" + logisticsResult); -// LogisticsInfoVo logisticsInfoVo = JSON.parseObject(logisticsResult, LogisticsInfoVo.class); -// if (logisticsInfoVo.isSuccess()) { -// ShopDeliveryInfo shopDelivery = new ShopDeliveryInfo(); -// shopDelivery.setLogisticsStatus(Integer.valueOf(logisticsInfoVo.getState())); -// shopDelivery.setId(shopDeliveryInfo.getId()); -// logisticsInfo.put("logisticsStatus", logisticsInfoVo.getState()); -// //更新物流状态 -// shopDeliveryInfoDao.updateByModel(shopDelivery); -// if (CollectionUtils.isNotEmpty(logisticsInfoVo.getTraces())) { -// List<Map<String, String>> mapTraces = logisticsInfoVo.getTraces(); -// for (int i = 0; i < mapTraces.size(); i++) { -// ShopLogisticsInfo shopLogisticsInfo = new ShopLogisticsInfo(); -// shopLogisticsInfo.setCreateBy(AppConstance.SYSTEM_USER); -// shopLogisticsInfo.setUpdateBy(AppConstance.SYSTEM_USER); -// shopLogisticsInfo.setLogisticsTime(mapTraces.get(i).get("AcceptTime")); -// String acceptStation = mapTraces.get(i).get("AcceptStation"); -// shopLogisticsInfo.setDescribe(acceptStation); -// shopLogisticsInfo.setDelieryId(shopDeliveryInfo.getId()); -// if (acceptStation.indexOf(AppConstance.KDN_IS_SIGN) != -1) { -// shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_SIGN_FOR); -// } else if (acceptStation.indexOf(AppConstance.KDN_IS_RECEIVE) != -1) { -// shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_RECEIVE); -// } else if (acceptStation.indexOf(AppConstance.KDN_IS_ON_WAY) != -1) { -// shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_ON_WAY); -// } else if (acceptStation.indexOf(AppConstance.KDN_IS_MISTAKE) != -1) { -// shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_MISTAKE); -// } else { -// shopLogisticsInfo.setState(AppConstance.LOGISTICS_STATUS_OF_NONE); -// } -// shopLogisticsList.add(shopLogisticsInfo); -// } -// shopLogisticsInfoDao.deleteByDelieryId(shopDeliveryInfo.getId()); -// if (CollectionUtils.isNotEmpty(shopLogisticsList)) { -// shopLogisticsInfoDao.batchInsert(shopLogisticsList); -// } -// } -// } else { -// throw new GlobleException(logisticsInfoVo.getReason()); -// } -// -// } catch (Exception e) { -// throw new GlobleException("物流信息查询失败"); -// } - //更新核销记录 - activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE); - activitySignWriteoff.setWriteoffTime(new Date()); - activitySignWriteoff.setWriteoffUser(sysUsers.getSuName()); - activitySignWriteoff.setWriteoffUserid(sysUsers.getSuId()); - activitySignWriteoff.setLogisticsId(shopDeliveryInfo.getId()); - activitySignWriteoffDao.updateById(activitySignWriteoff); - //更新领取记录 - ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId); - activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_THREE); - activitySignReceiveRecord.setConsignee(logisticsSubmitDto.getShr()); - activitySignReceiveRecord.setConsigneeAddress(logisticsSubmitDto.getShdz()); - activitySignReceiveRecord.setConsigneePhone(logisticsSubmitDto.getLxdh()); - activitySignReceiveRecordDao.updateById(activitySignReceiveRecord); -// } + //更新核销记录 + activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE); + activitySignWriteoff.setWriteoffTime(new Date()); + activitySignWriteoff.setWriteoffUser(sysUsers.getSuName()); + activitySignWriteoff.setWriteoffUserid(sysUsers.getSuId()); + activitySignWriteoff.setLogisticsId(shopDeliveryInfo.getId()); + activitySignWriteoffDao.updateById(activitySignWriteoff); + //更新领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_FOUR); + activitySignReceiveRecord.setConsignee(logisticsSubmitDto.getShr()); + activitySignReceiveRecord.setConsigneeAddress(logisticsSubmitDto.getShdz()); + activitySignReceiveRecord.setConsigneePhone(logisticsSubmitDto.getLxdh()); + activitySignReceiveRecordDao.updateById(activitySignReceiveRecord); return new AjaxResult(AjaxResult.STATUS_SUCCESS, "发货成功"); } diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java index 0ff34af..822e56e 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/ActivitiesListVo.java @@ -66,7 +66,7 @@ * 开始时间 */ @ApiModelProperty(value = "开始时间") - @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date actBeginTime; @@ -74,7 +74,7 @@ * 结束时间 */ @ApiModelProperty(value = "结束时间") - @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date actEndTime; /** * 活动状态 diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/AddLuckyDrawSetVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/AddLuckyDrawSetVo.java new file mode 100644 index 0000000..f8ff24e --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/AddLuckyDrawSetVo.java @@ -0,0 +1,34 @@ +package com.matrix.system.activity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.matrix.system.activity.entity.ActivitySignAwardSet; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class AddLuckyDrawSetVo { + /** + * 主键 + */ + private Long id; + + @ApiModelProperty(value ="活动名称") + private String actName; + @ApiModelProperty(value ="活动编码") + private String actCode; + @ApiModelProperty(value ="活动开始时间") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") + private Date beginTime; + @ApiModelProperty(value ="活动结束时间") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") + private Date endTime; + + private LuckyDrawBasicJsonVo luckyDrawBasicJsonVo; + + private List<ActivitySignAwardSet> activityluckyDrawSets; + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/AddSignAwardSetVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/AddSignAwardSetVo.java index 6dc0d02..5421c58 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/vo/AddSignAwardSetVo.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/AddSignAwardSetVo.java @@ -1,13 +1,12 @@ package com.matrix.system.activity.vo; -import java.util.Date; -import java.util.List; - import com.fasterxml.jackson.annotation.JsonFormat; import com.matrix.system.activity.entity.ActivitySignAwardSet; - import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import java.util.Date; +import java.util.List; @Data public class AddSignAwardSetVo { @@ -21,8 +20,10 @@ @ApiModelProperty(value ="活动编码") private String actCode; @ApiModelProperty(value ="活动开始时间") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date beginTime; @ApiModelProperty(value ="活动结束时间") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date endTime; private SignSetBasicJsonVo signSetBasicJsonDto; diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/CouponVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/CouponVo.java index 47ee4c1..39b64fa 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/vo/CouponVo.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/CouponVo.java @@ -1,9 +1,10 @@ package com.matrix.system.activity.vo; -import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import java.util.Date; @Data public class CouponVo { @@ -23,7 +24,7 @@ * 结束时间 */ @ApiModelProperty(value = "结束时间") - @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date endTime; } diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/LuckyDrawAwardCodeListVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/LuckyDrawAwardCodeListVo.java new file mode 100644 index 0000000..80eb8b6 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/LuckyDrawAwardCodeListVo.java @@ -0,0 +1,57 @@ +package com.matrix.system.activity.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class LuckyDrawAwardCodeListVo { + + @ApiModelProperty(value ="头部图片") + private String imageUrlHead; + @ApiModelProperty(value ="开始按钮") + private String imageUrlTitle; + @ApiModelProperty(value ="转盘背景") + private String imageUrlButton; + @ApiModelProperty(value ="状态图片") + private String imageUrlState; + @ApiModelProperty(value ="奖品划分线") + private String imageLine; + + @ApiModelProperty(value ="规则内容") + private String ruleExplain; + @ApiModelProperty(value ="字体颜色") + private String typographyColor; + @ApiModelProperty(value ="背景颜色") + private String backgroundColor; + @ApiModelProperty(value ="字体大小") + private Integer typographyNum; + @ApiModelProperty(value ="字体透明度") + private Integer typographyLight; + + + //@ApiModelProperty(value ="中奖顺序") + private String awardLine; + //@ApiModelProperty(value ="中奖顺序索引") + private Integer awrdLineIndex; + + /** + * 抽奖规则 + */ + //每人每日有10次无门槛抽奖机会 + private Integer wmkcjjh; + //可用积分兑换1次抽奖机会, + private Integer dhycjfs; + // 每日最多兑换 + //10 + //次抽奖机会 + private Integer jfdhcs; + // 每人最多可中奖 + //10 + //次 + private Integer zzjcs; + // 总中奖率 + //10 + //% + private Integer zzjl; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/LuckyDrawBasicJsonVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/LuckyDrawBasicJsonVo.java new file mode 100644 index 0000000..f945879 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/LuckyDrawBasicJsonVo.java @@ -0,0 +1,51 @@ +package com.matrix.system.activity.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class LuckyDrawBasicJsonVo { + + @ApiModelProperty(value ="头部图片") + private String imageUrlHead; + @ApiModelProperty(value ="开始按钮") + private String imageUrlTitle; + @ApiModelProperty(value ="转盘背景") + private String imageUrlButton; + @ApiModelProperty(value ="状态图片") + private String imageUrlState; + @ApiModelProperty(value ="奖品划分线") + private String imageLine; + + @ApiModelProperty(value ="规则内容") + private String ruleExplain; + @ApiModelProperty(value ="字体颜色") + private String typographyColor; + @ApiModelProperty(value ="背景颜色") + private String backgroundColor; + @ApiModelProperty(value ="字体大小") + private Integer typographyNum; + @ApiModelProperty(value ="字体透明度") + private Integer typographyLight; + + /** + * 抽奖规则 + */ + //每人每日有10次无门槛抽奖机会 + private Integer wmkcjjh; + //可用积分兑换1次抽奖机会, + private Integer dhycjfs; + // 每日最多兑换 + //10 + //次抽奖机会 + private Integer jfdhcs; + // 每人最多可中奖 + //10 + //次 + private Integer zzjcs; + // 总中奖率 + //10 + //% + private Integer zzjl; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java index d43dbf6..7b7d959 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignReceiveListVo.java @@ -12,22 +12,29 @@ * 主键 */ private Long id; - + //活动类型 + private int actType; + @ApiModelProperty(value = "用户") private String nickName; @ApiModelProperty(value = "签到时间") - @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date reciveTime; @ApiModelProperty(value = "连续签到天数") private Integer cumulativeDay; + + @ApiModelProperty(value = "数量") + private Integer scoreCnt; @ApiModelProperty(value = "奖励类型") private String awardType; @ApiModelProperty(value = "获得奖励") private String awardName; + @ApiModelProperty(value = "优惠券名") + private String couponName; @ApiModelProperty(value ="奖项规则(1:每日奖励(默认)2:累计签到天数)") private int awardRule; diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffListVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffListVo.java index 1bf2d2f..5358c7a 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffListVo.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffListVo.java @@ -16,7 +16,7 @@ * 核销时间 */ @ApiModelProperty(value ="核销时间") - @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date writeoffTime; /** @@ -47,7 +47,7 @@ * 中奖时间 */ @ApiModelProperty(value ="中奖时间") - @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date winTime; /** diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffVo.java index af7d6a6..9dea112 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffVo.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/SignWriteoffVo.java @@ -39,7 +39,7 @@ private int state; @ApiModelProperty(value ="兑奖时间") - @JsonFormat(pattern = "yyyy-MM-dd hh:mm", timezone="GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date djsj; @ApiModelProperty(value ="收货人") diff --git a/zq-erp/src/main/java/com/matrix/system/activity/vo/ZjrVo.java b/zq-erp/src/main/java/com/matrix/system/activity/vo/ZjrVo.java index bbef08c..e6d9c7d 100644 --- a/zq-erp/src/main/java/com/matrix/system/activity/vo/ZjrVo.java +++ b/zq-erp/src/main/java/com/matrix/system/activity/vo/ZjrVo.java @@ -1,11 +1,10 @@ package com.matrix.system.activity.vo; -import java.util.Date; - import com.fasterxml.jackson.annotation.JsonFormat; - import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import java.util.Date; @Data public class ZjrVo { @@ -13,7 +12,7 @@ private String zjr; @ApiModelProperty(value ="中奖时间") - @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") private Date zjsj; } diff --git a/zq-erp/src/main/java/com/matrix/system/common/actions/CommonAction.java b/zq-erp/src/main/java/com/matrix/system/common/actions/CommonAction.java index 3ad4df2..e790d7c 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/actions/CommonAction.java +++ b/zq-erp/src/main/java/com/matrix/system/common/actions/CommonAction.java @@ -5,10 +5,7 @@ import com.matrix.core.constance.SystemErrorCode; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; -import com.matrix.core.tools.LogUtil; -import com.matrix.core.tools.RSAUtils; -import com.matrix.core.tools.StringUtils; -import com.matrix.core.tools.WebUtil; +import com.matrix.core.tools.*; import com.matrix.core.web.BaseAction; import com.matrix.system.common.authority.DefaultAuthorityManager; import com.matrix.system.common.authority.strategy.AccountPasswordLogin; @@ -23,13 +20,11 @@ import com.matrix.system.hive.statistics.StatisticsBusinessDataJob; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import java.security.Key; import java.util.Map; +import java.util.Objects; /** * @description 通用控制器,本action未经session过验证器 @@ -39,6 +34,7 @@ */ @RequestMapping(value = "/common") @Controller +@CrossOrigin(origins = "*", maxAge = 3600) public class CommonAction extends BaseAction { @Autowired @@ -262,4 +258,26 @@ + @Autowired + + + /** + * 官网联系我们通知 + */ + @RequestMapping(value = "/gwLinkUs") + public @ResponseBody + AjaxResult gwLinkUs(@RequestBody Map<String , Object> param) { + + String title = "hive新客户在官网提交联系请求"; + if(Objects.nonNull(param.get("name"))){ + String content = "hive=>name:" + param.get("name") + " tel:" + param.get("tel") ; + DingDingRobotUtil.sendLink("https://oapi.dingtalk.com/robot/send?access_token=62bb902f0e3945f0ece31306b99abae043fc69a66da0ef04d89fd20bf58d88d8", content, title, "", "www.baidu.com"); + + } + + return AjaxResult.buildSuccessInstance("提交成功"); + } + + + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java b/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java index fcd90d7..894cdf2 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java +++ b/zq-erp/src/main/java/com/matrix/system/common/constance/AppConstance.java @@ -580,6 +580,12 @@ + /** + * 钉钉通知token + */ + public static final String WX_ORDER_NOTICE_DINGDING_TOKEN = "wxOrderNoticeDingdingToken"; + + diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java index 5446b22..1abccec 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java @@ -64,4 +64,6 @@ List<OrderDetailItemVo> selectApiOrderDetailItemsByOrderId(@Param("orderId") Long orderId); List<ErpOrderDetailItemVo> selectErpOrderItemByOrderId(String orderId); + + List<SysOrderItem> selectDgd(); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java index dde86bb..c241c7e 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java @@ -10,7 +10,6 @@ import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; -import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.hive.bean.MoneyCardUse; import com.matrix.system.hive.bean.MoneyCardUseFlow; import com.matrix.system.hive.bean.SysVipInfo; @@ -160,12 +159,12 @@ //设置支付状态为支付成功 modifyMap.put("payStatus", ShopOrder.ORDER_PAY_STATUS_SUCCESS); //设置订单状态 - if (ShopOrder.ORDER_TYPE_GOODS == order.getOrderType()) { + if (ShopOrder.SHIPPING_METHOD_WL == order.getShippingMethod()) { //如果是商品订单则进入待发货 modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_WAIT_SEND); - } else { - //如果是服务订单则进入待评价 - modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_WAIT_REMARK); + } else if (ShopOrder.SHIPPING_METHOD_MDZT == order.getShippingMethod()) { + //如果是门店自提则进入待收款 + modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_WAIT_RECEIVE); } shopOrderDao.updateByMap(modifyMap); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesLuckydrawAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesLuckydrawAction.java new file mode 100644 index 0000000..c54e9ac --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesLuckydrawAction.java @@ -0,0 +1,542 @@ +package com.matrix.system.shopXcx.api.action; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.matrix.component.redis.RedisUserLoginUtils; +import com.matrix.core.pojo.AjaxResult; +import com.matrix.core.tools.StringUtils; +import com.matrix.system.activity.dao.ActivitySignAwardSetDao; +import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao; +import com.matrix.system.activity.dao.ActivitySignRecordDao; +import com.matrix.system.activity.dao.ActivitySignWriteoffDao; +import com.matrix.system.activity.entity.ActivitySignAwardSet; +import com.matrix.system.activity.entity.ActivitySignReceiveRecord; +import com.matrix.system.activity.entity.ActivitySignRecord; +import com.matrix.system.activity.entity.ActivitySignWriteoff; +import com.matrix.system.common.constance.AppConstance; +import com.matrix.system.hive.bean.SysVipInfo; +import com.matrix.system.score.dao.ScoreVipDetailDao; +import com.matrix.system.score.entity.ScoreVipDetail; +import com.matrix.system.score.service.ScoreVipDetailService; +import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService; +import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil; +import com.matrix.system.shopXcx.api.vo.ActivitySignAwardSetVo; +import com.matrix.system.shopXcx.api.vo.LuckyDrawBasicInfoJsonVo; +import com.matrix.system.shopXcx.api.vo.LuckyDrawInfoVo; +import com.matrix.system.shopXcx.api.vo.LuckyDrawSuccessVo; +import com.matrix.system.shopXcx.bean.ShopActivities; +import com.matrix.system.shopXcx.bean.ShopCoupon; +import com.matrix.system.shopXcx.bean.ShopCouponRecord; +import com.matrix.system.shopXcx.dao.*; +import io.swagger.annotations.Api; +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.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Api(tags = "转盘抽奖活动接口类") +@RestController +@RequestMapping(value = "/wxapi/luckydraw") +public class WxShopActivitiesLuckydrawAction { + + @Autowired + private ShopActivitiesDao shopActivitiesDao; + + @Autowired + private RedisUserLoginUtils redisUserLoginUtils; + + @Autowired + private ActivitySignAwardSetDao activitySignAwardSetDao; + + @Autowired + private ActivitySignReceiveRecordDao activitySignReceiveRecordDao; + + @Autowired + private ActivitySignWriteoffDao activitySignWriteoffDao; + + @Autowired + private ActivitySignRecordDao activitySignRecordDao; + + @Autowired + ShopDeliveryInfoDao shopDeliveryInfoDao; + + @Autowired + private ShopLogisticsInfoDao shopLogisticsInfoDao; + @Autowired + private ShopReceiveAddressDao shopReceiveAddressDao; + + @Autowired + private WxShopLogisticsQueryService wxShopLogisticsQueryService; + @Autowired + private ScoreVipDetailService scoreVipDetailService; + @Autowired + private ShopCouponDao shopCouponDao; + @Autowired + private WxShopCouponUtil wxShopCouponUtil; + @Autowired + private ShopCouponRecordDao shopCouponRecordDao; + @Autowired + private ScoreVipDetailDao scoreVipDetailDao; + + @ApiOperation(value = "获取抽奖基本信息", notes = "") + @ApiResponses({ + @ApiResponse(code = 200, message = "ok", response = LuckyDrawInfoVo.class) + }) + @GetMapping(value = "/getLuckydrawBasicInfo") + public AjaxResult getLuckydrawBasicInfo() { + //获取登录人信息 + SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class); + Long companyId = loginUser.getCompanyId(); + Long userId = loginUser.getId(); + //获取抽奖活动的信息 + LuckyDrawInfoVo luckyDrawInfoVo = new LuckyDrawInfoVo(); + AjaxResult ajaxResult = new AjaxResult(); + + ShopActivities shopActivities = shopActivitiesDao.selectOneByCompanyIdAndActTypeAndActStatus(companyId,ShopActivities.ACTIVITIES_TYPE_LUCKYDRAW,ShopActivities.ACTSTATUS_STATUS_ING); + if(ObjectUtil.isEmpty(shopActivities)){ + ajaxResult = AjaxResult.buildFailInstance("活动还没有开始"); + ajaxResult.setData(luckyDrawInfoVo); + return ajaxResult; + } + Long actId = shopActivities.getId(); + luckyDrawInfoVo.setActName(shopActivities.getActName()); + luckyDrawInfoVo.setActCode(shopActivities.getActCode()); + luckyDrawInfoVo.setId(shopActivities.getId()); + String actContent = shopActivities.getActContent(); + LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); + luckyDrawInfoVo.setLuckyDrawBasicInfoJsonVo(luckyDrawBasicInfoJsonVo); + + List<ActivitySignAwardSetVo> activitySignAwardSetVos = activitySignAwardSetDao + .selectListByActIDAndCompanyId(actId,companyId, ActivitySignAwardSet.AWARDSTATE_WORK); + luckyDrawInfoVo.setActivitySignAwardSetVos(activitySignAwardSetVos); + + /** + * 今日是否能参与 + * 用户今日剩余抽奖次数 + * 今日参与次数<每日允许最大参与次数都可以抽奖 + */ + //获取活动设置的参与次数 + Integer wmkcjjh = luckyDrawBasicInfoJsonVo.getWmkcjjh(); + //获取今日参与次数 + List<ActivitySignRecord> activityRecords = activitySignRecordDao.selectListByActIdAndUserIdLikesignTime(actId,userId,new Date()); + if(CollUtil.isNotEmpty(activityRecords)){ + if(activityRecords.size() >= wmkcjjh){ + luckyDrawInfoVo.setJoinState(LuckyDrawInfoVo.JOINSTATE_NOT); + luckyDrawInfoVo.setLuckyDrawTime(0); + }else{ + luckyDrawInfoVo.setJoinState(LuckyDrawInfoVo.JOINSTATE_YES); + luckyDrawInfoVo.setLuckyDrawTime(wmkcjjh-activityRecords.size()); + } + }else{ + luckyDrawInfoVo.setJoinState(LuckyDrawInfoVo.JOINSTATE_YES); + luckyDrawInfoVo.setLuckyDrawTime(wmkcjjh); + } + + //获取用户当前积分 + int totalScore = scoreVipDetailDao.selectUserTotalScore(userId); + luckyDrawInfoVo.setTotalScore(totalScore); + ajaxResult = AjaxResult.buildSuccessInstance(""); + ajaxResult.setData(luckyDrawInfoVo); + return ajaxResult; + } + + /** + * 点击抽奖 + * + */ + @ApiOperation(value = "点击抽奖", notes = "") + @ApiResponses({ + @ApiResponse(code = 200, message = "ok", response = LuckyDrawSuccessVo.class) + }) + + @GetMapping(value = "/clickLuckyDraw/{actId}") + @ResponseBody + @Transactional + public AjaxResult clickLuckyDraw(@PathVariable("actId") long actId) { + SysVipInfo user = redisUserLoginUtils.getLoginUser(SysVipInfo.class); + Long userId = user.getId(); + Long companyId = user.getCompanyId(); + /** + * 活动是否存在 + * 活动是否已经开始 + * 免费抽奖还是积分抽奖 + * 积分抽奖一次一次换 + * 减少积分 + * 是否中奖 + * 中奖规则 + * 奖品处理 + * + */ + //活动是否存在 + ShopActivities shopActivities = shopActivitiesDao.selectById(actId); + if (ObjectUtil.isEmpty(shopActivities)) { + return AjaxResult.buildFailInstance("活动不存在"); + } + //活动是否已经开始 + Integer actStatus = shopActivities.getActStatus(); + if(ShopActivities.ACTSTATUS_STATUS_ING != actStatus) { + return AjaxResult.buildFailInstance("活动未开始"); + } + //获取今日抽奖总次数 + String actContent = shopActivities.getActContent(); + LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); + List<ActivitySignRecord> activityRecords = activitySignRecordDao.selectListByActIdAndUserIdLikesignTime(actId,userId, DateUtil.date()); + if(CollUtil.isNotEmpty(activityRecords)){ + Integer wmkcjjh = luckyDrawBasicInfoJsonVo.getWmkcjjh(); + Integer jfdhcs = luckyDrawBasicInfoJsonVo.getJfdhcs(); + if(activityRecords.size() >= (wmkcjjh+jfdhcs)){ + return AjaxResult.buildFailInstance("明天再来抽奖吧"); + } + } + + //生成抽奖记录 + ActivitySignRecord activitySignRecordAdd = new ActivitySignRecord(); + activitySignRecordAdd.setCompanyId(companyId); + activitySignRecordAdd.setCreateBy(user.getVipName()); + activitySignRecordAdd.setCreateTime(DateUtil.date()); + activitySignRecordAdd.setUpdateBy(user.getVipName()); + activitySignRecordAdd.setUpdateTime(DateUtil.date()); + activitySignRecordAdd.setActivityId(actId); + activitySignRecordAdd.setSignTime(DateUtil.date()); + activitySignRecordAdd.setUserId(userId); + activitySignRecordDao.insert(activitySignRecordAdd); + + /** + 获取中奖概率 + 中奖了获取奖品ID + 没有中奖则获取谢谢参与的奖品ID + 每个人最多中奖次数 + */ + + List<LuckyDrawSuccessVo> luckyDrawSuccessVos = new ArrayList<>(); + + //获取谢谢参与奖 + QueryWrapper<ActivitySignAwardSet> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("award_rule",ActivitySignAwardSet.AWARDRULE_NORMAL); + queryWrapper.eq("company_id",companyId); + queryWrapper.eq("activity_id",actId); + ActivitySignAwardSet activitySignAwardSetNormal = activitySignAwardSetDao.selectOne(queryWrapper); + //每个人最多中奖次数 + Integer zzjcs = luckyDrawBasicInfoJsonVo.getZzjcs(); + QueryWrapper<ActivitySignReceiveRecord> queryWrapperActivitySignReceiveRecord = new QueryWrapper<>(); + queryWrapperActivitySignReceiveRecord.eq("company_id", companyId); + queryWrapperActivitySignReceiveRecord.eq("activity_id", actId); + queryWrapperActivitySignReceiveRecord.eq("user_id", userId); + queryWrapperActivitySignReceiveRecord.ne("award_id", activitySignAwardSetNormal.getId()); + List<ActivitySignReceiveRecord> activitySignReceiveRecordDone = activitySignReceiveRecordDao.selectList(queryWrapperActivitySignReceiveRecord); + if(CollUtil.isNotEmpty(activitySignReceiveRecordDone)){ + if(activitySignReceiveRecordDone.size() >= zzjcs){ + //生成领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); + activitySignReceiveRecord.setUserId(userId); + activitySignReceiveRecord.setReceiveTime(DateUtil.date()); + activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecord.setActivityId(actId); + activitySignReceiveRecord.setCompanyId(companyId); + activitySignReceiveRecord.setCreateBy(user.getVipName()); + activitySignReceiveRecord.setCreateTime(new Date()); + activitySignReceiveRecord.setUpdateBy(user.getVipName()); + activitySignReceiveRecord.setUpdateTime(new Date()); + activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + + LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); + luckyDrawSuccessVo.setType(1); + luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); + luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); + luckyDrawSuccessVos.add(luckyDrawSuccessVo); + + AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); + ajaxResult.setData(luckyDrawSuccessVos); + return ajaxResult; + } + } + //总中奖率 + int zzjl = luckyDrawBasicInfoJsonVo.getZzjl(); + int randomInt = RandomUtil.randomInt(1, 100); + //不中奖的分界线 + int failureScope = 100 - zzjl; + if(failureScope >= randomInt){ + //生成领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); + activitySignReceiveRecord.setUserId(userId); + activitySignReceiveRecord.setReceiveTime(DateUtil.date()); + activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecord.setActivityId(actId); + activitySignReceiveRecord.setCompanyId(companyId); + activitySignReceiveRecord.setCreateBy(user.getVipName()); + activitySignReceiveRecord.setCreateTime(new Date()); + activitySignReceiveRecord.setUpdateBy(user.getVipName()); + activitySignReceiveRecord.setUpdateTime(new Date()); + activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + + LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); + luckyDrawSuccessVo.setType(1); + luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); + luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); + luckyDrawSuccessVos.add(luckyDrawSuccessVo); + + AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); + ajaxResult.setData(luckyDrawSuccessVos); + return ajaxResult; + } + //中奖 + if(failureScope < randomInt){ + //获取奖品 + ActivitySignAwardSet activitySignAwardSetCumulativeDay = updateShopActivityAndAwardSet(actId); + + if(ObjectUtil.isNotEmpty(activitySignAwardSetCumulativeDay)){ + LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); + luckyDrawSuccessVo.setType(2); + luckyDrawSuccessVo.setAwardType(activitySignAwardSetCumulativeDay.getAwardType()); + luckyDrawSuccessVo.setAwardName(activitySignAwardSetCumulativeDay.getAwardName()); + luckyDrawSuccessVo.setAwardImg(activitySignAwardSetCumulativeDay.getIntroduceImg()); + luckyDrawSuccessVo.setAwardState(activitySignAwardSetCumulativeDay.getAwardState()); + //新增奖品领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); + activitySignReceiveRecord.setUserId(userId); + activitySignReceiveRecord.setReceiveTime(DateUtil.date()); + activitySignReceiveRecord.setAwardId(activitySignAwardSetCumulativeDay.getId()); + activitySignReceiveRecord.setActivityId(actId); + activitySignReceiveRecord.setCompanyId(companyId); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecord.setCreateBy(user.getVipName()); + activitySignReceiveRecord.setCreateTime(new Date()); + activitySignReceiveRecord.setUpdateBy(user.getVipName()); + activitySignReceiveRecord.setUpdateTime(new Date()); + /** + * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品) + * + * todo:4:店铺商品 + */ + //1:自定义产品 + if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_ING); + String randomString = StringUtils.getRandomString(8); + activitySignReceiveRecord.setWriteOffCode(randomString); + + /** + * 获取对应奖品的领取方式(兑奖方式(1:线下兑换2:物流配送3:客服兑换) + */ + luckyDrawSuccessVo.setWriteOffCode(randomString); + luckyDrawSuccessVo.setAwardWay(activitySignAwardSetCumulativeDay.getAwardWay()); + //2:物流配送 + luckyDrawSuccessVo.setOperationTip(activitySignAwardSetCumulativeDay.getOperationTip()); + //1:线下兑换 + if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay()) { + luckyDrawSuccessVo.setIntroduceTip(activitySignAwardSetCumulativeDay.getIntroduceTip()); + luckyDrawSuccessVo.setPrizeAddress(activitySignAwardSetCumulativeDay.getPrizeAddress()); + luckyDrawSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); + luckyDrawSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); + } + //3:客服兑换 + if(ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { + luckyDrawSuccessVo.setWechatImg(activitySignAwardSetCumulativeDay.getWechatImg()); + luckyDrawSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); + luckyDrawSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); + } + } + //2:积分 + if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { + luckyDrawSuccessVo.setScoreCnt(activitySignAwardSetCumulativeDay.getScoreCnt()); + } + //3:优惠券 + if(ActivitySignAwardSet.AWARDTYPE_COUPON == activitySignAwardSetCumulativeDay.getAwardType()) { + luckyDrawSuccessVo.setCouponName(activitySignAwardSetCumulativeDay.getCouponName()); + //获取优惠券 + int couponId = Integer.parseInt(activitySignAwardSetCumulativeDay.getCouponId()); + ShopCoupon shopCoupon = shopCouponDao.selectById(couponId); + // 如果没有找到该优惠券 + if (shopCoupon == null) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到该优惠券!"); + } + // 如果优惠券有数量限制并且已经领完 + if (shopCoupon.getMaxQuantity() >= 0 && (shopCoupon.getMaxQuantity() <= shopCoupon.getQuantityReceive())) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券已领完!"); + } + boolean newPeople = wxShopCouponUtil.verifyIsNewPeople(userId); + // 如果改券是新人专属且当前用户不是新人 + if (AppConstance.COUPON_GET_LIMT_NEW.equals(shopCoupon.getGetLimit()) && !newPeople) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "该优惠券为新人专享优惠券!"); + } + ShopCouponRecord insertRecord = new ShopCouponRecord(); + insertRecord.setCreateBy(AppConstance.SYSTEM_USER); + insertRecord.setUpdateBy(AppConstance.SYSTEM_USER); + insertRecord.setCId(couponId); + insertRecord.setUserId(userId); + insertRecord.setIsUsing(2); + int i = shopCouponRecordDao.insert(insertRecord); + // 如果插入领取记录表失败 + if (i < 0) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券领取失败!"); + } + shopCoupon.setQuantityReceive(shopCoupon.getQuantityReceive() + 1); + shopCouponDao.updateByModel(shopCoupon); + } + activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + //累计奖励积分,对应用户积分加减 + if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { + int awardType = activitySignAwardSetCumulativeDay.getAwardType(); + if(ActivitySignAwardSet.AWARDTYPE_SCORE == awardType){ + int scoreCnt = activitySignAwardSetCumulativeDay.getScoreCnt(); + if(scoreCnt > 0){ + scoreVipDetailService.addScore(userId,null,null,scoreCnt, + activitySignReceiveRecord.getId(), ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"积分"); + } + } + } + //生成核销记录 + if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { + ActivitySignWriteoff activitySignWriteoff = new ActivitySignWriteoff(); + //线下兑换和客服兑换 + if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay() + || ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { + activitySignWriteoff.setWriteoffCode(activitySignReceiveRecord.getWriteOffCode()); + } + activitySignWriteoff.setActId(actId); + activitySignWriteoff.setAwardId(activitySignAwardSetCumulativeDay.getId()); + activitySignWriteoff.setWinTime(DateUtil.date()); + if(ActivitySignAwardSet.AWARDWAY_TWO == activitySignAwardSetCumulativeDay.getAwardWay()) { + activitySignWriteoff.setState(ActivitySignWriteoff.STATE_TWO); + }else { + activitySignWriteoff.setState(ActivitySignWriteoff.STATE_ONE); + } + activitySignWriteoff.setUserId(userId); + activitySignWriteoff.setCompanyId(companyId); + activitySignWriteoff.setReceiveId(activitySignReceiveRecord.getId()); + activitySignWriteoff.setCreateBy(user.getVipName()); + activitySignWriteoff.setCreateTime(new Date()); + activitySignWriteoff.setUpdateBy(user.getVipName()); + activitySignWriteoff.setUpdateTime(new Date()); + activitySignWriteoffDao.insert(activitySignWriteoff); + } + luckyDrawSuccessVos.add(luckyDrawSuccessVo); + }else{ + //生成领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); + activitySignReceiveRecord.setUserId(userId); + activitySignReceiveRecord.setReceiveTime(DateUtil.date()); + activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecord.setActivityId(actId); + activitySignReceiveRecord.setCompanyId(companyId); + activitySignReceiveRecord.setCreateBy(user.getVipName()); + activitySignReceiveRecord.setCreateTime(new Date()); + activitySignReceiveRecord.setUpdateBy(user.getVipName()); + activitySignReceiveRecord.setUpdateTime(new Date()); + activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + + LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); + luckyDrawSuccessVo.setType(1); + luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); + luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); + luckyDrawSuccessVos.add(luckyDrawSuccessVo); + + AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); + ajaxResult.setData(luckyDrawSuccessVos); + return ajaxResult; + } + } + AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); + ajaxResult.setData(luckyDrawSuccessVos); + return ajaxResult; + } + + //获取奖品并索引+1 已领取+1 + public synchronized ActivitySignAwardSet updateShopActivityAndAwardSet(Long actId){ + //通过活动ID获取对应的活动 + ShopActivities shopActivities = shopActivitiesDao.selectById(actId); + String actContent = shopActivities.getActContent(); + LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); + + //中奖索引 + Integer awrdLineIndex = luckyDrawBasicInfoJsonVo.getAwrdLineIndex(); + //中奖序列 + String awardLine = luckyDrawBasicInfoJsonVo.getAwardLine(); + ActivitySignAwardSet activitySignAwardSet = null; + if(awardLine.length() > 0) { + String substring = awardLine.substring(1, awardLine.length() - 1); + List<String> awardList = StrUtil.splitTrim(substring, ","); + if(awrdLineIndex < awardList.size()){ + //中奖 + Long awardId = Long.parseLong(awardList.get(awrdLineIndex + 1)); + ActivitySignAwardSet activitySignAwardSetGet = activitySignAwardSetDao.selectById(awardId); + //奖项库存数量 + int awardInventoryCnt = activitySignAwardSetGet.getAwardInventoryCnt(); + //已派发数量 + int awardDistributeCnt = activitySignAwardSetGet.getAwardDistributeCnt(); + if(awardDistributeCnt < awardInventoryCnt){ + activitySignAwardSet = activitySignAwardSetGet; + activitySignAwardSetGet.setAwardDistributeCnt(awardDistributeCnt +1); + activitySignAwardSetDao.updateById(activitySignAwardSetGet); + + //将基本信息转换成JSON字符串存储到活动主表的act_content字段 + luckyDrawBasicInfoJsonVo.setAwrdLineIndex(awrdLineIndex + 1); + String json= JSON.toJSONString(luckyDrawBasicInfoJsonVo); + shopActivities.setActContent(json); + shopActivitiesDao.updateByModel(shopActivities); + } + } + } + return activitySignAwardSet; + } + + /** + * 是否可以积分兑换 + * + * @param + * @return + */ + @ApiOperation(value = "是否可以积分兑换", notes = "") + @GetMapping(value = "scoreLuckyDraw/{actId}") + @ResponseBody + public AjaxResult logisticsInsureById(@PathVariable("actId") Long actId) { + SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class); + Long userId = loginUser.getId(); + Long companyId = loginUser.getCompanyId(); + //获取用户总积分 + int scoreAll = scoreVipDetailDao.selectUserTotalScore(userId); + //获取活动的积分换取 + ShopActivities shopActivities = shopActivitiesDao.selectById(actId); + String actContent = shopActivities.getActContent(); + LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); + Integer dhycjfs = luckyDrawBasicInfoJsonVo.getDhycjfs(); + if(dhycjfs == 0){ + return new AjaxResult(AjaxResult.STATUS_FAIL, "积分兑换不能兑换抽奖次数"); + } + if(scoreAll < dhycjfs){ + return new AjaxResult(AjaxResult.STATUS_FAIL, "积分不足"); + } + //获取今日抽奖总次数 + List<ActivitySignRecord> activityRecords = activitySignRecordDao.selectListByActIdAndUserIdLikesignTime(actId,userId, DateUtil.date()); + if(CollUtil.isNotEmpty(activityRecords)){ + Integer wmkcjjh = luckyDrawBasicInfoJsonVo.getWmkcjjh(); + Integer jfdhcs = luckyDrawBasicInfoJsonVo.getJfdhcs(); + if(activityRecords.size() >= (wmkcjjh+jfdhcs)){ + return AjaxResult.buildFailInstance("明天再来抽奖吧"); + } + } + //换取次数,减去积分 + scoreVipDetailService.deductionScore(userId,null,null,dhycjfs, + null, ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"兑换抽奖机会"); + return new AjaxResult(AjaxResult.STATUS_SUCCESS, "兑换成功!"); + } + + + + + +} + diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java index da861c3..447b434 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopActivitiesSignAction.java @@ -1,5 +1,6 @@ package com.matrix.system.shopXcx.api.action; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; @@ -19,12 +20,17 @@ import com.matrix.system.activity.entity.ActivitySignReceiveRecord; import com.matrix.system.activity.entity.ActivitySignRecord; import com.matrix.system.activity.entity.ActivitySignWriteoff; +import com.matrix.system.common.constance.AppConstance; import com.matrix.system.hive.bean.SysVipInfo; +import com.matrix.system.score.entity.ScoreVipDetail; +import com.matrix.system.score.service.ScoreVipDetailService; import com.matrix.system.shopXcx.api.dto.SeeAwardTextDto; import com.matrix.system.shopXcx.api.dto.SignAwardDto; +import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService; +import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil; import com.matrix.system.shopXcx.api.vo.*; -import com.matrix.system.shopXcx.bean.ShopActivities; -import com.matrix.system.shopXcx.dao.ShopActivitiesDao; +import com.matrix.system.shopXcx.bean.*; +import com.matrix.system.shopXcx.dao.*; import com.matrix.system.shopXcx.vo.SalesOrderVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -63,6 +69,25 @@ @Autowired private ActivitySignRecordDao activitySignRecordDao; + + @Autowired + ShopDeliveryInfoDao shopDeliveryInfoDao; + + @Autowired + private ShopLogisticsInfoDao shopLogisticsInfoDao; + @Autowired + private ShopReceiveAddressDao shopReceiveAddressDao; + + @Autowired + private WxShopLogisticsQueryService wxShopLogisticsQueryService; + @Autowired + private ScoreVipDetailService scoreVipDetailService; + @Autowired + private ShopCouponDao shopCouponDao; + @Autowired + private WxShopCouponUtil wxShopCouponUtil; + @Autowired + private ShopCouponRecordDao shopCouponRecordDao; @ApiOperation(value = "获取签到基本信息", notes = "") @ApiResponses({ @@ -140,6 +165,56 @@ ajaxResult.setData(signBasicInfoVo); return ajaxResult; } + + /** + * 查看历史签到记录 + * + * @param + * @return + */ + @ApiOperation(value = "查看历史签到记录", notes = "") + @GetMapping(value = "getSignRecord/{actId}/{month}") + @ResponseBody + public AjaxResult getSignRecord(@PathVariable("actId") long actId,@PathVariable("month") String dateStr) { + //获取登录人信息 + SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class); + Long companyId = loginUser.getCompanyId(); + Long userId = loginUser.getId(); + Date date = DateUtil.parse(dateStr); + /** + * 默认获取当前月份 + * 获取当前月份的天数 + */ + List<ActivitySignRecordVo> activitySignRecordVos = new ArrayList<>(); + //获取当前月的第一天是星期几 + DateTime dateTime = DateUtil.beginOfMonth(date); + int i = DateUtil.dayOfWeek(dateTime); + for(int j = 1;j<i;j++){ + ActivitySignRecordVo activitySignRecordVoNull = new ActivitySignRecordVo(); + activitySignRecordVos.add(activitySignRecordVoNull); + } + List<String> monthFullDays = getMonthFullDay(DateUtil.year(dateTime), DateUtil.month(dateTime) + 1); + for(String monthFullDay : monthFullDays){ + ActivitySignRecordVo activitySignRecordVo = new ActivitySignRecordVo(); + activitySignRecordVo.setSignTime(monthFullDay); + activitySignRecordVo.setActivityId(actId); + activitySignRecordVo.setCompanyId(companyId); + //对应日期是否已签到 + Date dateSign = DateUtil.parse(monthFullDay); + ActivitySignRecord activitySignRecordDone = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,dateSign); + if(ObjectUtil.isNotEmpty(activitySignRecordDone)){ + activitySignRecordVo.setState(1); + }else{ + activitySignRecordVo.setState(2); + } + activitySignRecordVos.add(activitySignRecordVo); + } + AjaxResult ajaxResult = new AjaxResult(); + ajaxResult = AjaxResult.buildSuccessInstance(""); + ajaxResult.setData(activitySignRecordVos); + return ajaxResult; + } + /** * java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串) * @param year @@ -243,7 +318,7 @@ * 查询是否有签到奖品 * 日常奖励和自定义奖品 */ - SignSuccessVo signSuccessVo = new SignSuccessVo(); + List<SignSuccessVo> signSuccessVos = new ArrayList<>(); //日常奖励,新增奖品领取记录 QueryWrapper<ActivitySignAwardSet> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("award_rule",ActivitySignAwardSet.AWARDRULE_NORMAL); @@ -264,9 +339,54 @@ activitySignReceiveRecord.setUpdateTime(new Date()); activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + SignSuccessVo signSuccessVo = new SignSuccessVo(); + signSuccessVo.setType(1); signSuccessVo.setScoreCnt(activitySignAwardSetNormal.getScoreCnt()); - signSuccessVo.setNormalAwardName(activitySignAwardSetNormal.getAwardName()); - signSuccessVo.setNormalAwardImg(activitySignAwardSetNormal.getIntroduceImg()); + signSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); + signSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); + signSuccessVos.add(signSuccessVo); + + //日常奖励积分,对应用户积分加减 + int awardType = activitySignAwardSetNormal.getAwardType(); + if(ActivitySignAwardSet.AWARDTYPE_SCORE == awardType){ + int scoreCnt = activitySignAwardSetNormal.getScoreCnt(); + if(scoreCnt > 0){ + scoreVipDetailService.addScore(userId,null,null,scoreCnt, + activitySignReceiveRecord.getId(), ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"签到积分"); + } + } + //获取优惠券 + if(ActivitySignAwardSet.AWARDTYPE_COUPON == awardType){ + //获取优惠券 + int couponId = Integer.parseInt(activitySignAwardSetNormal.getCouponId()); + ShopCoupon shopCoupon = shopCouponDao.selectById(couponId); + // 如果没有找到该优惠券 + if (shopCoupon == null) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到该优惠券!"); + } + // 如果优惠券有数量限制并且已经领完 + if (shopCoupon.getMaxQuantity() >= 0 && (shopCoupon.getMaxQuantity() <= shopCoupon.getQuantityReceive())) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券已领完!"); + } + boolean newPeople = wxShopCouponUtil.verifyIsNewPeople(userId); + // 如果改券是新人专属且当前用户不是新人 + if (AppConstance.COUPON_GET_LIMT_NEW.equals(shopCoupon.getGetLimit()) && !newPeople) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "该优惠券为新人专享优惠券!"); + } + ShopCouponRecord insertRecord = new ShopCouponRecord(); + insertRecord.setCreateBy(AppConstance.SYSTEM_USER); + insertRecord.setUpdateBy(AppConstance.SYSTEM_USER); + insertRecord.setCId(couponId); + insertRecord.setUserId(userId); + insertRecord.setIsUsing(2); + int i = shopCouponRecordDao.insert(insertRecord); + // 如果插入领取记录表失败 + if (i < 0) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券领取失败!"); + } + shopCoupon.setQuantityReceive(shopCoupon.getQuantityReceive() + 1); + shopCouponDao.updateByModel(shopCoupon); + } } //获取当前累计天数 int cumulativeDay = getCumulativeDay(actId, userId, date, 0); @@ -276,108 +396,156 @@ queryWrapperCumulativeDay.eq("cumulative_day",cumulativeDay); queryWrapperCumulativeDay.eq("company_id",companyId); queryWrapperCumulativeDay.eq("activity_id",actId); - ActivitySignAwardSet activitySignAwardSetCumulativeDay = activitySignAwardSetDao.selectOne(queryWrapperCumulativeDay); - if(ObjectUtil.isNotEmpty(activitySignAwardSetCumulativeDay)) { - //是否已领取 - Long id = activitySignAwardSetCumulativeDay.getId(); - QueryWrapper<ActivitySignReceiveRecord> queryWrapperActivitySignReceiveRecord = new QueryWrapper<>(); - queryWrapperActivitySignReceiveRecord.eq("award_id", id); - queryWrapperActivitySignReceiveRecord.eq("company_id", companyId); - queryWrapperActivitySignReceiveRecord.eq("activity_id", actId); - queryWrapperActivitySignReceiveRecord.eq("user_id", userId); - ActivitySignReceiveRecord activitySignReceiveRecordDone = activitySignReceiveRecordDao.selectOne(queryWrapperActivitySignReceiveRecord); - if (ObjectUtil.isNotEmpty(activitySignReceiveRecordDone)) { - String awardNameCumulativeDay = activitySignAwardSetCumulativeDay.getAwardName(); - AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(awardNameCumulativeDay+"已经领取过了"); - ajaxResult.setData(signSuccessVo); - return ajaxResult; +// ActivitySignAwardSet activitySignAwardSetCumulativeDay = activitySignAwardSetDao.selectOne(queryWrapperCumulativeDay); + List<ActivitySignAwardSet> activitySignAwardSetCumulativeDays = activitySignAwardSetDao.selectList(queryWrapperCumulativeDay); + if(CollUtil.isNotEmpty(activitySignAwardSetCumulativeDays)){ + for(ActivitySignAwardSet activitySignAwardSetCumulativeDay : activitySignAwardSetCumulativeDays){ + if(ObjectUtil.isNotEmpty(activitySignAwardSetCumulativeDay)) { + //是否已领取 + Long id = activitySignAwardSetCumulativeDay.getId(); + QueryWrapper<ActivitySignReceiveRecord> queryWrapperActivitySignReceiveRecord = new QueryWrapper<>(); + queryWrapperActivitySignReceiveRecord.eq("award_id", id); + queryWrapperActivitySignReceiveRecord.eq("company_id", companyId); + queryWrapperActivitySignReceiveRecord.eq("activity_id", actId); + queryWrapperActivitySignReceiveRecord.eq("user_id", userId); + ActivitySignReceiveRecord activitySignReceiveRecordDone = activitySignReceiveRecordDao.selectOne(queryWrapperActivitySignReceiveRecord); + if (ObjectUtil.isNotEmpty(activitySignReceiveRecordDone)) { + String awardNameCumulativeDay = activitySignAwardSetCumulativeDay.getAwardName(); + AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(awardNameCumulativeDay+"已经领取过了"); + ajaxResult.setData(signSuccessVos); + return ajaxResult; + } + + SignSuccessVo signSuccessVo = new SignSuccessVo(); + signSuccessVo.setType(2); + signSuccessVo.setAwardType(activitySignAwardSetCumulativeDay.getAwardType()); + signSuccessVo.setAwardName(activitySignAwardSetCumulativeDay.getAwardName()); + signSuccessVo.setAwardImg(activitySignAwardSetCumulativeDay.getIntroduceImg()); + signSuccessVo.setAwardState(activitySignAwardSetCumulativeDay.getAwardState()); + //新增奖品领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); + activitySignReceiveRecord.setUserId(userId); + activitySignReceiveRecord.setReceiveTime(date); + activitySignReceiveRecord.setAwardId(activitySignAwardSetCumulativeDay.getId()); + activitySignReceiveRecord.setActivityId(actId); + activitySignReceiveRecord.setCompanyId(companyId); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecord.setCreateBy(user.getVipName()); + activitySignReceiveRecord.setCreateTime(new Date()); + activitySignReceiveRecord.setUpdateBy(user.getVipName()); + activitySignReceiveRecord.setUpdateTime(new Date()); + /** + * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品) + * + * todo:4:店铺商品 + */ + //1:自定义产品 + if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_ING); + String randomString = StringUtils.getRandomString(8); + activitySignReceiveRecord.setWriteOffCode(randomString); + + /** + * 获取对应奖品的领取方式(兑奖方式(1:线下兑换2:物流配送3:客服兑换) + */ + signSuccessVo.setWriteOffCode(randomString); + signSuccessVo.setAwardWay(activitySignAwardSetCumulativeDay.getAwardWay()); + //2:物流配送 + signSuccessVo.setOperationTip(activitySignAwardSetCumulativeDay.getOperationTip()); + //1:线下兑换 + if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay()) { + signSuccessVo.setIntroduceTip(activitySignAwardSetCumulativeDay.getIntroduceTip()); + signSuccessVo.setPrizeAddress(activitySignAwardSetCumulativeDay.getPrizeAddress()); + signSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); + signSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); + } + //3:客服兑换 + if(ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { + signSuccessVo.setWechatImg(activitySignAwardSetCumulativeDay.getWechatImg()); + signSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); + signSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); + } + } + //2:积分 + if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { + signSuccessVo.setScoreCnt(activitySignAwardSetCumulativeDay.getScoreCnt()); + } + //3:优惠券 + if(ActivitySignAwardSet.AWARDTYPE_COUPON == activitySignAwardSetCumulativeDay.getAwardType()) { + signSuccessVo.setCouponName(activitySignAwardSetCumulativeDay.getCouponName()); + //获取优惠券 + int couponId = Integer.parseInt(activitySignAwardSetCumulativeDay.getCouponId()); + ShopCoupon shopCoupon = shopCouponDao.selectById(couponId); + // 如果没有找到该优惠券 + if (shopCoupon == null) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到该优惠券!"); + } + // 如果优惠券有数量限制并且已经领完 + if (shopCoupon.getMaxQuantity() >= 0 && (shopCoupon.getMaxQuantity() <= shopCoupon.getQuantityReceive())) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券已领完!"); + } + boolean newPeople = wxShopCouponUtil.verifyIsNewPeople(userId); + // 如果改券是新人专属且当前用户不是新人 + if (AppConstance.COUPON_GET_LIMT_NEW.equals(shopCoupon.getGetLimit()) && !newPeople) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "该优惠券为新人专享优惠券!"); + } + ShopCouponRecord insertRecord = new ShopCouponRecord(); + insertRecord.setCreateBy(AppConstance.SYSTEM_USER); + insertRecord.setUpdateBy(AppConstance.SYSTEM_USER); + insertRecord.setCId(couponId); + insertRecord.setUserId(userId); + insertRecord.setIsUsing(2); + int i = shopCouponRecordDao.insert(insertRecord); + // 如果插入领取记录表失败 + if (i < 0) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券领取失败!"); + } + shopCoupon.setQuantityReceive(shopCoupon.getQuantityReceive() + 1); + shopCouponDao.updateByModel(shopCoupon); + } + activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + //累计奖励积分,对应用户积分加减 + if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { + int awardType = activitySignAwardSetCumulativeDay.getAwardType(); + if(ActivitySignAwardSet.AWARDTYPE_SCORE == awardType){ + int scoreCnt = activitySignAwardSetCumulativeDay.getScoreCnt(); + if(scoreCnt > 0){ + scoreVipDetailService.addScore(userId,null,null,scoreCnt, + activitySignReceiveRecord.getId(), ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"签到积分"); + } + } + } + //生成核销记录 + if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { + ActivitySignWriteoff activitySignWriteoff = new ActivitySignWriteoff(); + //线下兑换和客服兑换 + if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay() + || ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { + activitySignWriteoff.setWriteoffCode(activitySignReceiveRecord.getWriteOffCode()); + } + activitySignWriteoff.setActId(actId); + activitySignWriteoff.setAwardId(activitySignAwardSetCumulativeDay.getId()); + activitySignWriteoff.setWinTime(date); + if(ActivitySignAwardSet.AWARDWAY_TWO == activitySignAwardSetCumulativeDay.getAwardWay()) { + activitySignWriteoff.setState(ActivitySignWriteoff.STATE_TWO); + }else { + activitySignWriteoff.setState(ActivitySignWriteoff.STATE_ONE); + } + activitySignWriteoff.setUserId(userId); + activitySignWriteoff.setCompanyId(companyId); + activitySignWriteoff.setReceiveId(activitySignReceiveRecord.getId()); + activitySignWriteoff.setCreateBy(user.getVipName()); + activitySignWriteoff.setCreateTime(new Date()); + activitySignWriteoff.setUpdateBy(user.getVipName()); + activitySignWriteoff.setUpdateTime(new Date()); + activitySignWriteoffDao.insert(activitySignWriteoff); + } + signSuccessVos.add(signSuccessVo); + } } - //新增奖品领取记录 - ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); - activitySignReceiveRecord.setUserId(userId); - activitySignReceiveRecord.setReceiveTime(date); - activitySignReceiveRecord.setAwardId(activitySignAwardSetCumulativeDay.getId()); - activitySignReceiveRecord.setActivityId(actId); - activitySignReceiveRecord.setCompanyId(companyId); - activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); - activitySignReceiveRecord.setCreateBy(user.getVipName()); - activitySignReceiveRecord.setCreateTime(new Date()); - activitySignReceiveRecord.setUpdateBy(user.getVipName()); - activitySignReceiveRecord.setUpdateTime(new Date()); - /** - * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品) - * - * todo:4:店铺商品 - */ - //1:自定义产品 - if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { - activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_ING); - String randomString = StringUtils.getRandomString(8); - activitySignReceiveRecord.setWriteOffCode(randomString); - - /** - * 获取对应奖品的领取方式(兑奖方式(1:线下兑换2:物流配送3:客服兑换) - */ - signSuccessVo.setWriteOffCode(randomString); - signSuccessVo.setAwardType(activitySignAwardSetCumulativeDay.getAwardType()); - signSuccessVo.setAwardName(activitySignAwardSetCumulativeDay.getAwardName()); - signSuccessVo.setAwardImg(activitySignAwardSetCumulativeDay.getIntroduceImg()); - signSuccessVo.setAwardWay(activitySignAwardSetCumulativeDay.getAwardWay()); - signSuccessVo.setAwardState(activitySignAwardSetCumulativeDay.getAwardState()); - //2:物流配送 - signSuccessVo.setOperationTip(activitySignAwardSetCumulativeDay.getOperationTip()); - //1:线下兑换 - if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay()) { - signSuccessVo.setIntroduceTip(activitySignAwardSetCumulativeDay.getIntroduceTip()); - signSuccessVo.setPrizeAddress(activitySignAwardSetCumulativeDay.getPrizeAddress()); - signSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); - signSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); - } - //3:客服兑换 - if(ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { - signSuccessVo.setWechatImg(activitySignAwardSetCumulativeDay.getWechatImg()); - signSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); - signSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); - } - } - //2:积分 - if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { - signSuccessVo.setScoreCnt(activitySignAwardSetCumulativeDay.getScoreCnt()); - } - //3:优惠券 - if(ActivitySignAwardSet.AWARDTYPE_COUPON == activitySignAwardSetCumulativeDay.getAwardType()) { - signSuccessVo.setCouponName(activitySignAwardSetCumulativeDay.getCouponName()); - } - activitySignReceiveRecordDao.insert(activitySignReceiveRecord); - //生成核销记录 - if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { - ActivitySignWriteoff activitySignWriteoff = new ActivitySignWriteoff(); - //线下兑换和客服兑换 - if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay() - || ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { - activitySignWriteoff.setWriteoffCode(activitySignReceiveRecord.getWriteOffCode()); - } - activitySignWriteoff.setActId(actId); - activitySignWriteoff.setAwardId(activitySignAwardSetCumulativeDay.getId()); - activitySignWriteoff.setWinTime(date); - if(ActivitySignAwardSet.AWARDWAY_TWO == activitySignAwardSetCumulativeDay.getAwardWay()) { - activitySignWriteoff.setState(ActivitySignWriteoff.STATE_TWO); - }else { - activitySignWriteoff.setState(ActivitySignWriteoff.STATE_ONE); - } - activitySignWriteoff.setUserId(userId); - activitySignWriteoff.setCompanyId(companyId); - activitySignWriteoff.setReceiveId(activitySignReceiveRecord.getId()); - activitySignWriteoff.setCreateBy(user.getVipName()); - activitySignWriteoff.setCreateTime(new Date()); - activitySignWriteoff.setUpdateBy(user.getVipName()); - activitySignWriteoff.setUpdateTime(new Date()); - activitySignWriteoffDao.insert(activitySignWriteoff); - } } - AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("签到成功"); - ajaxResult.setData(signSuccessVo); + ajaxResult.setData(signSuccessVos); return ajaxResult; } /** @@ -396,7 +564,8 @@ DateTime offsetDay = DateUtil.offsetDay(date, -i); return getCumulativeDay(actId,userId,offsetDay,i); } - + + /** * 获取累计的签到奖品 * @@ -417,7 +586,7 @@ signAwardDto.setUserId(loginUser.getId()); signAwardDto.setCompanyId(loginUser.getCompanyId()); IPage<SignAwardListVo> signAwardListVos = activitySignReceiveRecordDao.selectSignAwardList(page,signAwardDto); - AjaxResult result=AjaxResult.buildSuccessInstance(signAwardListVos.getRecords()); + AjaxResult result=AjaxResult.buildSuccessInstance(signAwardListVos); return result; } @@ -441,11 +610,11 @@ } /** - * 物流配送确认 + * 物流配送信息查看 * * @return */ - @ApiOperation(value = "物流配送确认", notes = "") + @ApiOperation(value = "物流配送信息查看", notes = "") @PostMapping(value = "/logisticsInsure") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = SeeAwardTextVo.class) @@ -455,9 +624,75 @@ seeAwardTextDto.setUserId(loginUser.getId()); seeAwardTextDto.setCompanyId(loginUser.getCompanyId()); SeeAwardTextVo seeAwardTextVO = activitySignReceiveRecordDao.selectSeeAwardTextVOById(seeAwardTextDto); + if(ObjectUtil.isEmpty(seeAwardTextVO)){ + return AjaxResult.buildFailInstance("奖品无法查看物流配送信息"); + } + long receiveId = seeAwardTextVO.getId(); + + //获取核销记录的ID + ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectActivitySignWriteoffByUserIDAndReceiveId(loginUser.getId(),receiveId); + if(ObjectUtil.isNotEmpty(activitySignWriteoff)){ + Integer logisticsId = activitySignWriteoff.getLogisticsId(); + ShopDeliveryInfo shopDeliveryInfo = shopDeliveryInfoDao.selectById(logisticsId); + if(ObjectUtil.isNotEmpty(shopDeliveryInfo)){ + //查看物流信息 + wxShopLogisticsQueryService.selectLogisticsInfo(shopDeliveryInfo); + List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId()); + seeAwardTextVO.setShopLogisticsInfos(shopLogisticsInfos); + } + } AjaxResult result=AjaxResult.buildSuccessInstance(seeAwardTextVO); return result; } + + /** + * 物流配送收货地址保存 + * + * @param + * @return + */ + @ApiOperation(value = "物流配送收货地址保存", notes = "") + @GetMapping(value = "logisticsInsureAddress/{addressId}/{receiveId}") + @ResponseBody + public AjaxResult logisticsInsureAddress(@PathVariable("addressId") int addressId,@PathVariable("receiveId") long receiveId) { + ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(addressId); + if(ObjectUtil.isEmpty(shopReceiveAddress)){ + return AjaxResult.buildFailInstance("收货地址无效"); + } + ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId); + //该奖品不是待领取状态 + if (ActivitySignReceiveRecord.STATE_DONE == activitySignReceiveRecord.getState() + || ActivitySignReceiveRecord.STATE_FOUR == activitySignReceiveRecord.getState() + || ActivitySignReceiveRecord.STATE_FIVE == activitySignReceiveRecord.getState()) { + return AjaxResult.buildFailInstance("无法修改收货信息"); + } + activitySignReceiveRecord.setConsigneeAddress(shopReceiveAddress.getAddrRegion()+"-"+shopReceiveAddress.getAddrDetailaddr()+"-"+shopReceiveAddress.getDormitory()); + activitySignReceiveRecord.setConsignee(shopReceiveAddress.getAddrLiaisonman()); + activitySignReceiveRecord.setConsigneePhone(shopReceiveAddress.getAddrTelephone()); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_THREE); + activitySignReceiveRecordDao.updateById(activitySignReceiveRecord); + return new AjaxResult(AjaxResult.STATUS_SUCCESS, "设置成功!"); + } + + /** + * 物流配送确认收货 + * + * @param + * @return + */ + @ApiOperation(value = "物流配送确认收货", notes = "") + @GetMapping(value = "logisticsInsureById/{receiveId}") + @ResponseBody + public AjaxResult logisticsInsureById(@PathVariable("receiveId") long receiveId) { + ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId); + //如果不是待收货状态 + if (ActivitySignReceiveRecord.STATE_FOUR != activitySignReceiveRecord.getState()) { + return AjaxResult.buildFailInstance("该奖品不是待收货状态"); + } + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecordDao.updateById(activitySignReceiveRecord); + return new AjaxResult(AjaxResult.STATUS_SUCCESS, "收货成功!"); + } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java index ac983d3..977b543 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java @@ -1,5 +1,7 @@ package com.matrix.system.shopXcx.api.action; +import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao; +import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; import com.matrix.system.hive.bean.SysVipInfo; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.core.pojo.AjaxResult; @@ -15,9 +17,11 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; /** * @author pengliang @@ -72,6 +76,9 @@ @Autowired private ShopProductCommentDao productCommentDao; + @Autowired + private ShopSalesmanGradeDao shopSalesmanGradeDao; + /** * 根据id查询商品信息 * @@ -81,15 +88,29 @@ @RequestMapping(value = "/getProductById/{shopId}/{id}") @ResponseBody public AjaxResult getProductById(@PathVariable Long shopId, @PathVariable("id") Integer id) { - + SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); ShopProduct shopProduct = shopProductDao.selectById(id); if (shopProduct == null) { return new AjaxResult(AjaxResult.STATUS_FAIL, "没有查询到商品"); } - List<ShopProductAttrRef> shopProductAttrRefs = shopProductAttrRefDao.selectByPid(id); List<ShopProductImg> shopProductImgs = shopProductImgDao.selectByPid(id); List<ShopSku> shopSkus = shopSkuDao.selectByPid(id); + if(SysVipInfo.IS_SALES==sysVipInfo.getIsSales()){ + ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade()); + //计算产品佣金 + shopSkus.forEach(shopSku -> { + if(Objects.isNull(shopSku.getInvitationPrice())){ + shopSku.setInvitationPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getInvitationCommission())).divide(BigDecimal.valueOf(100))); + } + if(Objects.isNull(shopSku.getSealesPrice())){ + shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSealesCommission())).divide(BigDecimal.valueOf(100))); + } + if(Objects.isNull(shopSku.getSelfPrice())){ + shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSelfCommission())).divide(BigDecimal.valueOf(100))); + } + }); + } List<ShopProductParamRef> shopProductParamRefs = shopProductParamRefDao.selectByPid(id); shopProduct.setAttrRefs(shopProductAttrRefs); shopProduct.setProductImgs(shopProductImgs); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java index 5b50cda..41df41b 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java @@ -369,8 +369,7 @@ @ResponseBody public AjaxResult findServiceOrderList(@RequestBody @Validated ErpServiceOrderListDto orderListDto) { SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); - SysVipInfo vipInfo= vipInfoDao.selectByPhone(sysVipInfo.getPhone(),HostInterceptor.getCompanyId()); - orderListDto.setVipId(vipInfo.getId()); + orderListDto.setVipId(sysVipInfo.getId()); List<ErpServiceOrderListVo> apiServiceOrderListInPage = projServicesDao.findWxServiceOrderList(orderListDto); return AjaxResult.buildSuccessInstance(apiServiceOrderListInPage,"查询成功"); } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/SeeAwardTextDto.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/SeeAwardTextDto.java index f60d919..0549ec2 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/SeeAwardTextDto.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/SeeAwardTextDto.java @@ -1,18 +1,18 @@ package com.matrix.system.shopXcx.api.dto; -import javax.validation.constraints.NotNull; - import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import javax.validation.constraints.NotNull; @Data @ApiModel(value = "SeeAwardTextDto", description = "查询参数接收类") public class SeeAwardTextDto { - @NotNull(message = "奖品ID不能为空") - @ApiModelProperty(value = "奖品ID", example = "1") + @NotNull(message = "奖品记录ID不能为空") + @ApiModelProperty(value = "奖品记录ID", example = "1") private Long awardId; @ApiModelProperty(hidden = true) diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java index a5fa5e3..af5865f 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java @@ -22,7 +22,7 @@ /** * 配送方式(1=物流,2=门店自取) */ - private String deliverySelect; + private Integer deliverySelect; /** * 配送门店ID diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java index 984fefa..28e33f6 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java @@ -59,7 +59,6 @@ @Override - @Transactional public Boolean refundToUser(String id, ShopRefundRecord shopRefundRecord) { LogUtil.debug("进入退款接口进行退款。。。", id); Boolean flag = false; diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java index 1916ac4..d4d7785 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java @@ -216,14 +216,19 @@ /** * 新增发货信息 */ - public int insertSendPackageInfo(ShopOrder shopOrder, String shippingMethod, ShopReceiveAddress receiveAddress) { + public int insertSendPackageInfo(ShopOrder shopOrder, Integer shippingMethod, ShopReceiveAddress receiveAddress) { ShopDeliveryInfo shopDeliveryInfo = new ShopDeliveryInfo(); shopDeliveryInfo.setCreateBy(AppConstance.SYSTEM_USER); shopDeliveryInfo.setUpdateBy(AppConstance.SYSTEM_USER); shopDeliveryInfo.setOrderId(shopOrder.getId()); shopDeliveryInfo.setOrderNo(shopOrder.getOrderNo()); shopDeliveryInfo.setUserId(shopOrder.getUserId()); - shopDeliveryInfo.setDeliveryWay(shippingMethod); + if(ShopOrder.SHIPPING_METHOD_WL==shippingMethod){ + shopDeliveryInfo.setDeliveryWay("物流配送"); + }else{ + shopDeliveryInfo.setDeliveryWay("门店自提"); + } + shopDeliveryInfo.setShopId(shopOrder.getStoreId().longValue()); shopDeliveryInfo.setCompanyId(shopOrder.getCompanyId()); StringBuffer receiveAddrStr = new StringBuffer(); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawBasicInfoJsonVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawBasicInfoJsonVo.java new file mode 100644 index 0000000..2501f29 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawBasicInfoJsonVo.java @@ -0,0 +1,60 @@ +package com.matrix.system.shopXcx.api.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "LuckyDrawBasicInfoJsonVo", description = "活动") +public class LuckyDrawBasicInfoJsonVo { + + @ApiModelProperty(value ="头部图片") + private String imageUrlHead; + @ApiModelProperty(value ="开始按钮") + private String imageUrlTitle; + @ApiModelProperty(value ="转盘背景") + private String imageUrlButton; + @ApiModelProperty(value ="状态图片") + private String imageUrlState; + @ApiModelProperty(value ="奖品划分线") + private String imageLine; + + @ApiModelProperty(value ="规则内容") + private String ruleExplain; + @ApiModelProperty(value ="字体颜色") + private String typographyColor; + @ApiModelProperty(value ="背景颜色") + private String backgroundColor; + @ApiModelProperty(value ="字体大小") + private Integer typographyNum; + @ApiModelProperty(value ="字体透明度") + private Integer typographyLight; + + + //@ApiModelProperty(value ="中奖顺序") + private String awardLine; + //@ApiModelProperty(value ="中奖顺序索引") + private Integer awrdLineIndex; + + /** + * 抽奖规则 + */ + //每人每日有10次无门槛抽奖机会 + private Integer wmkcjjh; + //可用积分兑换1次抽奖机会, + private Integer dhycjfs; + // 每日最多兑换 + //10 + //次抽奖机会 + private Integer jfdhcs; + // 每人最多可中奖 + //10 + //次 + private Integer zzjcs; + // 总中奖率 + //10 + //% + private Integer zzjl; + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawInfoVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawInfoVo.java new file mode 100644 index 0000000..31f40da --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawInfoVo.java @@ -0,0 +1,44 @@ +package com.matrix.system.shopXcx.api.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data + +@ApiModel(value = "LuckyDrawInfoVo", description = "抽奖活动") +public class LuckyDrawInfoVo { + /** + * 主键 + */ + private Long id; + @ApiModelProperty(value ="活动今日是否可参与 1:是 2:否") + private int joinState; + @ApiModelProperty(value ="用户总积分") + private int totalScore; + + @ApiModelProperty(value ="用户今日剩余抽奖次数") + private int luckyDrawTime; + + public static final int JOINSTATE_YES = 1; + public static final int JOINSTATE_NOT = 2; + + @ApiModelProperty(value ="活动名称") + private String actName; + @ApiModelProperty(value ="活动编码") + private String actCode; + @ApiModelProperty(value ="活动开始时间") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") + private Date beginTime; + @ApiModelProperty(value ="活动结束时间") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") + private Date endTime; + @ApiModelProperty(value ="活动基本参数") + private LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo; + @ApiModelProperty(value ="奖品信息") + private List<ActivitySignAwardSetVo> activitySignAwardSetVos; +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawSuccessVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawSuccessVo.java new file mode 100644 index 0000000..3e2573e --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/LuckyDrawSuccessVo.java @@ -0,0 +1,150 @@ +package com.matrix.system.shopXcx.api.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +@Data + +@ApiModel(value = "LuckyDrawSuccessVo", description = "抽奖活动") +public class LuckyDrawSuccessVo { + + @ApiModelProperty(value ="奖励类型 1:日常奖励 2:累计奖励") + private int type; + + @ApiModelProperty(value ="累计奖励名称") + private String awardName; + @ApiModelProperty(value ="累计奖励图片") + private String awardImg; + @ApiModelProperty(value ="累计奖励核销码") + private String writeOffCode; + + @ApiModelProperty(value ="奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品)") + private int awardType; + + + public static final int AWARDTYPE_CUSTOMIZE = 1; + public static final int AWARDTYPE_SCORE = 2; + public static final int AWARDTYPE_COUPON = 3; + public static final int AWARDTYPE_GOODS = 4; + + @ApiModelProperty(value ="文字介绍") + private String introduceTip; + + /** + * 奖项库存数量 + */ + + + @ApiModelProperty(value ="奖项库存数量") + private int awardInventoryCnt; + + /** + * 已派发数量 + */ + + + @ApiModelProperty(value ="已派发数量") + private int awardDistributeCnt; + + /** + * 兑奖方式(1:线下兑换2:物流配送3:客服兑换) + */ + + + @ApiModelProperty(value ="兑奖方式(1:线下兑换2:物流配送3:客服兑换)") + private int awardWay; + + /** + * 奖品是否有效(1:有效 2:无效) + */ + @ApiModelProperty(value ="奖品是否有效(1:有效 2:无效)") + private int awardState; + public static final int AWARDSTATE_WORK = 1; + public static final int AWARDSTATE_UNWORK = 2; + + /** + * 操作提示 + */ + + @ApiModelProperty(value ="操作提示") + private String operationTip; + + /** + * 兑奖地址 + */ + + @ApiModelProperty(value ="兑奖地址") + private String prizeAddress; + + /** + * 兑奖期限开始日期 + */ + + + @ApiModelProperty(value ="兑奖期限开始日期") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") + private Date prizeStartTime; + + /** + * 兑奖期限结束日期 + */ + + @ApiModelProperty(value ="兑奖期限结束日期") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone="GMT+8") + private Date prizeEndTime; + + /** + * 客服微信 + */ + + @ApiModelProperty(value ="客服微信") + private String wechatImg; + + /** + * 积分数量 + */ + + + @ApiModelProperty(value ="积分数量") + private int scoreCnt; + + /** + * 优惠券ID + */ + + @ApiModelProperty(value ="优惠券") + private String couponName; + + @ApiModelProperty(value ="优惠券ID") + private String couponId; + + /** + * 商品ID + */ + + @ApiModelProperty(value ="商品") + private String goodsName; + + @ApiModelProperty(value ="商品ID") + private String goodsId; + + /** + * 活动主表ID + */ + + + @ApiModelProperty(value ="活动主表ID") + private Long activityId; + + /** + * 公司ID + */ + + + @ApiModelProperty(value ="公司ID") + private Long companyId; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SeeAwardTextVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SeeAwardTextVo.java index 7dd4cfc..c5733d6 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SeeAwardTextVo.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SeeAwardTextVo.java @@ -1,15 +1,20 @@ package com.matrix.system.shopXcx.api.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.matrix.system.shopXcx.bean.ShopLogisticsInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; +import java.util.List; @Data @ApiModel(value = "SeeAwardTextVo", description = "劵码信息") public class SeeAwardTextVo { + + @ApiModelProperty(value ="中奖记录ID") + private long id; @ApiModelProperty(value ="奖项名称") private String awardName; @@ -43,7 +48,29 @@ @ApiModelProperty(value ="客服微信") private String wechatImg; - @ApiModelProperty(value =" 是否已领取(1:待领取2:已领取)") + @ApiModelProperty(value ="客服电话") + private String customerPhone ; + + @ApiModelProperty(value =" 是否已领取(1:待领取2:已领取 3:待配送 4:待收货 5:已失效)") private Integer state; + /** + * 收货人 + */ + @ApiModelProperty(value ="收货人") + private String consignee; + /** + * 联系电话 + */ + @ApiModelProperty(value ="联系电话") + private String consigneePhone; + /** + * 收货地址 + */ + @ApiModelProperty(value =" 收货地址") + private String consigneeAddress; + + @ApiModelProperty(value ="物流信息记录") + private List<ShopLogisticsInfo> shopLogisticsInfos; + } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignAwardListVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignAwardListVo.java index 1b29b4e..daa0144 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignAwardListVo.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignAwardListVo.java @@ -27,7 +27,7 @@ @ApiModelProperty(value ="数量") private int total; - @ApiModelProperty(value ="是否已领取(1:待领取2:已领取 3:待配送 4:待收货)") + @ApiModelProperty(value ="是否已领取(1:待领取2:已领取 3:待配送 4:待收货 5:已失效)") private Integer state; @ApiModelProperty(value ="领取时间") diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignSuccessVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignSuccessVo.java index 298419d..de570bf 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignSuccessVo.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/SignSuccessVo.java @@ -1,22 +1,19 @@ package com.matrix.system.shopXcx.api.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; - @Data @ApiModel(value = "SignSuccessVo", description = "签到活动") public class SignSuccessVo { - @ApiModelProperty(value ="日常奖励名称") - private String normalAwardName; - @ApiModelProperty(value ="日常奖励图片") - private String normalAwardImg; + @ApiModelProperty(value ="奖励类型 1:日常奖励 2:累计奖励") + private int type; @ApiModelProperty(value ="累计奖励名称") private String awardName; diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java index 5cbb9a8..84d0d00 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopActivities.java @@ -34,6 +34,10 @@ * 活动类型 签到 */ public static final int ACTIVITIES_TYPE_SIGN = 4; + /** + * 活动类型转盘抽奖 + */ + public static final int ACTIVITIES_TYPE_LUCKYDRAW = 5; /** * 活动状态 开启 @@ -86,7 +90,7 @@ private Integer actStatus; //未发布 - public static final int ACTSTATUS_STATUS_RELEASE = 2; + public static final int ACTSTATUS_STATUS_RELEASE = 1; //未开始 public static final int ACTSTATUS_STATUS_READY = 2; //进行中 diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java index f82f46d..e19d5f5 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java @@ -3,6 +3,7 @@ import com.matrix.core.pojo.EntityDTO; import com.matrix.core.anotations.Extend; import com.matrix.core.tools.DateUtil; +import io.swagger.models.auth.In; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; @@ -126,6 +127,18 @@ public static final int ACTIVITY_TYPE_SECKILL = 3; /** + * 物流配送 + */ + public static final int SHIPPING_METHOD_WL = 1; + + /** + * 门店自提 + */ + public static final int SHIPPING_METHOD_MDZT = 2; + + + + /** * 主键 */ private Integer id; @@ -225,7 +238,7 @@ /** * 配送方式(1=物流,2=门店自取) */ - private String shippingMethod; + private Integer shippingMethod; /** * 配送门店ID @@ -467,11 +480,11 @@ this.remarks = remarks; } - public String getShippingMethod() { + public Integer getShippingMethod() { return shippingMethod; } - public void setShippingMethod(String shippingMethod) { + public void setShippingMethod(Integer shippingMethod) { this.shippingMethod = shippingMethod; } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java index d4a419b..913bfc7 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopActivitiesDao.java @@ -59,4 +59,6 @@ public ShopActivities selectOneByCompanyIdAndActTypeAndActStatus(@Param("companyId")Long companyId, @Param("activitiesTypeSign")int activitiesTypeSign, @Param("actstatusStatusIng")int actstatusStatusIng); + + List<ShopActivities> selectOneByCompanyIdAndActType(@Param("companyId")Long companyId,@Param("activitiesTypeSign") int activitiesTypeSign); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateGroupBuyDTO.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateGroupBuyDTO.java index b0c67a9..450560e 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateGroupBuyDTO.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateGroupBuyDTO.java @@ -40,7 +40,7 @@ /** * 配送方式 */ - private String shippingMethod; + private Integer shippingMethod; /** * 拼团ID diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateSecKillDTO.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateSecKillDTO.java index ad70120..5d479bd 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateSecKillDTO.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/CreateSecKillDTO.java @@ -1,11 +1,14 @@ package com.matrix.system.shopXcx.dto; +import lombok.Data; + import java.math.BigDecimal; /** * @author wzy * @date 2020-04-09 15:49 **/ +@Data public class CreateSecKillDTO { /** @@ -31,7 +34,7 @@ /** * 配送方式 */ - private String shippingMethod; + private Integer shippingMethod; private BigDecimal price; @@ -39,67 +42,4 @@ private String openId; - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public Integer getAddressId() { - return addressId; - } - - public void setAddressId(Integer addressId) { - this.addressId = addressId; - } - - public Integer getCount() { - return count; - } - - public void setCount(Integer count) { - this.count = count; - } - - public Long getShopId() { - return shopId; - } - - public void setShopId(Long shopId) { - this.shopId = shopId; - } - - public String getShippingMethod() { - return shippingMethod; - } - - public void setShippingMethod(String shippingMethod) { - this.shippingMethod = shippingMethod; - } - - public BigDecimal getPrice() { - return price; - } - - public void setPrice(BigDecimal price) { - this.price = price; - } - - public Integer getGoodsId() { - return goodsId; - } - - public void setGoodsId(Integer goodsId) { - this.goodsId = goodsId; - } - - public String getOpenId() { - return openId; - } - - public void setOpenId(String openId) { - this.openId = openId; - } } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java index 8bd67c4..99d77a6 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java @@ -10,6 +10,7 @@ String CREATE_ORDER = "CREATE_ORDER"; String SALES_ORDER = "SALES_ORDER"; String SCORE_ORDER = "SCORE_ORDER"; + String DINGDING_NOTICE = "DINGDING_NOTICE" ; /** * 发送微信消息 */ diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java new file mode 100644 index 0000000..41bc09c --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderDingDingNoticeTask.java @@ -0,0 +1,64 @@ +package com.matrix.system.shopXcx.mqTask; + + +import com.matrix.core.tools.DingDingRobotUtil; +import com.matrix.core.tools.LogUtil; +import com.matrix.core.tools.StringUtils; +import com.matrix.system.common.bean.BusParameterSettings; +import com.matrix.system.common.constance.AppConstance; +import com.matrix.system.common.dao.BusParameterSettingsDao; +import com.matrix.system.hive.bean.SysVipInfo; +import com.matrix.system.hive.dao.SysVipInfoDao; +import com.matrix.system.shopXcx.bean.ShopOrder; +import com.matrix.system.shopXcx.bean.ShopOrderDetails; +import com.matrix.system.shopXcx.dao.ShopOrderDao; +import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao; +import com.rabbitmq.client.DeliverCallback; +import com.rabbitmq.client.Delivery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.List; + +/** + * 微商城订单同步到erp系统 + */ +@Component +public class OrderDingDingNoticeTask implements DeliverCallback { + + + @Autowired + ShopOrderDao shopOrderDao; + + @Autowired + ShopOrderDetailsDao shopOrderDetailsDao; + + + @Autowired + BusParameterSettingsDao parameterSettingsDao; + + @Autowired + SysVipInfoDao sysVipInfoDao; + + @Override + public void handle(String consumerTag, Delivery message) throws IOException { + String orderId = new String(message.getBody(), "UTF-8"); + //获取订单信息 + ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); + LogUtil.debug("收到创建订单通知任务orderId={}", orderId); + BusParameterSettings wxOrderNoticeDingdingToken = parameterSettingsDao.selectCompanyParamByCode(AppConstance.WX_ORDER_NOTICE_DINGDING_TOKEN, order.getCompanyId()); + if (wxOrderNoticeDingdingToken != null && StringUtils.isNotBlank(wxOrderNoticeDingdingToken.getParamValue())) { + //获取订单详情 + List<ShopOrderDetails> orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId)); + StringBuilder content = new StringBuilder(); + orderDetails.stream().forEach(i -> content.append(i.getsTitle()).append("*").append( + i.getCount()).append(";")); + + DingDingRobotUtil.sendText(wxOrderNoticeDingdingToken.getParamValue(),"微商城订单 ("+order.getUserName()+") | 订单金额:¥"+order.getOrderMoney()+",订单内容:"+ content.toString(),""); + }else{ + LogUtil.debug("未配置订单钉钉提醒"); + } + } + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/quartz/ShopActivityTimeOutQuartz.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/quartz/ShopActivityTimeOutQuartz.java index 1075d98..865fb65 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/quartz/ShopActivityTimeOutQuartz.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/quartz/ShopActivityTimeOutQuartz.java @@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; @@ -98,6 +99,7 @@ * * @param groupJoin */ + @Transactional public void doUnVirtualGroup(ShopActivitiesGroupJoin groupJoin) { LogUtil.info("#非虚拟拼团逻辑处理#"); groupJoin.setGjStatus(ShopActivitiesGroupJoin.ACTIVITIES_JOIN_FAIL); diff --git a/zq-erp/src/main/resources/config/db/increment/2021-04-20bug.sql b/zq-erp/src/main/resources/config/db/increment/2021-04-20bug.sql new file mode 100644 index 0000000..9484f88 --- /dev/null +++ b/zq-erp/src/main/resources/config/db/increment/2021-04-20bug.sql @@ -0,0 +1,5 @@ +update shop_order set shipping_method='1' where shipping_method='物流配送'; +update shop_order set shipping_method='2' where shipping_method='立即配送'; + +ALTER TABLE `shop_order` +MODIFY COLUMN `shipping_method` int(2) NULL DEFAULT NULL AFTER `remarks`; diff --git "a/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" "b/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" index 966c947..f7b1b4a 100644 --- "a/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" +++ "b/zq-erp/src/main/resources/config/db/increment/\347\255\276\345\210\260\346\264\273\345\212\250.sql" @@ -184,6 +184,17 @@ ALTER TABLE `shop_delivery_info` ADD COLUMN `receive_id` bigint(20) NULL COMMENT '奖品领取ID' AFTER `company_id`; +ALTER TABLE `activity_sign_award_set` + ADD COLUMN `customer_phone` varchar(100) NULL COMMENT '客服电话' AFTER `company_id`; + +ALTER TABLE `shop_delivery_info` + MODIFY COLUMN `order_id` int(11) NULL AFTER `logistics_company`; + +ALTER TABLE `shop_delivery_info` + MODIFY COLUMN `order_no` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `user_id`; + + + diff --git a/zq-erp/src/main/resources/config/test/application.properties b/zq-erp/src/main/resources/config/test/application.properties index cd48b66..cc4b62c 100644 --- a/zq-erp/src/main/resources/config/test/application.properties +++ b/zq-erp/src/main/resources/config/test/application.properties @@ -6,7 +6,7 @@ spring.datasource.username=ct_test spring.datasource.password=123456 -spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 +spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test_meidu?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 #spring.datasource.username=chuhuan #spring.datasource.password=chuhuan diff --git a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml index 886a2fe..6d8b000 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignAwardSetDao.xml @@ -15,4 +15,28 @@ and a.award_state = #{awardState} </select> + <select id="selectListByActIDAndCompanyIdAndAwardType" resultType="com.matrix.system.shopXcx.api.vo.ActivitySignAwardSetVo"> + SELECT + * + FROM + activity_sign_award_set a + where + a.activity_id = #{actId} + and a.company_id = #{companyId} + and a.award_state = #{awardState} + and a.award_rule = #{awardRule} + </select> + + <select id="selectActivitySignAwardSetByActIDAndCompanyIdAndAwardType" resultType="com.matrix.system.activity.entity.ActivitySignAwardSet"> + SELECT + * + FROM + activity_sign_award_set a + where + a.activity_id = #{actId} + and a.company_id = #{companyId} + and a.award_state = #{awardState} + and a.award_rule = #{awardRule} + </select> + </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml index bedd3e1..d15125a 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignReceiveRecordDao.xml @@ -14,11 +14,15 @@ c.cumulative_day cumulativeDay, c.award_type awardType, c.award_name awardName, + c.coupon_name couponName, + c.score_cnt scoreCnt, + d.act_type actType, c.award_rule awardRule FROM activity_sign_receive_record a - LEFT JOIN biz_user b ON a.user_id = b.user_id + LEFT JOIN sys_vip_info b ON a.user_id = b.id LEFT JOIN activity_sign_award_set c ON a.award_id = c.id + LEFT JOIN shop_activities d ON a.award_id = d.id <where> a.company_id = #{record.companyId} and a.activity_id = #{record.actId} @@ -118,6 +122,9 @@ SELECT a.id id, a.state state, + a.consignee_phone consigneePhone, + a.consignee_address consigneeAddress, + a.consignee, a.receive_time receiveTime, a.write_off_code writeOffCode, 1 total, @@ -128,6 +135,7 @@ b.prize_start_time prizeStartTime, b.award_way awardWay, b.introduce_img introduceImg, + b.customer_phone customerPhone, b.award_name awardName FROM activity_sign_receive_record a diff --git a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml index f84a474..140d8ff 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignRecordDao.xml @@ -24,4 +24,15 @@ and a.user_id = #{userId} </select> + <select id="selectListByActIdAndUserIdLikesignTime" resultType="com.matrix.system.activity.entity.ActivitySignRecord"> + SELECT + * + FROM + activity_sign_record a + where + a.activity_id = #{actId} + and a.user_id = #{userId} + and a.sign_time like concat('%',DATE(#{format}),'%') +</select> + </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignWriteoffDao.xml b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignWriteoffDao.xml index 2a3fa33..748d06f 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignWriteoffDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/activity/ActivitySignWriteoffDao.xml @@ -63,7 +63,7 @@ f.receive_address receiveAddress FROM activity_sign_writeoff a - left join biz_user b on a.user_id= b.user_id + left join sys_vip_info b on a.user_id= b.id left join shop_activities c on a.act_id= c.id left join activity_sign_award_set d on a.award_id= d.id left join activity_sign_receive_record e on a.receive_id= e.id @@ -89,7 +89,7 @@ b.nick_name zjr FROM activity_sign_receive_record a - left join biz_user b on a.user_id= b.user_id + left join sys_vip_info b on a.user_id= b.id where a.user_id = #{userId} and a.award_id = #{receiveId} </select> @@ -101,4 +101,13 @@ where a.id = #{logisticsId} </select> + <select id="selectActivitySignWriteoffByUserIDAndReceiveId" resultType="com.matrix.system.activity.entity.ActivitySignWriteoff"> + SELECT + * + FROM + activity_sign_writeoff a + where a.receive_id = #{receiveId} + and a.user_id = #{userId} + </select> + </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml index 846e27b..6c658ad 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml @@ -557,4 +557,11 @@ where a.ORDER_ID=#{orderId} </select> + <!-- 临时数据处理sql --> + <select id="selectDgd" resultMap="SysOrderItemMap"> + SELECT a.* from sys_order_item a + left join sys_order b on a.ORDER_ID=b.id + where a.type='家居产品' and DATE_FORMAT(a.create_time,'%Y-%m')='2021-04' and b.company_id=17 and b.STATU='已付款'; + </select> + </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml index 7bc1f4c..4ad1d1f 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopActivitiesDao.xml @@ -428,4 +428,15 @@ and a.act_type=#{activitiesTypeSign} and a.act_status=#{actstatusStatusIng} </select> + + <select id="selectOneByCompanyIdAndActType" resultType="com.matrix.system.shopXcx.bean.ShopActivities"> + SELECT + * + FROM + shop_activities a + where + a.company_id=#{companyId} + and a.act_type=#{activitiesTypeSign} + and a.act_status != 5 + </select> </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/static/images/luckyDraw/line.png b/zq-erp/src/main/resources/static/images/luckyDraw/line.png new file mode 100644 index 0000000..7df2255 --- /dev/null +++ b/zq-erp/src/main/resources/static/images/luckyDraw/line.png Binary files differ diff --git a/zq-erp/src/main/resources/static/images/luckyDraw/oAward.png b/zq-erp/src/main/resources/static/images/luckyDraw/oAward.png new file mode 100644 index 0000000..4e78626 --- /dev/null +++ b/zq-erp/src/main/resources/static/images/luckyDraw/oAward.png Binary files differ diff --git a/zq-erp/src/main/resources/static/images/luckyDraw/sAward.png b/zq-erp/src/main/resources/static/images/luckyDraw/sAward.png new file mode 100644 index 0000000..97f5ab7 --- /dev/null +++ b/zq-erp/src/main/resources/static/images/luckyDraw/sAward.png Binary files differ diff --git a/zq-erp/src/main/resources/static/images/luckyDraw/start.png b/zq-erp/src/main/resources/static/images/luckyDraw/start.png new file mode 100644 index 0000000..2dc6ec6 --- /dev/null +++ b/zq-erp/src/main/resources/static/images/luckyDraw/start.png Binary files differ diff --git a/zq-erp/src/main/resources/static/images/luckyDraw/tAward.png b/zq-erp/src/main/resources/static/images/luckyDraw/tAward.png new file mode 100644 index 0000000..2752767 --- /dev/null +++ b/zq-erp/src/main/resources/static/images/luckyDraw/tAward.png Binary files differ diff --git a/zq-erp/src/main/resources/static/images/luckyDraw/xiexiecanyu.png b/zq-erp/src/main/resources/static/images/luckyDraw/xiexiecanyu.png new file mode 100644 index 0000000..7df35a1 --- /dev/null +++ b/zq-erp/src/main/resources/static/images/luckyDraw/xiexiecanyu.png Binary files differ diff --git a/zq-erp/src/main/resources/static/images/luckyDraw/zhuanpan.png b/zq-erp/src/main/resources/static/images/luckyDraw/zhuanpan.png new file mode 100644 index 0000000..1cbf542 --- /dev/null +++ b/zq-erp/src/main/resources/static/images/luckyDraw/zhuanpan.png Binary files differ diff --git a/zq-erp/src/main/resources/static/images/luckyDraw/zhuanpanchoujian.png b/zq-erp/src/main/resources/static/images/luckyDraw/zhuanpanchoujian.png new file mode 100644 index 0000000..65b216b --- /dev/null +++ b/zq-erp/src/main/resources/static/images/luckyDraw/zhuanpanchoujian.png Binary files differ diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html index a0a285b..1054379 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-list.html @@ -88,22 +88,23 @@ <span v-if="scope.row.actType == 2">秒杀</span> <span v-if="scope.row.actType == 3">沙龙</span> <span v-if="scope.row.actType == 4">每日签到</span> + <span v-if="scope.row.actType == 5">转盘抽奖</span> </template> </el-table-column> <el-table-column label="状态"> <template slot-scope="scope"> - <div v-if="scope.row.actType == 4"> + <div v-if="scope.row.actType == 4 || scope.row.actType == 5"> <span v-if="scope.row.actStatus == 1">未发布</span> </div> - <div v-if="scope.row.actType != 4"> + <div v-if="scope.row.actType != 4 && scope.row.actType != 5"> <span v-if="scope.row.actStatus == 1">开启</span> </div> - <div v-if="scope.row.actType == 4"> + <div v-if="scope.row.actType == 4 || scope.row.actType == 5"> <span v-if="scope.row.actStatus == 2">未开始</span> </div> - <div v-if="scope.row.actType != 4"> + <div v-if="scope.row.actType != 4 && scope.row.actType != 5"> <span v-if="scope.row.actStatus == 2">关闭</span> </div> <span v-if="scope.row.actStatus == 3">进行中</span> @@ -133,7 +134,7 @@ </el-table-column> <el-table-column label="操作" width="400"> <template slot-scope="scope"> - <el-row style="display:flex;" v-if="scope.row.actType == 4"> + <el-row style="display:flex;" v-if="[4].includes(scope.row.actType)"> <el-button type="primary" v-if="scope.row.actStatus == 1" size="mini" @click="beReady(scope.row)">发布</el-button> <el-button type="primary" v-if="[1,2,3].includes(scope.row.actStatus)" @click="beUpdate(scope.row)" size="mini">修改</el-button> <el-button type="primary" v-if="scope.row.actStatus == 3" size="mini">推广</el-button> @@ -141,7 +142,15 @@ <el-button type="primary" v-if="scope.row.actStatus == 3" @click="beClose(scope.row)" size="mini">关闭</el-button> <el-button type="danger" v-if="scope.row.actStatus != 5" size="mini" @click="delRow(scope.row)">删除</el-button> </el-row> - <el-row style="display:flex;" v-if="scope.row.actType != 4"> + <el-row style="display:flex;" v-if="[5].includes(scope.row.actType)"> + <el-button type="primary" v-if="scope.row.actStatus == 1" size="mini" @click="beReady(scope.row)">发布</el-button> + <el-button type="primary" v-if="[1,2,3].includes(scope.row.actStatus)" @click="beUpdateLuckdraw(scope.row)" size="mini">修改</el-button> + <el-button type="primary" v-if="scope.row.actStatus == 3" size="mini">推广</el-button> + <el-button type="primary" v-if="[3,4,5].includes(scope.row.actStatus)" @click="openLuckdrawReceive(scope.row)" size="mini">活动统计</el-button> + <el-button type="primary" v-if="scope.row.actStatus == 3" @click="beClose(scope.row)" size="mini">关闭</el-button> + <el-button type="danger" v-if="scope.row.actStatus != 5" size="mini" @click="delRow(scope.row)">删除</el-button> + </el-row> + <el-row style="display:flex;" v-if="[1,2,3].includes(scope.row.actType)"> <el-button type="primary" @click="openEdit(scope.row)" size="mini">编辑</el-button> <el-button type="primary" @click="activityStatistics(scope.row)" size="mini">活动统计</el-button> <el-button type="primary" @click="closeAct(scope.row)" size="mini">关闭</el-button> @@ -345,6 +354,17 @@ content : [ basePath + '/admin/redirect/activity/activity-sign-update?actId=' + row.id] })); }, + //修改 + beUpdateLuckdraw(row){ + layer.full(layer.open({ + type: 2, + title: "修改", + maxmin: true, + area: [MUI.SIZE_L, '500px'], + content : [ basePath + '/admin/redirect/activity/activity-luckyDraw-update?actId=' + row.id] + })); + }, + //活动统计 openSignReceive(row){ layer.full(layer.open({ @@ -355,6 +375,16 @@ content : [ basePath + '/admin/redirect/activity/activity-sign-receive?actId=' + row.id] })); }, + //活动统计 + openLuckdrawReceive(row){ + layer.full(layer.open({ + type: 2, + title: "活动统计", + maxmin: true, + area: [MUI.SIZE_L, '500px'], + content : [ basePath + '/admin/redirect/activity/activity-luckdraw-receive?actId=' + row.id] + })); + }, //发布 beReady(row){ let _this = this; diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-luckdraw-receive.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-luckdraw-receive.html new file mode 100644 index 0000000..17d0308 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-luckdraw-receive.html @@ -0,0 +1,279 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + + <!-- 富文本编辑器 --> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.config.js}"></script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.all.js}"> + </script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> + <style> + .panel-body{ + overflow: hidden; + } + .paginationStyle{ + background: #ffffff; + padding: 10px 10px; + margin: 0px 0px 10px 0px; + text-align: right; + } + </style> +</head> + +<body> +<div class="panel-body" id="app" v-cloak> + <el-row> + <el-row justify="space-between" type="flex"> + <el-col> + <el-form ref="form" :model="form" inline > + <el-form-item label="用户名称" prop="yhmc" > + <el-input v-model="form.yhmc" placeholder="用户名称"></el-input> + </el-form-item> + <el-form-item prop="qdsj" label="签到时间"> + <el-date-picker + v-model="form.qdsj" + type="datetimerange" + :picker-options="pickerOptions" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期" + align="right"> + </el-date-picker> + </el-form-item> + <el-button type="primary" @click="searchFormSignReceive" >搜索</el-button> + <el-button @click="resetFormSignReceive('form')">重置</el-button> + </el-form> + </el-col> + </el-row> + + <el-row class="table-style" > + <el-table ref="multipleTable" + :data="signReceiveList.rows" + :height="height" + stripe:true + @sort-change="sortChange" + @selection-change="handleSelectionChange"> + <el-table-column + type="selection"> + </el-table-column> + <el-table-column + prop="nickName" + label="用户" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="reciveTime" + label="抽奖时间" + show-overflow-tooltip> + </el-table-column> + <el-table-column + label="状态" + show-overflow-tooltip> + <template slot-scope="scope"> + <span v-if="scope.row.state == 1">待领取</span> + <span v-if="scope.row.state == 2">已领取</span> + <span v-if="scope.row.state == 3">待配送</span> + <span v-if="scope.row.state == 4">待收货</span> + <span v-if="scope.row.state == 5">已失效</span> + </template> + </el-table-column> + <el-table-column + label="奖品类型"> + <template slot-scope="scope"> + <span v-if="scope.row.awardType == 1">自定义礼品</span> + <span v-if="scope.row.awardType == 2">积分</span> + <span v-if="scope.row.awardType == 3">优惠券</span> + <span v-if="scope.row.awardType == 4">店铺商品</span> + </template> + </el-table-column> + <el-table-column + prop="awardName" + label="获得奖励" + show-overflow-tooltip> + </el-table-column> + + <el-table-column + label="奖励名称" + show-overflow-tooltip> + <template slot-scope="scope"> + {{scope.row.awardName}} + <span v-if="scope.row.awardType == 3">({{scope.row.couponName}})</span> + <span v-if="scope.row.awardType == 2">(*{{scope.row.scoreCnt}})</span> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSignReceive" + @current-change="changeCurrentPageSignReceive" + :current-page="signReceiveList.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="signReceiveList.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="signReceiveList.total"> + </el-pagination> + </el-row> + </el-row> +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> + +<script> + //获取传输的活动对象 + var actId = $.query.get("actId"); + + var app = new Vue({ + el: '#app', + data: { + height:'calc(100vh - 200px)', + //--时间选择 + pickerOptions: { + shortcuts: [{ + text: '最近一周', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近一个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近三个月', + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + picker.$emit('pick', [start, end]); + } + }] + }, + // 条件查询 + form:{ + yhmc:'', + qdsj:'', + order:'', + sort:'' + }, + //活动列表 + signReceiveList:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + }, + created: function () { + this.loadInfo(); + }, + mounted: function () { + }, + methods: { + //加载分类 + loadInfo() { + let _this = this; + _this.loadSignReceiveList(); + }, + //--列表 + loadSignReceiveList() { + let _this = this; + let data=_this.getRequestParamSignReceive(); + data.pageSize=_this.signReceiveList.pageSize; + data.pageNum=_this.signReceiveList.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/findSignReceiveList', + callback: function (data) { + _this.signReceiveList.rows = data.rows; + _this.signReceiveList.total = data.total; + } + }); + },//查询参数 + getRequestParamSignReceive(){ + let _this = this; + let startTime = ''; + let endTime = ''; + if(_this.form.qdsj.length > 0){ + startTime = _this.form.qdsj[0]; + endTime = _this.form.qdsj[1]; + } + return { + yhmc:_this.form.yhmc, + startTime:startTime, + endTime:endTime, + actId:actId, + order:_this.form.order, + sort:_this.form.sort, + } + }, + //查询 + searchFormSignReceive:function(){ + this.signReceiveList.currentPage=1; + this.loadSignReceiveList(); + }, + //重置 + resetFormSignReceive(formName) { + this.$refs[formName].resetFields(); + }, + changePageSignReceive(val) { + this.signReceiveList.pageSize = val; + this.loadSignReceiveList(); + }, + changeCurrentPageSignReceive(val) { + this.signReceiveList.currentPage = val; + this.loadSignReceiveList(); + }, + //排序 + sortChange:function (column){ + if(column.order){ + if(column.order.indexOf("desc")){ + this.form.order="desc"; + }else{ + this.form.order="asc"; + } + this.form.sort=column.prop; + this.loadInfo(); + } + }, + //选择 + handleSelectionChange(val) { + let _this = this; + _this.multipleSelection = val; + }, + } + }) +</script> + +</body> +</html> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-luckyDraw-update.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-luckyDraw-update.html new file mode 100644 index 0000000..4c3ec30 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-luckyDraw-update.html @@ -0,0 +1,1116 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + + <!-- 富文本编辑器 --> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.config.js}"></script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.all.js}"> + </script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> + <style> + + .el-aside { + background-color: #D3DCE6; + color: #333; + text-align: center; + } + .el-main { + background-color: #E9EEF3; + color: #333; + } + body > .el-container { + margin-bottom: 1000px; + } + .button { + padding: 5px; + text-align: center; + } + + .imageOne { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + .imageTwo { + display: block; + height: 280px; + padding: 5px 5px; + text-align: center; + } + .imageThree { + display: block; + padding: 5px 5px; + text-align: center; + } + + .box-card { + padding: 5px 5px; + } + + </style> +</head> + +<body> +<div class="panel-body" id="app" v-cloak> + <el-form :model="ruleForm" :rules="rules" class="form-horizontal" id="dataform" ref="ruleForm" label-width="120px"> + + <el-container> + <el-aside width="30%"> + <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> + <el-row> + <div @click="uploadImg()" class="imageTwo" > + <img v-if="imageUrlHead" :src="imageUrlHead" style="width: 100%;height: 100%"> + <el-button type="primary" v-show="imageUrlHead == ''" round><span style="font-size: 20px;">头部</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + </div> + </el-row> + <el-row style="display:flex;"> + <el-col> + <div style="padding:5px;font-size: 15px;text-align: left;"> + <el-button type="primary" size="mini" round> + <span>拥有积分:</span> + </el-button> + </div> + </el-col> + </el-row> + + <el-row> + <div @click="uploadImg()" class="imageThree" > + <el-button type="primary" v-show="imageUrlButton == ''" round><span style="font-size: 20px;">签到按钮</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + <img v-if="imageUrlButton" :src="imageUrlButton" style="width: 100%;"> + </div> + </el-row> + + + <el-row> + <div style="text-align: center;padding: 5px;" @click="gzsmSet()"> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 30px;">-- 规则说明--</span> + </div> + <div class="el-col-sm-24" style="text-align: center;"> + <span style="padding:5px;font-size: 15px;color: red;">(点击,编辑规则内容,背景颜色,字体颜色、大小、透明度)</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">1、每天参与签到可获得积分换取抽奖机会</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">2、每天参与签到可获得积分换取抽奖机会</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">3、每天参与签到可获得积分换取抽奖机会</span> + </div> + </div> + </el-row> + </el-card> + </el-aside> + + <el-main width="70%"> + <div> + <el-tabs v-model="activeName" @tab-click="clickSecondTab"> + <el-tab-pane label="活动设置" name="first"> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动名称" prop="actName"> + <el-input v-model="ruleForm.actName" placeholder="请输入活动名称"></el-input> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动编码" prop="actCode"> + <el-input v-model.number="ruleForm.actCode" placeholder="请输入最大开团数量"></el-input> + </el-form-item> + </div> + <div class="col-sm-4 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动时间" prop="actTime"> + <div class="block"> + <el-date-picker + v-model="ruleForm.actTime" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </div> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <p class="el-big-title" style="text-align: left;">抽奖规则</p> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="每日抽奖机会"> + <el-form-item label="每人每日有" prop="wmkcjjh"> + <el-input-number v-model="ruleForm.wmkcjjh" :min="1" :max="10" label="描述文字"></el-input-number> 次无门槛抽奖机会 + </el-form-item> + </el-form-item> + <el-form-item> + <el-form-item label="可用" prop="dhycjfs"> + <el-input-number v-model="ruleForm.dhycjfs" :min="1" :max="200" label="描述文字"></el-input-number> 积分兑换1次抽奖机会,每日最多兑换 + </el-form-item> + </el-form-item> + <el-form-item> + <el-form-item label="每日最多兑换" prop="jfdhcs"> + <el-input-number v-model="ruleForm.jfdhcs" :min="1" :max="10" label="描述文字"></el-input-number> 次抽奖机会 + </el-form-item> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="中奖概率"> + <el-form-item label="每人最多中奖" prop="zzjcs"> + <el-input-number v-model="ruleForm.zzjcs" :min="1" :max="100" label="描述文字"></el-input-number> 次 + </el-form-item> + </el-form-item> + <el-form-item> + <el-form-item label="总中奖率" prop="zzjl"> + <el-input-number v-model="ruleForm.zzjl" :min="1" :max="100" label="描述文字"></el-input-number> % + </el-form-item> + </el-form-item> + </div> + </el-tab-pane> + + <el-tab-pane label="奖品设置" name="second"> + <el-row style="display:flex;"> + <el-col :span="20"> + <el-tabs v-model="editableTabsValue" type="card" closable @tab-click="clickTab" @tab-remove="removeTab"> + <el-tab-pane v-for="(item, index) in editableTabs" :key="item.name" :label="item.title" :name="item.name"> + <el-row v-show="editableTabsValue !== '1'"> + </el-row> + <el-row > + <el-col> + <el-form-item label="奖项名称"> + <el-input v-model="item.content.awardName" placeholder="奖项名称"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="图片介绍"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="introduceImgSuccess"> + <img v-if="item.content.introduceImg" :src="item.content.introduceImg" style="max-width: 200px;"> + </el-upload> + </el-form-item> + </el-col> + </el-row> + <div v-show="item.name !== '1'"> + <el-row> + <el-form-item label="奖项类型"> + <el-col> + <el-radio-group v-model="item.content.awardType" @change="jxlxChange"> + <el-radio :label="1">自定义奖品</el-radio> + <el-radio :label="2">积分</el-radio> + <el-radio :label="3">优惠券</el-radio> + <el-radio :label="4">商品</el-radio> + </el-radio-group> + </el-col> + </el-form-item > + </el-row> + + <div> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="奖项库存"> + <el-input v-model="item.content.awardInventoryCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="已派发"> + <el-input v-model="item.content.awardDistributeCnt"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === 1"> + <el-row > + <el-col> + <el-form-item label="文字介绍"> + <el-input type="textarea" v-model="item.content.introduceTip"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="兑奖方式"> + <el-col> + <el-radio-group v-model="item.content.awardWay" @change="awardWayChange"> + <el-radio :label="'1'">线下兑换</el-radio> + <el-radio :label="'2'">物流配送</el-radio> + <el-radio :label="'3'">客服兑换</el-radio> + </el-radio-group> + </el-col> + </el-form-item > + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="操作提示"> + <el-input v-model="item.content.operationTip"></el-input> + </el-form-item> + </el-col> + </el-row> + <div v-show="item.content.awardWay === '1'"> + <el-row > + <el-col> + <el-form-item label="兑奖地址"> + <el-input v-model="item.content.prizeAddress"></el-input> + </el-form-item> + </el-col> + </el-row> + + </div> + <div v-show="item.content.awardWay === '3'"> + <el-row > + <el-col> + <el-form-item label="客服微信"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="wechatImgSuccess"> + <img v-if="item.content.wechatImg" :src="item.content.wechatImg" style="max-width: 200px;"> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="[1,3].includes(item.content.awardWay)"> + <el-row > + <el-col> + <el-form-item label="客服电话"> + <el-input v-model="item.content.customerPhone"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardWay !== '2'"> + <el-row > + <el-col> + <el-form-item label="兑奖期限"> + <div class="block"> + <el-date-picker + v-model="item.content.prizeTime" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + </div> + <div v-show="item.content.awardType === 2"> + <el-row > + <el-col> + <el-form-item label="积分数量"> + <el-input v-model="item.content.scoreCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === 3"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="优惠券名称"> + <el-input v-model="item.content.couponName"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="优惠券"> + <el-input v-model="item.content.couponId"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-button type="primary" @click="chooseCoupon(item.content.couponName,item.name)"> + 选择优惠券 + </el-button> + </el-col> + </el-row> + + <el-drawer + title="选择商城优惠券" + :visible.sync="drawerCoupon" + :direction="directionCoupon" + size="90%"> + <el-row style="margin-left: 50px;"> + <el-col :span="24"> + <el-row> + <el-form ref="formCoupon" :model="formCoupon" inline > + <el-form-item prop="yhjmc"> + <el-input v-model="formCoupon.yhjmc" placeholder="请输入优惠券名称"></el-input> + </el-form-item> + <el-button type="primary" @click="searchFormCoupon" >搜索</el-button> + <el-button @click="resetFormCoupon('formCoupon')">重置</el-button> + </el-form> + </el-row> + + <el-row class="table-style" > + <el-table ref="multipleTable" + :data="couponList.rows" + :height="tableHeightCoupon" + stripe:true + style="width: 100%"> + <el-table-column + prop="cname" + label="优惠券名称" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="endTime" + label="截止日期" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="address" + label="操作"> + <template slot-scope="scope"> + <el-button type="primary" + size="mini" + @click="chooseOneCoupon(scope.row)">选择 + </el-button> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSizeCoupon" + @current-change="changeCurrentPageCoupon" + :current-page="couponList.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="couponList.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="couponList.total"> + </el-pagination> + </el-row> + </el-col> + </el-row> + </el-drawer> + </div> + <div v-show="item.content.awardType === 4"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="品项名称"> + <el-input v-model="item.content.goodsName"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="品项"> + <el-input v-model="item.content.goodsId"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-button type="primary" @click="chooseGoods(item.content.goodsName,item.name)"> + 选择品项 + </el-button> + </el-col> + </el-row> + + <el-drawer + title="选择ERP产品" + :visible.sync="drawerGoods" + :direction="directionGoods" + size="90%"> + <el-row style="margin-left: 50px;"> + <el-col :span="24"> + <el-row> + <el-form ref="formGoods" :model="formGoods" inline > + <el-form-item prop="cpmc"> + <el-input v-model="formGoods.cpmc" placeholder="请输入产品名称"></el-input> + </el-form-item> + <el-button type="primary" @click="searchFormGoods" >搜索</el-button> + <el-button @click="resetFormGoods('formGoods')">重置</el-button> + </el-form> + </el-row> + + <el-row class="table-style" > + <el-table ref="multipleTable" + :data="goodsList.rows" + :height="tableHeightGoods" + stripe:true + style="width: 100%"> + <el-table-column + prop="name" + label="名称" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="address" + label="操作"> + <template slot-scope="scope"> + <el-button type="primary" + size="mini" + @click="chooseOneGoods(scope.row)">选择 + </el-button> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSizeGoods" + @current-change="changeCurrentPageGoods" + :current-page="goodsList.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="goodsList.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="goodsList.total"> + </el-pagination> + </el-row> + </el-col> + </el-row> + </el-drawer> + </div> + </div> + </el-tab-pane> + </el-tabs> + </el-col> + <el-col :span="4"> + <el-button type="primary" @click="addTab(editableTabsValue)"> + 新增奖品 + </el-button> + </el-col> + </el-row> + </el-tab-pane> + + <el-tab-pane label="背景图片上传" name="third"> + <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="标题"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlTitleSuccess"> + <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div>--> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="头部"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlHeadSuccess"> + <img v-if="imageUrlHead" :src="imageUrlHead" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="开始按钮"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlTitleSuccess"> + <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="奖品划分线"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageLineSuccess"> + <img v-if="imageLine" :src="imageLine" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + + <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="转盘背景"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlButtonSuccess"> + <img v-if="imageUrlButton" :src="imageUrlButton" style="max-width: 300px;"> + <i v-else></i> + </el-upload> + </el-form-item> + </div>--> + </el-tab-pane> + + <el-tab-pane label="规则说明" name="fourth"> + <div class="col-sm-8 col-sm-offset-1"> + <el-form-item label="规则内容" prop="ruleExplain" style="padding: 10px"> + <el-input type="textarea" v-model="ruleForm.ruleExplain"></el-input> + </el-form-item> + <el-form-item label="背景颜色" style="padding: 10px"> + <el-color-picker v-model="backgroundColor"></el-color-picker> + </el-form-item> + <el-form-item label="字体颜色" style="padding: 10px"> + <el-color-picker v-model="typographyColor"></el-color-picker> + </el-form-item> + <el-form-item label="字体大小" style="padding: 10px"> + <el-input-number v-model="typographyNum" :min="10" :max="50" label="描述文字"></el-input-number> + </el-form-item> + <!--<el-form-item label="字体透明度" style="padding: 10px"> + <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number> + </el-form-item>--> + </div> + </el-tab-pane> + </el-tabs> + </div> + + <div class="form-group "> + <div class="col-sm-12 text-center"> + <el-button type="primary" @click="updateSignAwardSet('ruleForm')">保存</el-button> + <el-button type="danger" @click="cancelSubmit">关闭</el-button> + </div> + </div> + </el-main> + + </el-container> + + </el-form> +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> + +<script> + //获取传输的活动对象 + var actId = $.query.get("actId"); + const prize = { + //奖品基本信息 + id:'', + cumulativeDay:'', + awardType:1, + awardName:'', + introduceImg:'', + introduceTip:'', + awardInventoryCnt:'', + awardDistributeCnt:'', + awardWay:1, + operationTip:'', + prizeAddress:'', + prizeTime: '', + wechatImg:'', + scoreCnt:'', + couponId:'', + customerPhone:'', + goodsId:'', + couponName:'', + goodsName:'', + } + var app = new Vue({ + el: '#app', + data: { + activeName: 'first', + formLabelWidth: '120px', + //标题图片 + imageLine: "../../../images/luckyDraw/line.png", + imageUrlTitle: "../../../images/luckyDraw/start.png", + imageUrlButton: "", + imageUrlHead: "../../../images/luckyDraw/zhuanpan.png", + + activeClickTab:0, + + //优惠券搜索弹出 + drawerCoupon: false, + directionCoupon: 'rtl', + tableHeightCoupon: 500, + //--优惠券 + formCoupon:{ + yhjmc:'', + order:'', + sort:'' + }, + couponList:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + + //品项搜索弹出 + drawerGoods: false, + directionGoods: 'rtl', + tableHeightGoods: 500, + //--品项 + formGoods:{ + cpmc:'', + order:'', + sort:'' + }, + goodsList:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + + //字体颜色 + typographyColor: '#409EFF', + //背景颜色 + backgroundColor: '#409EFF', + //字体大小 + typographyNum: '5', + //字体透明度 + typographyLight: '50', + //奖品设置 + prize:JSON.parse(JSON.stringify(prize)), + editableTabsValue: '1', + editableTabs: [{ + title: '谢谢参与', + name: '1', + content: JSON.parse(JSON.stringify(prize)) + }], + tabIndex: 1, + + ruleForm : { + //商品基本信息 + actName : '', + actCode : '', + actTime : '', + //抽奖规则 + wmkcjjh : '5', + dhycjfs : '20', + jfdhcs : '10', + zzjcs : '5', + zzjl : '10', + //规则说明 + ruleExplain : '', + }, + rules : { + //商品基本信息 + actName : [ + { required: true, message: '请输入活动名称', trigger: 'blur' } + ], + actCode : [ + { required: true, message: '请输入活动编码', trigger: 'blur' } + ], + actTime : [ + { required: true, message: '请选择日期', trigger: 'change' } + ], + wmkcjjh : [ + { required: true, message: '请输入1到10的数字', trigger: 'blur' } + ], + dhycjfs : [ + { required: true, message: '请输入1到200的数字', trigger: 'blur' } + ], + jfdhcs : [ + { required: true, message: '请输入1到10的数字', trigger: 'blur' } + ], + zzjcs : [ + { required: true, message: '请输入1到100的数字', trigger: 'blur' } + ], + zzjl : [ + { required: true, message: '请输入1到100的数字', trigger: 'blur' } + ], + ruleExplain : [ + { required: true, message: '请输入规则内容', trigger: 'blur' } + ] + }, + }, + created: function () { + this.loadInfo(); + }, + methods: { + //选择优惠券 + chooseCoupon(val,name){ + let _this = this; + _this.drawerCoupon = true; + _this.activeClickTab = parseInt(name); + + console.log(_this.activeClickTab); + _this.formCoupon.yhjmc = val; + _this.loadCouponList(); + }, + //--优惠券 + loadCouponList() { + let _this = this; + let data=_this.getRequestParamCoupon(); + data.pageSize=_this.couponList.pageSize; + data.pageNum=_this.couponList.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/selectCouponList', + callback: function (data) { + _this.couponList.rows = data.rows; + _this.couponList.total = data.total; + } + }); + }, + //查询参数 + getRequestParamCoupon(){ + let _this = this; + return { + yhjmc:_this.formCoupon.yhjmc, + order:_this.formCoupon.order, + sort:_this.formCoupon.sort, + } + }, + //查询 + searchFormCoupon:function(){ + this.couponList.currentPage=1; + this.loadCouponList(); + }, + //重置 + resetFormCoupon(formName) { + (this.$refs[formName])[0].resetFields(); + }, + changePageSizeCoupon(val) { + this.couponList.pageSize = val; + this.loadCouponList(); + }, + changeCurrentPageCoupon(val) { + this.couponList.currentPage = val; + this.loadCouponList(); + }, + //选择 + chooseOneCoupon(row) { + let _this = this; + _this.editableTabs[_this.activeClickTab-1].content.couponId = row.id; + _this.editableTabs[_this.activeClickTab-1].content.couponName = row.cname; + _this.drawerCoupon = false; + }, + + //选择品项 + chooseGoods(val,name){ + let _this = this; + _this.drawerGoods = true; + _this.activeClickTab = parseInt(name); + _this.formGoods.cpmc = val; + _this.loadGoodsList(); + }, + //--品项 + loadGoodsList() { + let _this = this; + let data=_this.getRequestParamGoods(); + data.pageSize=_this.goodsList.pageSize; + data.pageNum=_this.goodsList.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/selectGoodsList', + callback: function (data) { + _this.goodsList.rows = data.rows; + _this.goodsList.total = data.total; + } + }); + }, + //查询参数 + getRequestParamGoods(){ + let _this = this; + return { + cpmc:_this.formCoupon.cpmc, + order:_this.formCoupon.order, + sort:_this.formCoupon.sort, + } + }, + //查询 + searchFormGoods:function(){ + this.goodsList.currentPage=1; + this.loadGoodsList(); + }, + //重置 + resetFormGoods(formName) { + (this.$refs[formName])[0].resetFields(); + }, + changePageSizeGoods(val) { + this.goodsList.pageSize = val; + this.loadGoodsList(); + }, + changeCurrentPageGoods(val) { + this.goodsList.currentPage = val; + this.loadGoodsList(); + }, + //选择 + chooseOneGoods(row) { + let _this = this; + _this.editableTabs[_this.activeClickTab-1].content.goodsId = row.id; + _this.editableTabs[_this.activeClickTab-1].content.goodsName = row.name; + _this.drawerGoods = false; + }, + + //加载活动详情 + loadInfo() { + let _this = this; + _this.loadSign(); + }, + loadSign() { + let _this = this; + let data={ + actId:actId, + }; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/findLuckyDrawForUpdate', + callback: function (data) { + _this.ruleForm.actName = data.mapInfo.addLuckyDrawSetVo.actName; + _this.ruleForm.actCode = data.mapInfo.addLuckyDrawSetVo.actCode; + let arrayObj = new Array(); + arrayObj.push(new Date(data.mapInfo.addLuckyDrawSetVo.beginTime)); + arrayObj.push(new Date(data.mapInfo.addLuckyDrawSetVo.endTime)); + _this.ruleForm.actTime = arrayObj; + //抽奖规则 + _this.ruleForm.wmkcjjh = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.wmkcjjh; + _this.ruleForm.dhycjfs = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.dhycjfs; + _this.ruleForm.jfdhcs = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.jfdhcs; + _this.ruleForm.zzjcs = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.zzjcs; + _this.ruleForm.zzjl = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.zzjl; + //字体颜色 + _this.ruleForm.ruleExplain = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.ruleExplain; + _this.typographyColor = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.typographyColor; + _this.backgroundColor = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.backgroundColor; + _this.typographyNum = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.typographyNum; + _this.typographyLight = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.typographyLight; + _this.imageUrlTitle = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageUrlTitle; + _this.imageUrlHead = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageUrlHead; + _this.imageUrlButton = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageUrlButton; + _this.imageUrlState = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageUrlState; + _this.imageLine = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageLine; + + for (let i = 0; i < data.mapInfo.addLuckyDrawSetVo.activityluckyDrawSets.length; i++) { + _this.tabIndex = data.mapInfo.addLuckyDrawSetVo.activityluckyDrawSets.length; + let prizeVo = data.mapInfo.addLuckyDrawSetVo.activityluckyDrawSets[i]; + let arrayObjs = new Array(); + arrayObjs.push(new Date(prizeVo.prizeStartTime)); + arrayObjs.push(new Date(prizeVo.prizeEndTime)); + let content = JSON.parse(JSON.stringify(prize)); + content = { + id: prizeVo.id, + cumulativeDay: prizeVo.cumulativeDay, + awardType: parseInt(prizeVo.awardType), + awardName: prizeVo.awardName, + introduceImg: prizeVo.introduceImg, + customerPhone: prizeVo.customerPhone, + introduceTip: prizeVo.introduceTip, + awardInventoryCnt: prizeVo.awardInventoryCnt, + awardDistributeCnt: prizeVo.awardDistributeCnt, + awardWay: parseInt(prizeVo.awardWay), + operationTip: prizeVo.operationTip, + prizeAddress: prizeVo.prizeAddress, + wechatImg: prizeVo.wechatImg, + scoreCnt: prizeVo.scoreCnt, + couponId: prizeVo.couponId, + goodsId: prizeVo.goodsId, + couponName: prizeVo.couponName, + goodsName: prizeVo.goodsName, + prizeTime: arrayObjs, + } + if(i === 0){ + _this.editableTabs[0].content = content; + }else{ + let newTabName = i+1 +''; + _this.editableTabs.push({ + title: "商品奖励"+"("+newTabName+")", + name: newTabName, + content: content, + }); + this.editableTabsValue = newTabName; + } + } + } + }); + }, + //保存 + updateSignAwardSet : function(formName) { + const _this = this; + let flag = false; + _this.$refs[formName].validate((valid) => { + if (!valid) { + _this.$notify({ + title: '提示', + message: '请完善转盘抽奖活动信息', + type: 'warning' + }); + flag = true; + return; + } + }); + if (flag) { + return; + } + //活动基本信息 + let luckyDrawBasicJsonDto = { + ruleExplain: _this.ruleForm.ruleExplain, + //字体颜色 + typographyColor: _this.typographyColor, + //背景颜色 + backgroundColor: _this.backgroundColor, + //字体大小 + typographyNum: _this.typographyNum, + //标题图片 + imageUrlTitle: _this.imageUrlTitle, + imageLine: _this.imageLine, + imageUrlHead: _this.imageUrlHead, + imageUrlButton: _this.imageUrlButton, + //抽奖规则 + wmkcjjh: _this.ruleForm.wmkcjjh, + dhycjfs: _this.ruleForm.dhycjfs, + jfdhcs: _this.ruleForm.jfdhcs, + zzjcs: _this.ruleForm.zzjcs, + zzjl: _this.ruleForm.zzjl, + } + //奖品信息 + let activityAwardSets = []; + for (let i = 0; i < _this.editableTabs.length; i++) { + let prize = _this.editableTabs[i].content; + let name = _this.editableTabs[i].title; + let awardRule = 2; + if(name == "谢谢参与"){ + awardRule = 1; + } + let activitySignAwardSet = { + id: prize.id, + cumulativeDay: prize.cumulativeDay, + awardRule: awardRule, + awardType: prize.awardType, + awardName: prize.awardName, + introduceImg: prize.introduceImg, + introduceTip: prize.introduceTip, + awardInventoryCnt: prize.awardInventoryCnt, + awardDistributeCnt: prize.awardDistributeCnt, + awardWay: prize.awardWay, + operationTip: prize.operationTip, + customerPhone: prize.customerPhone, + prizeAddress: prize.prizeAddress, + wechatImg: prize.wechatImg, + scoreCnt: prize.scoreCnt, + couponId: prize.couponId, + goodsId: prize.goodsId, + couponName: prize.couponName, + goodsName: prize.goodsName, + prizeStartTime: prize.prizeTime[0], + prizeEndTime: prize.prizeTime[1], + } + activityAwardSets.push(activitySignAwardSet); + } + let resultData = { + actMainId: actId, + actName: _this.ruleForm.actName, + actCode: _this.ruleForm.actCode, + beginTime : _this.ruleForm.actTime[0], + endTime : _this.ruleForm.actTime[1], + luckyDrawBasicJsonDto, + activityAwardSets, + } + AjaxProxy.requst({ + app: _this, + data: resultData, + url: basePath + '/admin/activitySignAwardSet/updateLuckyDrawSet', + callback: function (data) { + _this.$message({ + message: data.info, + type: 'success', + }); + } + }); + }, + //奖品设置 + addTab(targetName) { + let newTabName = ++this.tabIndex + ''; + this.editableTabs.push({ + title: "转盘奖品"+"("+newTabName+")", + name: newTabName, + content: JSON.parse(JSON.stringify(prize)), + }); + this.editableTabsValue = newTabName; + this.activeClickTab = parseInt(newTabName); + }, + clickSecondTab(targetName) { + this.activeClickTab = 1; + }, + clickTab(targetName) { + console.log(targetName.name); + this.activeClickTab = parseInt(targetName.name); + }, + removeTab(targetName) { + let tabs = this.editableTabs; + let activeName = this.editableTabsValue; + if(activeName === '1' || targetName === '1'){ + this.$notify({ + title: '提示', + message: '【谢谢参与】不能删除', + type: 'warning' + }); + }else{ + if (activeName === targetName) { + tabs.forEach((tab, index) => { + if (tab.name === targetName && tab.title !== "谢谢参与") { + let nextTab = tabs[index + 1] || tabs[index - 1]; + if (nextTab) { + activeName = nextTab.name; + } + } + }); + } + this.editableTabsValue = activeName; + this.editableTabs = tabs.filter(tab => tab.name !== targetName); + this.tabIndex = this.editableTabs.length; + } + }, + //切换奖项类型,显示不同内容 + jxlxChange(val){ + let _this = this; + _this.isShow=val; + }, + //切换兑奖方式,显示不同内容 + awardWayChange(val){ + let _this = this; + _this.isShow=val; + }, + //跳转到图片上传 + uploadImg(){ + this.activeName = 'third'; + }, + //跳转到规则说明 + gzsmSet(){ + this.activeName = 'fourth'; + }, + //标题图片 + imageUrlTitleSuccess(res, file) { + this.imageUrlTitle = res.path; + }, + imageLineSuccess(res, file) { + this.imageLine = res.path; + }, + imageUrlHeadSuccess(res, file) { + this.imageUrlHead = res.path; + }, + imageUrlButtonSuccess(res, file) { + this.imageUrlButton = res.path; + }, + //奖品设置的图片介绍 + introduceImgSuccess(res, file) { + this.editableTabs[this.activeClickTab-1].content.introduceImg = res.path; + }, + //奖品设置的客服微信 + wechatImgSuccess(res, file) { + this.editableTabs[this.activeClickTab-1].content.wechatImg = res.path; + }, + cancelSubmit() { + this.closeFrame(); + }, + closeFrame() { + parent.layer.close(parent.layer.getFrameIndex(window.name)); + }, + } + }) +</script> + +</body> +</html> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-luckyDraw.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-luckyDraw.html new file mode 100644 index 0000000..b8c948a --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-luckyDraw.html @@ -0,0 +1,1027 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link rel="stylesheet" th:href="@{/plugin/bootstrap-3.3.5/css/bootstrap.min.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + + <!-- 富文本编辑器 --> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.config.js}"></script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/ueditor.all.js}"> + </script> + <script type="text/javascript" charset="utf-8" + th:src="@{/plugin/beditor/lang/zh-cn/zh-cn.js}"></script> + <style> + + .paginationStyle{ + background: #ffffff; + padding: 10px 10px; + margin: 0px 0px 10px 0px; + text-align: right; + } + + .el-aside { + background-color: #D3DCE6; + color: #333; + text-align: center; + } + .el-main { + background-color: #E9EEF3; + color: #333; + } + body > .el-container { + margin-bottom: 1000px; + } + .button { + padding: 5px; + text-align: center; + } + + .imageOne { + display: block; + height: 50px; + padding: 5px 5px; + text-align: center; + } + .imageTwo { + display: block; + height: 280px; + padding: 5px 5px; + text-align: center; + } + .imageThree { + display: block; + padding: 5px 5px; + text-align: center; + } + + .box-card { + padding: 5px 5px; + } + + </style> +</head> + +<body> +<div class="panel-body" id="app" v-cloak> + <el-form :model="ruleForm" :rules="rules" class="form-horizontal" id="dataform" ref="ruleForm" label-width="120px"> + + <el-container> + <el-aside width="30%"> + <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> + <el-row> + <div @click="uploadImg()" class="imageTwo" > + <img v-if="imageUrlHead" :src="imageUrlHead" style="width: 100%;height: 100%"> + <el-button type="primary" v-show="imageUrlHead == ''" round><span style="font-size: 20px;">头部</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + </div> + </el-row> + <el-row style="display:flex;"> + <el-col> + <div style="padding:5px;font-size: 15px;text-align: left;"> + <el-button type="primary" size="mini" round> + <span>拥有积分:</span> + </el-button> + </div> + </el-col> + </el-row> + + <el-row> + <div @click="uploadImg()" class="imageThree" > + <el-button type="primary" v-show="imageUrlButton == ''" round><span style="font-size: 20px;">签到按钮</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> + <img v-if="imageUrlButton" :src="imageUrlButton" style="width: 100%;"> + </div> + </el-row> + + + <el-row> + <div style="text-align: center;padding: 5px;" @click="gzsmSet()"> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 30px;">-- 规则说明--</span> + </div> + <div class="el-col-sm-24" style="text-align: center;"> + <span style="padding:5px;font-size: 15px;color: red;">(点击,编辑规则内容,背景颜色,字体颜色、大小、透明度)</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">1、每天参与签到可获得积分换取抽奖机会</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">2、每天参与签到可获得积分换取抽奖机会</span> + </div> + <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> + <span style="padding:5px;font-size: 15px;">3、每天参与签到可获得积分换取抽奖机会</span> + </div> + </div> + </el-row> + </el-card> + </el-aside> + + <el-main width="70%"> + <div> + <el-tabs v-model="activeName" @tab-click="clickSecondTab"> + <el-tab-pane label="活动设置" name="first"> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动名称" prop="actName"> + <el-input v-model="ruleForm.actName" placeholder="请输入活动名称"></el-input> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动编码" prop="actCode"> + <el-input v-model.number="ruleForm.actCode" placeholder="请输入最大开团数量"></el-input> + </el-form-item> + </div> + <div class="col-sm-4 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="活动时间" prop="actTime"> + <div class="block"> + <el-date-picker + v-model="ruleForm.actTime" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </div> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <p class="el-big-title" style="text-align: left;">抽奖规则</p> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="每日抽奖机会"> + <el-form-item label="每人每日有" prop="wmkcjjh"> + <el-input-number v-model="ruleForm.wmkcjjh" :min="1" :max="10" label="描述文字"></el-input-number> 次无门槛抽奖机会 + </el-form-item> + </el-form-item> + <el-form-item> + <el-form-item label="可用" prop="dhycjfs"> + <el-input-number v-model="ruleForm.dhycjfs" :min="1" :max="200" label="描述文字"></el-input-number> 积分兑换1次抽奖机会,每日最多兑换 + </el-form-item> + </el-form-item> + <el-form-item> + <el-form-item label="每日最多兑换" prop="jfdhcs"> + <el-input-number v-model="ruleForm.jfdhcs" :min="1" :max="10" label="描述文字"></el-input-number> 次抽奖机会 + </el-form-item> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="中奖概率"> + <el-form-item label="每人最多中奖" prop="zzjcs"> + <el-input-number v-model="ruleForm.zzjcs" :min="1" :max="100" label="描述文字"></el-input-number> 次 + </el-form-item> + </el-form-item> + <el-form-item> + <el-form-item label="总中奖率" prop="zzjl"> + <el-input-number v-model="ruleForm.zzjl" :min="1" :max="100" label="描述文字"></el-input-number> % + </el-form-item> + </el-form-item> + </div> + </el-tab-pane> + + <el-tab-pane label="奖品设置" name="second"> + <el-row style="display:flex;"> + <el-col :span="20"> + <el-tabs v-model="editableTabsValue" type="card" closable @tab-click="clickTab" @tab-remove="removeTab"> + <el-tab-pane v-for="(item, index) in editableTabs" :key="item.name" :label="item.title" :name="item.name"> + <el-row v-show="editableTabsValue !== '1'"> + </el-row> + <el-row > + <el-col> + <el-form-item label="奖项名称"> + <el-input v-model="item.content.awardName" placeholder="奖项名称"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="图片介绍"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="introduceImgSuccess"> + <img v-if="item.content.introduceImg" :src="item.content.introduceImg" style="max-width: 200px;"> + </el-upload> + </el-form-item> + </el-col> + </el-row> + <div v-show="item.name !== '1'"> + <el-row> + <el-form-item label="奖项类型"> + <el-col> + <el-radio-group v-model="item.content.awardType" @change="jxlxChange"> + <el-radio :label="'1'">自定义奖品</el-radio> + <el-radio :label="'2'">积分</el-radio> + <el-radio :label="'3'">优惠券</el-radio> + <el-radio :label="'4'">商品</el-radio> + </el-radio-group> + </el-col> + </el-form-item > + </el-row> + + <div> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="奖项库存"> + <el-input v-model="item.content.awardInventoryCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="已派发"> + <el-input v-model="item.content.awardDistributeCnt"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === '1'"> + <el-row > + <el-col> + <el-form-item label="文字介绍"> + <el-input type="textarea" v-model="item.content.introduceTip"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="兑奖方式"> + <el-col> + <el-radio-group v-model="item.content.awardWay" @change="awardWayChange"> + <el-radio :label="'1'">线下兑换</el-radio> + <el-radio :label="'2'">物流配送</el-radio> + <el-radio :label="'3'">客服兑换</el-radio> + </el-radio-group> + </el-col> + </el-form-item > + </el-col> + </el-row> + <el-row > + <el-col> + <el-form-item label="操作提示"> + <el-input v-model="item.content.operationTip"></el-input> + </el-form-item> + </el-col> + </el-row> + <div v-show="item.content.awardWay === '1'"> + <el-row > + <el-col> + <el-form-item label="兑奖地址"> + <el-input v-model="item.content.prizeAddress"></el-input> + </el-form-item> + </el-col> + </el-row> + + </div> + <div v-show="item.content.awardWay === '3'"> + <el-row > + <el-col> + <el-form-item label="客服微信"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="wechatImgSuccess"> + <img v-if="item.content.wechatImg" :src="item.content.wechatImg" style="max-width: 200px;"> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="[1,3].includes(item.content.awardWay)"> + <el-row > + <el-col> + <el-form-item label="客服电话"> + <el-input v-model="item.content.customerPhone"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardWay !== '2'"> + <el-row > + <el-col> + <el-form-item label="兑奖期限"> + <div class="block"> + <el-date-picker + v-model="item.content.prizeTime" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + </div> + <div v-show="item.content.awardType === '2'"> + <el-row > + <el-col> + <el-form-item label="积分数量"> + <el-input v-model="item.content.scoreCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <div v-show="item.content.awardType === '3'"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="优惠券名称"> + <el-input v-model="item.content.couponName"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="优惠券"> + <el-input v-model="item.content.couponId"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-button type="primary" @click="chooseCoupon(item.content.couponName,item.name)"> + 选择优惠券 + </el-button> + </el-col> + </el-row> + + <el-drawer + title="选择商城优惠券" + :visible.sync="drawerCoupon" + :direction="directionCoupon" + size="90%"> + <el-row style="margin-left: 50px;"> + <el-col :span="24"> + <el-row> + <el-form ref="formCoupon" :model="formCoupon" inline > + <el-form-item prop="yhjmc"> + <el-input v-model="formCoupon.yhjmc" placeholder="请输入优惠券名称"></el-input> + </el-form-item> + <el-button type="primary" @click="searchFormCoupon" >搜索</el-button> + <el-button @click="resetFormCoupon('formCoupon')">重置</el-button> + </el-form> + </el-row> + + <el-row class="table-style" > + <el-table ref="multipleTable" + :data="couponList.rows" + :height="tableHeightCoupon" + stripe:true + style="width: 100%"> + <el-table-column + prop="cname" + label="优惠券名称" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="endTime" + label="截止日期" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="address" + label="操作"> + <template slot-scope="scope"> + <el-button type="primary" + size="mini" + @click="chooseOneCoupon(scope.row)">选择 + </el-button> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSizeCoupon" + @current-change="changeCurrentPageCoupon" + :current-page="couponList.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="couponList.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="couponList.total"> + </el-pagination> + </el-row> + </el-col> + </el-row> + </el-drawer> + </div> + <div v-show="item.content.awardType === '4'"> + <el-row style="display:flex;"> + <el-col> + <el-form-item label="品项名称"> + <el-input v-model="item.content.goodsName"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-form-item label="品项"> + <el-input v-model="item.content.goodsId"></el-input> + </el-form-item> + </el-col> + <el-col> + <el-button type="primary" @click="chooseGoods(item.content.goodsName,item.name)"> + 选择品项 + </el-button> + </el-col> + </el-row> + + <el-drawer + title="选择ERP产品" + :visible.sync="drawerGoods" + :direction="directionGoods" + size="90%"> + <el-row style="margin-left: 50px;"> + <el-col :span="24"> + <el-row> + <el-form ref="formGoods" :model="formGoods" inline > + <el-form-item prop="cpmc"> + <el-input v-model="formGoods.cpmc" placeholder="请输入产品名称"></el-input> + </el-form-item> + <el-button type="primary" @click="searchFormGoods" >搜索</el-button> + <el-button @click="resetFormGoods('formGoods')">重置</el-button> + </el-form> + </el-row> + + <el-row class="table-style" > + <el-table ref="multipleTable" + :data="goodsList.rows" + :height="tableHeightGoods" + stripe:true + style="width: 100%"> + <el-table-column + prop="name" + label="名称" + show-overflow-tooltip> + </el-table-column> + <el-table-column + prop="address" + label="操作"> + <template slot-scope="scope"> + <el-button type="primary" + size="mini" + @click="chooseOneGoods(scope.row)">选择 + </el-button> + </template> + </el-table-column> + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSizeGoods" + @current-change="changeCurrentPageGoods" + :current-page="goodsList.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="goodsList.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="goodsList.total"> + </el-pagination> + </el-row> + </el-col> + </el-row> + </el-drawer> + </div> + </div> + </el-tab-pane> + </el-tabs> + </el-col> + <el-col :span="4"> + <el-button type="primary" @click="addTab(editableTabsValue)"> + 新增奖品 + </el-button> + </el-col> + </el-row> + </el-tab-pane> + + <el-tab-pane label="背景图片上传" name="third"> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="头部"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlHeadSuccess"> + <img v-if="imageUrlHead" :src="imageUrlHead" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="开始按钮"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlTitleSuccess"> + <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="奖品划分线"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageLineSuccess"> + <img v-if="imageLine" :src="imageLine" style="max-width: 300px;"> + </el-upload> + </el-form-item> + </div> + + <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> + <el-form-item label="转盘背景"> + <el-upload + action="/admin/multipleUploadFile/doUpload" + :show-file-list="false" + :on-success="imageUrlButtonSuccess"> + <img v-if="imageUrlButton" :src="imageUrlButton" style="max-width: 300px;"> + <i v-else></i> + </el-upload> + </el-form-item> + </div>--> + </el-tab-pane> + + <el-tab-pane label="规则说明" name="fourth"> + <div class="col-sm-8 col-sm-offset-1"> + <el-form-item label="规则内容" prop="ruleExplain" style="padding: 10px"> + <el-input type="textarea" v-model="ruleForm.ruleExplain"></el-input> + </el-form-item> + <el-form-item label="背景颜色" style="padding: 10px"> + <el-color-picker v-model="backgroundColor"></el-color-picker> + </el-form-item> + <el-form-item label="字体颜色" style="padding: 10px"> + <el-color-picker v-model="typographyColor"></el-color-picker> + </el-form-item> + <el-form-item label="字体大小" style="padding: 10px"> + <el-input-number v-model="typographyNum" :min="10" :max="50" label="描述文字"></el-input-number> + </el-form-item> + <!--<el-form-item label="字体透明度" style="padding: 10px"> + <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number> + </el-form-item>--> + </div> + </el-tab-pane> + </el-tabs> + </div> + + <div class="form-group "> + <div class="col-sm-12 text-center"> + <el-button type="primary" @click="dataSubmit('ruleForm')">保存</el-button> + <el-button type="danger" @click="cancelSubmit">关闭</el-button> + </div> + </div> + </el-main> + + </el-container> + + </el-form> +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> + +<script> + //获取传输的活动对象 + var actId = $.query.get("actId"); + const prize = { + //奖品基本信息 + awardType:'1', + awardName:'', + introduceImg:'', + introduceTip:'', + awardInventoryCnt:'', + awardDistributeCnt:'', + awardWay:'1', + operationTip:'', + prizeAddress:'', + prizeTime: '', + wechatImg:'', + scoreCnt:'', + couponId:'', + goodsId:'', + couponName:'', + customerPhone:'', + goodsName:'', + } + var app = new Vue({ + el: '#app', + data: { + activeName: 'first', + formLabelWidth: '120px', + + activeClickTab:0, + //优惠券搜索弹出 + drawerCoupon: false, + directionCoupon: 'rtl', + tableHeightCoupon: 500, + //--优惠券 + formCoupon:{ + yhjmc:'', + order:'', + sort:'' + }, + couponList:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + + //品项搜索弹出 + drawerGoods: false, + directionGoods: 'rtl', + tableHeightGoods: 500, + //--品项 + formGoods:{ + cpmc:'', + order:'', + sort:'' + }, + goodsList:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + + //标题图片 + imageLine: "../../../images/luckyDraw/line.png", + imageUrlTitle: "../../../images/luckyDraw/start.png", + imageUrlButton: "", + imageUrlHead: "../../../images/luckyDraw/zhuanpan.png", + + //字体颜色 + typographyColor: '#409EFF', + //背景颜色 + backgroundColor: '#409EFF', + //字体大小 + typographyNum: '5', + //字体透明度 + typographyLight: '50', + //奖品设置 + prize:JSON.parse(JSON.stringify(prize)), + editableTabsValue: '1', + editableTabs: [{ + title: '谢谢参与', + name: '1', + content: JSON.parse(JSON.stringify(prize)) + }], + tabIndex: 1, + + ruleForm : { + //商品基本信息 + actName : '', + actCode : '', + actTime : '', + //抽奖规则 + wmkcjjh : '5', + dhycjfs : '20', + jfdhcs : '10', + zzjcs : '5', + zzjl : '10', + + //规则说明 + ruleExplain : '', + }, + rules : { + //商品基本信息 + actName : [ + { required: true, message: '请输入活动名称', trigger: 'blur' } + ], + actCode : [ + { required: true, message: '请输入活动编码', trigger: 'blur' } + ], + actTime : [ + { required: true, message: '请选择日期', trigger: 'change' } + ], + wmkcjjh : [ + { required: true, message: '请输入1到10的数字', trigger: 'blur' } + ], + dhycjfs : [ + { required: true, message: '请输入1到200的数字', trigger: 'blur' } + ], + jfdhcs : [ + { required: true, message: '请输入1到10的数字', trigger: 'blur' } + ], + zzjcs : [ + { required: true, message: '请输入1到100的数字', trigger: 'blur' } + ], + zzjl : [ + { required: true, message: '请输入1到100的数字', trigger: 'blur' } + ], + ruleExplain : [ + { required: true, message: '请输入规则内容', trigger: 'blur' } + ] + }, + }, + created: function () { + }, + methods: { + //选择优惠券 + chooseCoupon(val,name){ + let _this = this; + _this.drawerCoupon = true; + _this.activeClickTab = parseInt(name); + _this.formCoupon.yhjmc = val; + _this.loadCouponList(); + }, + //--优惠券 + loadCouponList() { + let _this = this; + let data=_this.getRequestParamCoupon(); + data.pageSize=_this.couponList.pageSize; + data.pageNum=_this.couponList.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/selectCouponList', + callback: function (data) { + _this.couponList.rows = data.rows; + _this.couponList.total = data.total; + } + }); + }, + //查询参数 + getRequestParamCoupon(){ + let _this = this; + return { + yhjmc:_this.formCoupon.yhjmc, + order:_this.formCoupon.order, + sort:_this.formCoupon.sort, + } + }, + //查询 + searchFormCoupon:function(){ + this.couponList.currentPage=1; + this.loadCouponList(); + }, + //重置 + resetFormCoupon(formName) { + // this.formCoupon.yhjmc = '' + // console.log(this.$refs[formName].resetFields) + (this.$refs[formName])[0].resetFields(); + }, + changePageSizeCoupon(val) { + this.couponList.pageSize = val; + this.loadCouponList(); + }, + changeCurrentPageCoupon(val) { + this.couponList.currentPage = val; + this.loadCouponList(); + }, + //选择 + chooseOneCoupon(row) { + let _this = this; + _this.editableTabs[_this.activeClickTab-1].content.couponId = row.id; + _this.editableTabs[_this.activeClickTab-1].content.couponName = row.cname; + _this.drawerCoupon = false; + }, + + //选择品项 + chooseGoods(val,name){ + let _this = this; + _this.drawerGoods = true; + _this.activeClickTab = parseInt(name); + _this.formGoods.cpmc = val; + _this.loadGoodsList(); + }, + //--品项 + loadGoodsList() { + let _this = this; + let data=_this.getRequestParamGoods(); + data.pageSize=_this.goodsList.pageSize; + data.pageNum=_this.goodsList.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/activitySignAwardSet/selectGoodsList', + callback: function (data) { + _this.goodsList.rows = data.rows; + _this.goodsList.total = data.total; + } + }); + }, + //查询参数 + getRequestParamGoods(){ + let _this = this; + return { + cpmc:_this.formCoupon.cpmc, + order:_this.formCoupon.order, + sort:_this.formCoupon.sort, + } + }, + //查询 + searchFormGoods:function(){ + this.goodsList.currentPage=1; + this.loadGoodsList(); + }, + //重置 + resetFormGoods(formName) { + (this.$refs[formName])[0].resetFields(); + }, + changePageSizeGoods(val) { + this.goodsList.pageSize = val; + this.loadGoodsList(); + }, + changeCurrentPageGoods(val) { + this.goodsList.currentPage = val; + this.loadGoodsList(); + }, + //选择 + chooseOneGoods(row) { + let _this = this; + _this.editableTabs[_this.activeClickTab-1].content.goodsId = row.id; + _this.editableTabs[_this.activeClickTab-1].content.goodsName = row.name; + _this.drawerGoods = false; + }, + + //保存 + dataSubmit : function(formName) { + const _this = this; + let flag = false; + _this.$refs[formName].validate((valid) => { + if (!valid) { + _this.$notify({ + title: '提示', + message: '请完善转盘抽奖活动信息', + type: 'warning' + }); + flag = true; + return; + } + }); + if (flag) { + return; + } + //活动基本信息 + let luckyDrawBasicJsonDto = { + ruleExplain: _this.ruleForm.ruleExplain, + //字体颜色 + typographyColor: _this.typographyColor, + //背景颜色 + backgroundColor: _this.backgroundColor, + //字体大小 + typographyNum: _this.typographyNum, + //标题图片 + imageUrlTitle: _this.imageUrlTitle, + imageLine: _this.imageLine, + imageUrlHead: _this.imageUrlHead, + imageUrlButton: _this.imageUrlButton, + //抽奖规则 + wmkcjjh: _this.ruleForm.wmkcjjh, + dhycjfs: _this.ruleForm.dhycjfs, + jfdhcs: _this.ruleForm.jfdhcs, + zzjcs: _this.ruleForm.zzjcs, + zzjl: _this.ruleForm.zzjl, + } + //奖品信息 + let luckyDrawAwardSets = []; + for (let i = 0; i < _this.editableTabs.length; i++) { + let prize = _this.editableTabs[i].content; + let name = _this.editableTabs[i].title; + let awardRule = 2; + if(name == "谢谢参与"){ + awardRule = 1; + } + let activitySignAwardSet = { + awardRule: awardRule, + awardType: prize.awardType, + awardName: prize.awardName, + introduceImg: prize.introduceImg, + introduceTip: prize.introduceTip, + awardInventoryCnt: prize.awardInventoryCnt, + awardDistributeCnt: prize.awardDistributeCnt, + awardWay: prize.awardWay, + operationTip: prize.operationTip, + prizeAddress: prize.prizeAddress, + wechatImg: prize.wechatImg, + customerPhone: prize.customerPhone, + scoreCnt: prize.scoreCnt, + couponId: prize.couponId, + goodsId: prize.goodsId, + couponName: prize.couponName, + goodsName: prize.goodsName, + prizeStartTime: prize.prizeTime[0], + prizeEndTime: prize.prizeTime[1], + } + luckyDrawAwardSets.push(activitySignAwardSet); + } + let resultData = { + actName: _this.ruleForm.actName, + actCode: _this.ruleForm.actCode, + beginTime : _this.ruleForm.actTime[0], + endTime : _this.ruleForm.actTime[1], + luckyDrawBasicJsonDto, + luckyDrawAwardSets, + } + AjaxProxy.requst({ + app: _this, + data: resultData, + url: basePath + '/admin/activitySignAwardSet/addLuckyDrawSet', + callback: function (data) { + _this.$message({ + message: data.info, + type: 'success', + }); + parent.layer.close(parent.layer.getFrameIndex(window.name)); + } + }); + }, + //奖品设置 + addTab(targetName) { + let newTabName = ++this.tabIndex + ''; + this.editableTabs.push({ + title: "转盘奖品"+"("+newTabName+")", + name: newTabName, + content: JSON.parse(JSON.stringify(prize)), + }); + this.editableTabsValue = newTabName; + this.activeClickTab = parseInt(newTabName); + }, + clickSecondTab(targetName) { + this.activeClickTab = 1; + }, + clickTab(targetName) { + console.log(targetName.name); + this.activeClickTab = parseInt(targetName.name); + }, + removeTab(targetName) { + let tabs = this.editableTabs; + let activeName = this.editableTabsValue; + if(activeName === '1' || targetName === '1'){ + this.$notify({ + title: '提示', + message: '【谢谢参与】不能删除', + type: 'warning' + }); + }else{ + if (activeName === targetName) { + tabs.forEach((tab, index) => { + if (tab.name === targetName && tab.title !== "谢谢参与") { + let nextTab = tabs[index + 1] || tabs[index - 1]; + if (nextTab) { + activeName = nextTab.name; + } + } + }); + } + this.editableTabsValue = activeName; + this.editableTabs = tabs.filter(tab => tab.name !== targetName); + this.tabIndex = this.editableTabs.length; + } + }, + //切换奖项类型,显示不同内容 + jxlxChange(val){ + let _this = this; + _this.isShow=val; + }, + //切换兑奖方式,显示不同内容 + awardWayChange(val){ + let _this = this; + _this.isShow=val; + }, + //跳转到图片上传 + uploadImg(){ + this.activeName = 'third'; + }, + //跳转到规则说明 + gzsmSet(){ + this.activeName = 'fourth'; + }, + //标题图片 + imageUrlTitleSuccess(res, file) { + this.imageUrlTitle = res.path; + }, + imageLineSuccess(res, file) { + this.imageLine = res.path; + }, + imageUrlHeadSuccess(res, file) { + this.imageUrlHead = res.path; + }, + imageUrlButtonSuccess(res, file) { + this.imageUrlButton = res.path; + }, + //奖品设置的图片介绍 + introduceImgSuccess(res, file) { + this.editableTabs[this.activeClickTab-1].content.introduceImg = res.path; + }, + //奖品设置的客服微信 + wechatImgSuccess(res, file) { + this.editableTabs[this.activeClickTab-1].content.wechatImg = res.path; + }, + cancelSubmit() { + this.closeFrame(); + }, + closeFrame() { + parent.layer.close(parent.layer.getFrameIndex(window.name)); + }, + } + }) +</script> + +</body> +</html> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html index cd166ff..00050a1 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-market.html @@ -31,6 +31,7 @@ .image { width: 100%; + height: 100%; display: block; } @@ -53,14 +54,14 @@ <body> <div class="panel-body" id="app" v-cloak> - <el-row> + <el-row style="padding:20px;"> <el-col :span="4"> <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> <img src="../../../images/sign/meiriqiandao.png" class="image"> <div style="padding: 5px;"> - <span style="padding:5px;font-size: 30px;">每日签到</span> + <span style="padding:5px;font-size: 18px;">每日签到</span> <div class="bottom clearfix"> - <el-button type="primary" class="button" @click="createSign()" round>马上创建</el-button> + <el-button type="primary" size="mini" class="button" @click="createSign()" round>马上创建</el-button> </div> </div> </el-card> @@ -69,9 +70,9 @@ <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> <img src="../../../images/sign/tiantianpingtuan.png" class="image"> <div style="padding: 5px;"> - <span style="padding:5px;font-size: 30px;">拼团</span> + <span style="padding:5px;font-size: 18px;">拼团</span> <div class="bottom clearfix"> - <el-button type="primary" class="button" @click="openAdd(1)" round>马上创建</el-button> + <el-button type="primary" size="mini" class="button" @click="openAdd(1)" round>马上创建</el-button> </div> </div> </el-card> @@ -80,9 +81,9 @@ <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> <img src="../../../images/sign/jisumiaosha.png" class="image"> <div style="padding: 5px;"> - <span style="padding:5px;font-size: 30px;">秒杀</span> + <span style="padding:5px;font-size: 18px;">秒杀</span> <div class="bottom clearfix"> - <el-button type="primary" class="button" @click="openSecKill()" round>马上创建</el-button> + <el-button type="primary" size="mini" class="button" @click="openSecKill()" round>马上创建</el-button> </div> </div> </el-card> @@ -91,9 +92,22 @@ <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> <img src="../../../images/sign/shalonghuodong.png" class="image"> <div style="padding: 5px;"> - <span style="padding:5px;font-size: 30px;">沙龙</span> + <span style="padding:5px;font-size: 18px;">沙龙</span> <div class="bottom clearfix"> - <el-button type="primary" class="button" @click="openSalon()" round>马上创建</el-button> + <el-button type="primary" size="mini" class="button" @click="openSalon()" round>马上创建</el-button> + </div> + </div> + </el-card> + </el-col> + </el-row> + <el-row style="padding:20px;"> + <el-col :span="4"> + <el-card class="box-card" :body-style="{ padding: '10px 10px'}"> + <img src="../../../images/luckyDraw/zhuanpanchoujian.png" class="image"> + <div style="padding: 5px;"> + <span style="padding:5px;font-size: 18px;">转盘抽奖</span> + <div class="bottom clearfix"> + <el-button type="primary" size="mini" class="button" @click="createLuckyDraw()" round>马上创建</el-button> </div> </div> </el-card> @@ -124,15 +138,43 @@ created: function () { }, methods: { + //跳转到设置转盘抽奖 + createLuckyDraw(){ + $.AjaxProxy().invoke(basePath + "/admin/activitySignAwardSet/createLuckyDrawSet", function(loj) { + if (loj[0].result.status == '200') { + layer.full(layer.open({ + type: 2, + title: "转盘抽奖管理", + maxmin: true, + area: [MUI.SIZE_L, '500px'], + content : [ basePath + '/admin/redirect/activity/activity-luckyDraw'] + })); + }else{ + _this.$message({ + message: data.info, + type: 'success', + }); + } + }); + }, //跳转到设置签到活动 createSign(){ - layer.full(layer.open({ - type: 2, - title: "签到管理", - maxmin: true, - area: [MUI.SIZE_L, '500px'], - content : [ basePath + '/admin/redirect/activity/activity-sign'] - })); + $.AjaxProxy().invoke(basePath + "/admin/activitySignAwardSet/createSignAwardSet", function(loj) { + if (loj[0].result.status == '200') { + layer.full(layer.open({ + type: 2, + title: "签到管理", + maxmin: true, + area: [MUI.SIZE_L, '500px'], + content : [ basePath + '/admin/redirect/activity/activity-sign'] + })); + }else{ + _this.$message({ + message: data.info, + type: 'success', + }); + } + }); }, // 打新增拼团界面 openAdd(value) { @@ -160,7 +202,7 @@ openSalon() { layer.full(layer.open({ type : 2, - title : "新建秒杀", + title : "新建沙龙", area : [ MUI.SIZE_L, MUI.SIZE_L ], maxmin : true, content : [ basePath+'/admin/redirect/shop/activities/activitiesSalon-form'] diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-logistics-info.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-logistics-info.html index b9767fc..46fa5e1 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-logistics-info.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-logistics-info.html @@ -105,22 +105,22 @@ <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px"> <el-row style="padding: 10px"> <el-col class="col-sm-10" > - <el-form-item label="收货人:" prop="shr"> - <el-input v-model="ruleForm.shr" :disabled="(formSelect.state == 3 ? true:false)"></el-input> + <el-form-item label="收货人:" prop="consignee"> + <el-input v-model="ruleForm.consignee" :disabled="(formSelect.state == 3 ? true:false)"></el-input> </el-form-item> </el-col> </el-row> <el-row style="padding: 10px"> <el-col class="col-sm-10" > - <el-form-item label="联系电话:" prop="lxdh"> - <el-input v-model="ruleForm.lxdh" :disabled="(formSelect.state == 3 ? true:false)"></el-input> + <el-form-item label="联系电话:" prop="consigneePhone"> + <el-input v-model="ruleForm.consigneePhone" :disabled="(formSelect.state == 3 ? true:false)"></el-input> </el-form-item> </el-col> </el-row> <el-row style="padding: 10px"> <el-col class="col-sm-10" > - <el-form-item label="收货地址:" prop="shdz"> - <el-input v-model="ruleForm.shdz" :disabled="(formSelect.state == 3 ? true:false)"></el-input> + <el-form-item label="收货地址:" prop="consigneeAddress"> + <el-input v-model="ruleForm.consigneeAddress" :disabled="(formSelect.state == 3 ? true:false)"></el-input> </el-form-item> </el-col> </el-row> @@ -136,7 +136,7 @@ </el-col> </el-row> <el-row style="padding: 10px"> - <el-col class="col-sm-10" > + <el-col class="col-sm-10" v-show='false'> <el-form-item label="快递公司编码:"> <el-input v-model="ruleForm.kdgs" :disabled="(formSelect.state == 3 ? true:false)"></el-input> </el-form-item> @@ -217,16 +217,13 @@ djfs: '', state: '', djsj: '', - consignee: '', - consigneePhone: '', - consigneeAddress: '', }, //物流信息 logisticsList:[], ruleForm : { - shr:'', - lxdh:'', - shdz:'', + consignee:'', + consigneePhone:'', + consigneeAddress:'', kdgs:'', kddh:'', }, @@ -235,13 +232,13 @@ activities: [], rules : { - shr : [ + consignee : [ { required: true, message: '请输入收货人', trigger: 'blur' } ], - lxdh : [ + consigneePhone : [ { required: true, message: '请输入联系电话', trigger: 'blur' } ], - shdz : [ + consigneeAddress : [ { required: true, message: '请输入收货地址', trigger: 'blur' } ], kdgs : [ @@ -259,7 +256,7 @@ mounted: function () { }, methods: { - //加载分类 + //加载 loadInfo() { let _this = this; //加载配置 @@ -269,6 +266,11 @@ url: basePath + '/admin/activitySignWriteoff/findSignWriteoff', callback: function (data) { _this.formSelect = data.mapInfo.signWriteoffVo; + _this.ruleForm.consignee = data.mapInfo.signWriteoffVo.consignee; + _this.ruleForm.consigneePhone = data.mapInfo.signWriteoffVo.consigneePhone; + _this.ruleForm.consigneeAddress = data.mapInfo.signWriteoffVo.consigneeAddress; + _this.ruleForm.kdgs = data.mapInfo.signWriteoffVo.logisticsCompany; + _this.ruleForm.kddh = data.mapInfo.signWriteoffVo.logisticsNum; _this.activities = data.mapInfo.signWriteoffVo.activities; } }); @@ -303,9 +305,9 @@ } let resultData = { writeoffId : writeoffId, - shr : _this.ruleForm.shr, - lxdh : _this.ruleForm.lxdh, - shdz : _this.ruleForm.shdz, + shr : _this.ruleForm.consignee, + lxdh : _this.ruleForm.consigneePhone, + shdz : _this.ruleForm.consigneeAddress, kdgs : _this.ruleForm.kdgs, kddh : _this.ruleForm.kddh, } @@ -318,6 +320,7 @@ message: data.info, type: 'success', }); + _this.loadInfo(); } }); }, @@ -327,6 +330,7 @@ }, closeFrame() { parent.layer.close(parent.layer.getFrameIndex(window.name)); + parent.location.reload(); }, } }) diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html index 8c2f2e4..8f1da03 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-receive.html @@ -87,6 +87,9 @@ <template slot-scope="scope"> <span v-if="scope.row.state == 1">待领取</span> <span v-if="scope.row.state == 2">已领取</span> + <span v-if="scope.row.state == 3">待配送</span> + <span v-if="scope.row.state == 4">待收货</span> + <span v-if="scope.row.state == 5">已失效</span> </template> </el-table-column> <el-table-column @@ -118,6 +121,16 @@ label="获得奖励" show-overflow-tooltip> </el-table-column> + + <el-table-column + label="奖励名称" + show-overflow-tooltip> + <template slot-scope="scope"> + {{scope.row.awardName}} + <span v-if="scope.row.awardType == 3">({{scope.row.couponName}})</span> + <span v-if="scope.row.awardType == 2">(*{{scope.row.scoreCnt}})</span> + </template> + </el-table-column> </el-table> </el-row> <el-row class="paginationStyle" > diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html index 562f32d..896b822 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-update.html @@ -267,6 +267,15 @@ </el-col> </el-row> </div> + <div v-show="[1,3].includes(item.content.awardWay)"> + <el-row > + <el-col> + <el-form-item label="客服电话"> + <el-input v-model="item.content.customerPhone"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> <div v-show="item.content.awardWay !== 2"> <el-row > <el-col> @@ -516,11 +525,11 @@ <el-color-picker v-model="typographyColor"></el-color-picker> </el-form-item> <el-form-item label="字体大小" style="padding: 10px"> - <el-input-number v-model="typographyNum" :min="10" :max="20" label="描述文字"></el-input-number> + <el-input-number v-model="typographyNum" :min="10" :max="50" label="描述文字"></el-input-number> </el-form-item> - <el-form-item label="字体透明度" style="padding: 10px"> + <!--<el-form-item label="字体透明度" style="padding: 10px"> <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number> - </el-form-item> + </el-form-item>--> </div> </el-tab-pane> </el-tabs> @@ -569,6 +578,7 @@ wechatImg:'', scoreCnt:'', couponId:'', + customerPhone:'', goodsId:'', couponName:'', goodsName:'', @@ -829,6 +839,7 @@ awardType: parseInt(prizeVo.awardType), awardName: prizeVo.awardName, introduceImg: prizeVo.introduceImg, + customerPhone: prizeVo.customerPhone, introduceTip: prizeVo.introduceTip, awardInventoryCnt: prizeVo.awardInventoryCnt, awardDistributeCnt: prizeVo.awardDistributeCnt, @@ -914,6 +925,7 @@ awardDistributeCnt: prize.awardDistributeCnt, awardWay: prize.awardWay, operationTip: prize.operationTip, + customerPhone: prize.customerPhone, prizeAddress: prize.prizeAddress, wechatImg: prize.wechatImg, scoreCnt: prize.scoreCnt, diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff-info.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff-info.html index eeb3d40..07d826c 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff-info.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff-info.html @@ -177,8 +177,7 @@ message: data.info, type: 'success', }); - parent.layer.close(parent.layer.getFrameIndex(window.name)); - parent.location.reload(); + _this.loadInfo(); } }); }, diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff.html index 3c585e0..6b8aec3 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign-writeoff.html @@ -60,21 +60,9 @@ stripe:true @sort-change="sortChange"> <el-table-column - prop="writeoffTime" - label="核销时间" + prop="receiveName" + label="中奖者" show-overflow-tooltip> - </el-table-column> - <el-table-column - prop="writeoffUser" - label="核销员" - show-overflow-tooltip> - </el-table-column> - <el-table-column - label="兑奖码" - show-overflow-tooltip> - <template slot-scope="scope"> - <span v-if="scope.row.state == 3">{{scope.row.writeoffCode}}</span> - </template> </el-table-column> <el-table-column prop="actName" @@ -97,6 +85,7 @@ <span v-if="scope.row.state == 1">待兑换</span> <span v-if="scope.row.state == 2">待发货</span> <span v-if="scope.row.state == 3">已兑换</span> + <span v-if="scope.row.state == 4">已失效</span> </template> </el-table-column> <el-table-column @@ -108,11 +97,23 @@ </template> </el-table-column> <el-table-column - prop="receiveName" - label="中奖者" + prop="writeoffTime" + label="核销时间" show-overflow-tooltip> </el-table-column> <el-table-column + prop="writeoffUser" + label="核销员" + show-overflow-tooltip> + </el-table-column> + <el-table-column + label="兑奖码" + show-overflow-tooltip> + <template slot-scope="scope"> + <span v-if="scope.row.state == 3">{{scope.row.writeoffCode}}</span> + </template> + </el-table-column> + <el-table-column prop="receiveAddress" label="收货地址" show-overflow-tooltip> diff --git a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html index d888c57..90ce701 100644 --- a/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html +++ b/zq-erp/src/main/resources/templates/views/admin/activity/activity-sign.html @@ -274,6 +274,15 @@ </el-col> </el-row> </div> + <div v-show="[1,3].includes(item.content.awardWay)"> + <el-row > + <el-col> + <el-form-item label="客服电话"> + <el-input v-model="item.content.customerPhone"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> <div v-show="item.content.awardWay !== '2'"> <el-row > <el-col> @@ -522,11 +531,11 @@ <el-color-picker v-model="typographyColor"></el-color-picker> </el-form-item> <el-form-item label="字体大小" style="padding: 10px"> - <el-input-number v-model="typographyNum" :min="10" :max="20" label="描述文字"></el-input-number> + <el-input-number v-model="typographyNum" :min="10" :max="50" label="描述文字"></el-input-number> </el-form-item> - <el-form-item label="字体透明度" style="padding: 10px"> + <!--<el-form-item label="字体透明度" style="padding: 10px"> <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number> - </el-form-item> + </el-form-item>--> </div> </el-tab-pane> </el-tabs> @@ -576,6 +585,7 @@ couponId:'', goodsId:'', couponName:'', + customerPhone:'', goodsName:'', } var app = new Vue({ @@ -845,6 +855,7 @@ operationTip: prize.operationTip, prizeAddress: prize.prizeAddress, wechatImg: prize.wechatImg, + customerPhone: prize.customerPhone, scoreCnt: prize.scoreCnt, couponId: prize.couponId, goodsId: prize.goodsId, diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html index 63f1f78..ee2103f 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html @@ -947,7 +947,7 @@ // if (optionType != 1) { //直接修改支付金额不重置支付金额 - item.payMoney = zkPrice * count; + item.payMoney = (zkPrice * count).toFixed(2); // } _this.order.payMoney += parseFloat(item.payMoney); diff --git a/zq-erp/src/test/java/com/matrix/FenxiaoSoreInitTest.java b/zq-erp/src/test/java/com/matrix/FenxiaoSoreInitTest.java index b4ebcf4..b6d5350 100644 --- a/zq-erp/src/test/java/com/matrix/FenxiaoSoreInitTest.java +++ b/zq-erp/src/test/java/com/matrix/FenxiaoSoreInitTest.java @@ -1,73 +1,676 @@ package com.matrix; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.matrix.core.pojo.AjaxResult; +import com.matrix.core.tools.StringUtils; import com.matrix.system.activity.dao.ActivitySignAwardSetDao; +import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao; +import com.matrix.system.activity.dao.ActivitySignRecordDao; +import com.matrix.system.activity.dao.ActivitySignWriteoffDao; import com.matrix.system.activity.entity.ActivitySignAwardSet; -import com.matrix.system.common.bean.BusParameterSettings; -import com.matrix.system.common.dao.BusParameterSettingsDao; -import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant; -import com.matrix.system.score.constant.ScoreSettingConstant; +import com.matrix.system.activity.entity.ActivitySignReceiveRecord; +import com.matrix.system.activity.entity.ActivitySignRecord; +import com.matrix.system.activity.entity.ActivitySignWriteoff; +import com.matrix.system.common.constance.AppConstance; +import com.matrix.system.hive.bean.SysVipInfo; +import com.matrix.system.hive.dao.SysVipInfoDao; +import com.matrix.system.score.entity.ScoreVipDetail; +import com.matrix.system.score.service.ScoreVipDetailService; +import com.matrix.system.shopXcx.api.dto.SeeAwardTextDto; +import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService; +import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil; import com.matrix.system.shopXcx.api.vo.ActivitySignAwardSetVo; -import com.matrix.system.shopXcx.api.vo.SignBasicInfoJsonVo; -import com.matrix.system.shopXcx.api.vo.SignBasicInfoVo; -import com.matrix.system.shopXcx.bean.ShopActivities; -import com.matrix.system.shopXcx.dao.ShopActivitiesDao; -import org.junit.Assert; +import com.matrix.system.shopXcx.api.vo.LuckyDrawBasicInfoJsonVo; +import com.matrix.system.shopXcx.api.vo.LuckyDrawSuccessVo; +import com.matrix.system.shopXcx.api.vo.SeeAwardTextVo; +import com.matrix.system.shopXcx.bean.*; +import com.matrix.system.shopXcx.dao.*; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; -import java.util.ArrayList; -import java.util.List; +import java.text.SimpleDateFormat; +import java.util.*; @RunWith(SpringRunner.class) @SpringBootTest(classes = {ZqErpApplication.class},webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT) public class FenxiaoSoreInitTest { - - @Autowired - private BusParameterSettingsDao busParameterSettingsDao; + @Autowired private ShopActivitiesDao shopActivitiesDao; + @Autowired private ActivitySignAwardSetDao activitySignAwardSetDao; @Autowired - private TestRestTemplate restTemplate; + private ActivitySignReceiveRecordDao activitySignReceiveRecordDao; + @Autowired + private ActivitySignWriteoffDao activitySignWriteoffDao; - @Test - public void getName() { - String name = restTemplate.getForObject("/common/job", String.class); - System.out.println(name); - Assert.assertEquals("1", name); + @Autowired + private ActivitySignRecordDao activitySignRecordDao; + + @Autowired + ShopDeliveryInfoDao shopDeliveryInfoDao; + + @Autowired + private ShopLogisticsInfoDao shopLogisticsInfoDao; + + @Autowired + private WxShopLogisticsQueryService wxShopLogisticsQueryService; + @Autowired + private ScoreVipDetailService scoreVipDetailService; + @Autowired + private ShopCouponDao shopCouponDao; + @Autowired + private WxShopCouponUtil wxShopCouponUtil; + @Autowired + private ShopCouponRecordDao shopCouponRecordDao; + @Autowired + SysVipInfoDao sysVipInfoDao; + + //获取奖品并索引+1 已领取+1 + public synchronized ActivitySignAwardSet updateShopActivityAndAwardSet(Long actId){ + //通过活动ID获取对应的活动 + ShopActivities shopActivities = shopActivitiesDao.selectById(actId); + String actContent = shopActivities.getActContent(); + LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); + + //中奖索引 + Integer awrdLineIndex = luckyDrawBasicInfoJsonVo.getAwrdLineIndex(); + //中奖序列 + String awardLine = luckyDrawBasicInfoJsonVo.getAwardLine(); + ActivitySignAwardSet activitySignAwardSet = null; + if(awardLine.length() > 0) { + String substring = awardLine.substring(1, awardLine.length() - 1); + List<String> awardList = StrUtil.splitTrim(substring, ","); + if(awrdLineIndex < awardList.size()){ + //中奖 + Long awardId = Long.parseLong(awardList.get(awrdLineIndex + 1)); + ActivitySignAwardSet activitySignAwardSetGet = activitySignAwardSetDao.selectById(awardId); + //奖项库存数量 + int awardInventoryCnt = activitySignAwardSetGet.getAwardInventoryCnt(); + //已派发数量 + int awardDistributeCnt = activitySignAwardSetGet.getAwardDistributeCnt(); + if(awardDistributeCnt < awardInventoryCnt){ + activitySignAwardSet = activitySignAwardSetGet; + activitySignAwardSetGet.setAwardDistributeCnt(awardDistributeCnt +1); + activitySignAwardSetDao.updateById(activitySignAwardSetGet); + + //将基本信息转换成JSON字符串存储到活动主表的act_content字段 + luckyDrawBasicInfoJsonVo.setAwrdLineIndex(awrdLineIndex + 1); + String json= JSON.toJSONString(luckyDrawBasicInfoJsonVo); + shopActivities.setActContent(json); + shopActivitiesDao.updateByModel(shopActivities); + } + } + } + return activitySignAwardSet; } @Test - public void getSignBasicInfo() { + public void getLuckDraw(){ + long actId = 85L; + Long userId = 85L; Long companyId = 36L; - //获取签到活动的信息 - SignBasicInfoVo signBasicInfoVo = new SignBasicInfoVo(); - ShopActivities shopActivities = shopActivitiesDao.selectOneByCompanyIdAndActTypeAndActStatus(companyId,ShopActivities.ACTIVITIES_TYPE_SIGN,ShopActivities.ACTSTATUS_STATUS_ING); - Long actId = shopActivities.getId(); - signBasicInfoVo.setActName(shopActivities.getActName()); - signBasicInfoVo.setActCode(shopActivities.getActCode()); - signBasicInfoVo.setId(shopActivities.getId()); + SysVipInfo user = sysVipInfoDao.selectById(userId); + /** + * 活动是否存在 + * 活动是否已经开始 + * 免费抽奖还是积分抽奖 + * 积分抽奖一次一次换 + * 减少积分 + * 是否中奖 + * 中奖规则 + * 奖品处理 + * + */ + //活动是否存在 + ShopActivities shopActivities = shopActivitiesDao.selectById(actId); + if (ObjectUtil.isEmpty(shopActivities)) { + // return AjaxResult.buildFailInstance("活动不存在"); + } + //活动是否已经开始 + Integer actStatus = shopActivities.getActStatus(); + if(ShopActivities.ACTSTATUS_STATUS_ING != actStatus) { + //return AjaxResult.buildFailInstance("活动未开始"); + } + //获取今日抽奖总次数 String actContent = shopActivities.getActContent(); - SignBasicInfoJsonVo signBasicInfoJsonVo = JSON.parseObject(actContent, SignBasicInfoJsonVo.class); - signBasicInfoVo.setSignBasicInfoJsonVo(signBasicInfoJsonVo); + LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); + List<ActivitySignRecord> activityRecords = activitySignRecordDao.selectListByActIdAndUserIdLikesignTime(actId,userId, DateUtil.date()); + if(CollUtil.isNotEmpty(activityRecords)){ + Integer wmkcjjh = luckyDrawBasicInfoJsonVo.getWmkcjjh(); + Integer jfdhcs = luckyDrawBasicInfoJsonVo.getJfdhcs(); + if(activityRecords.size() >= (wmkcjjh+jfdhcs)){ + //return AjaxResult.buildFailInstance("明天再来抽奖吧"); + } + } - List<ActivitySignAwardSetVo> activitySignAwardSetVos = activitySignAwardSetDao - .selectListByActIDAndCompanyId(actId,companyId, ActivitySignAwardSet.AWARDSTATE_WORK); - signBasicInfoVo.setActivitySignAwardSetVos(activitySignAwardSetVos); + //生成抽奖记录 + ActivitySignRecord activitySignRecordAdd = new ActivitySignRecord(); + activitySignRecordAdd.setCompanyId(companyId); + activitySignRecordAdd.setCreateBy(user.getVipName()); + activitySignRecordAdd.setCreateTime(DateUtil.date()); + activitySignRecordAdd.setUpdateBy(user.getVipName()); + activitySignRecordAdd.setUpdateTime(DateUtil.date()); + activitySignRecordAdd.setActivityId(actId); + activitySignRecordAdd.setSignTime(DateUtil.date()); + activitySignRecordAdd.setUserId(userId); + activitySignRecordDao.insert(activitySignRecordAdd); + /** + 获取中奖概率 + 中奖了获取奖品ID + 没有中奖则获取谢谢参与的奖品ID + 每个人最多中奖次数 + */ + + List<LuckyDrawSuccessVo> luckyDrawSuccessVos = new ArrayList<>(); + + //获取谢谢参与奖 + QueryWrapper<ActivitySignAwardSet> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("award_rule",ActivitySignAwardSet.AWARDRULE_NORMAL); + queryWrapper.eq("company_id",companyId); + queryWrapper.eq("activity_id",actId); + ActivitySignAwardSet activitySignAwardSetNormal = activitySignAwardSetDao.selectOne(queryWrapper); + //每个人最多中奖次数 + Integer zzjcs = luckyDrawBasicInfoJsonVo.getZzjcs(); + QueryWrapper<ActivitySignReceiveRecord> queryWrapperActivitySignReceiveRecord = new QueryWrapper<>(); + queryWrapperActivitySignReceiveRecord.eq("company_id", companyId); + queryWrapperActivitySignReceiveRecord.eq("activity_id", actId); + queryWrapperActivitySignReceiveRecord.eq("user_id", userId); + queryWrapperActivitySignReceiveRecord.ne("award_id", activitySignAwardSetNormal.getId()); + List<ActivitySignReceiveRecord> activitySignReceiveRecordDone = activitySignReceiveRecordDao.selectList(queryWrapperActivitySignReceiveRecord); + if(CollUtil.isNotEmpty(activitySignReceiveRecordDone)){ + if(activitySignReceiveRecordDone.size() >= zzjcs){ + //生成领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); + activitySignReceiveRecord.setUserId(userId); + activitySignReceiveRecord.setReceiveTime(DateUtil.date()); + activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecord.setActivityId(actId); + activitySignReceiveRecord.setCompanyId(companyId); + activitySignReceiveRecord.setCreateBy(user.getVipName()); + activitySignReceiveRecord.setCreateTime(new Date()); + activitySignReceiveRecord.setUpdateBy(user.getVipName()); + activitySignReceiveRecord.setUpdateTime(new Date()); + activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + + LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); + luckyDrawSuccessVo.setType(1); + luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); + luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); + luckyDrawSuccessVos.add(luckyDrawSuccessVo); + + AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); + ajaxResult.setData(luckyDrawSuccessVos); + //return ajaxResult; + } + } + //总中奖率 + int zzjl = luckyDrawBasicInfoJsonVo.getZzjl(); + int randomInt = RandomUtil.randomInt(1, 100); + //不中奖的分界线 + int failureScope = 0; + if(failureScope >= randomInt){ + //生成领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); + activitySignReceiveRecord.setUserId(userId); + activitySignReceiveRecord.setReceiveTime(DateUtil.date()); + activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecord.setActivityId(actId); + activitySignReceiveRecord.setCompanyId(companyId); + activitySignReceiveRecord.setCreateBy(user.getVipName()); + activitySignReceiveRecord.setCreateTime(new Date()); + activitySignReceiveRecord.setUpdateBy(user.getVipName()); + activitySignReceiveRecord.setUpdateTime(new Date()); + activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + + LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); + luckyDrawSuccessVo.setType(1); + luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); + luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); + luckyDrawSuccessVos.add(luckyDrawSuccessVo); + + AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); + ajaxResult.setData(luckyDrawSuccessVos); + //return ajaxResult; + } + //中奖 + if(failureScope < randomInt){ + //获取奖品 + ActivitySignAwardSet activitySignAwardSetCumulativeDay = updateShopActivityAndAwardSet(actId); + + if(ObjectUtil.isNotEmpty(activitySignAwardSetCumulativeDay)){ + LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); + luckyDrawSuccessVo.setType(2); + luckyDrawSuccessVo.setAwardType(activitySignAwardSetCumulativeDay.getAwardType()); + luckyDrawSuccessVo.setAwardName(activitySignAwardSetCumulativeDay.getAwardName()); + luckyDrawSuccessVo.setAwardImg(activitySignAwardSetCumulativeDay.getIntroduceImg()); + luckyDrawSuccessVo.setAwardState(activitySignAwardSetCumulativeDay.getAwardState()); + //新增奖品领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); + activitySignReceiveRecord.setUserId(userId); + activitySignReceiveRecord.setReceiveTime(DateUtil.date()); + activitySignReceiveRecord.setAwardId(activitySignAwardSetCumulativeDay.getId()); + activitySignReceiveRecord.setActivityId(actId); + activitySignReceiveRecord.setCompanyId(companyId); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecord.setCreateBy(user.getVipName()); + activitySignReceiveRecord.setCreateTime(new Date()); + activitySignReceiveRecord.setUpdateBy(user.getVipName()); + activitySignReceiveRecord.setUpdateTime(new Date()); + /** + * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品) + * + * todo:4:店铺商品 + */ + //1:自定义产品 + if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_ING); + String randomString = StringUtils.getRandomString(8); + activitySignReceiveRecord.setWriteOffCode(randomString); + + /** + * 获取对应奖品的领取方式(兑奖方式(1:线下兑换2:物流配送3:客服兑换) + */ + luckyDrawSuccessVo.setWriteOffCode(randomString); + luckyDrawSuccessVo.setAwardWay(activitySignAwardSetCumulativeDay.getAwardWay()); + //2:物流配送 + luckyDrawSuccessVo.setOperationTip(activitySignAwardSetCumulativeDay.getOperationTip()); + //1:线下兑换 + if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay()) { + luckyDrawSuccessVo.setIntroduceTip(activitySignAwardSetCumulativeDay.getIntroduceTip()); + luckyDrawSuccessVo.setPrizeAddress(activitySignAwardSetCumulativeDay.getPrizeAddress()); + luckyDrawSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); + luckyDrawSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); + } + //3:客服兑换 + if(ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { + luckyDrawSuccessVo.setWechatImg(activitySignAwardSetCumulativeDay.getWechatImg()); + luckyDrawSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); + luckyDrawSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); + } + } + //2:积分 + if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { + luckyDrawSuccessVo.setScoreCnt(activitySignAwardSetCumulativeDay.getScoreCnt()); + } + //3:优惠券 + if(ActivitySignAwardSet.AWARDTYPE_COUPON == activitySignAwardSetCumulativeDay.getAwardType()) { + luckyDrawSuccessVo.setCouponName(activitySignAwardSetCumulativeDay.getCouponName()); + //获取优惠券 + int couponId = Integer.parseInt(activitySignAwardSetCumulativeDay.getCouponId()); + ShopCoupon shopCoupon = shopCouponDao.selectById(couponId); + // 如果没有找到该优惠券 + if (shopCoupon == null) { + // return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到该优惠券!"); + } + // 如果优惠券有数量限制并且已经领完 + if (shopCoupon.getMaxQuantity() >= 0 && (shopCoupon.getMaxQuantity() <= shopCoupon.getQuantityReceive())) { + //return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券已领完!"); + } + boolean newPeople = wxShopCouponUtil.verifyIsNewPeople(userId); + // 如果改券是新人专属且当前用户不是新人 + if (AppConstance.COUPON_GET_LIMT_NEW.equals(shopCoupon.getGetLimit()) && !newPeople) { + // return new AjaxResult(AjaxResult.STATUS_FAIL, "该优惠券为新人专享优惠券!"); + } + ShopCouponRecord insertRecord = new ShopCouponRecord(); + insertRecord.setCreateBy(AppConstance.SYSTEM_USER); + insertRecord.setUpdateBy(AppConstance.SYSTEM_USER); + insertRecord.setCId(couponId); + insertRecord.setUserId(userId); + insertRecord.setIsUsing(2); + int i = shopCouponRecordDao.insert(insertRecord); + // 如果插入领取记录表失败 + if (i < 0) { + //return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券领取失败!"); + } + shopCoupon.setQuantityReceive(shopCoupon.getQuantityReceive() + 1); + shopCouponDao.updateByModel(shopCoupon); + } + activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + //累计奖励积分,对应用户积分加减 + if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { + int awardType = activitySignAwardSetCumulativeDay.getAwardType(); + if(ActivitySignAwardSet.AWARDTYPE_SCORE == awardType){ + int scoreCnt = activitySignAwardSetCumulativeDay.getScoreCnt(); + if(scoreCnt > 0){ + scoreVipDetailService.addScore(userId,null,null,scoreCnt, + activitySignReceiveRecord.getId(), ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"签到积分"); + } + } + } + //生成核销记录 + if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { + ActivitySignWriteoff activitySignWriteoff = new ActivitySignWriteoff(); + //线下兑换和客服兑换 + if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay() + || ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { + activitySignWriteoff.setWriteoffCode(activitySignReceiveRecord.getWriteOffCode()); + } + activitySignWriteoff.setActId(actId); + activitySignWriteoff.setAwardId(activitySignAwardSetCumulativeDay.getId()); + activitySignWriteoff.setWinTime(DateUtil.date()); + if(ActivitySignAwardSet.AWARDWAY_TWO == activitySignAwardSetCumulativeDay.getAwardWay()) { + activitySignWriteoff.setState(ActivitySignWriteoff.STATE_TWO); + }else { + activitySignWriteoff.setState(ActivitySignWriteoff.STATE_ONE); + } + activitySignWriteoff.setUserId(userId); + activitySignWriteoff.setCompanyId(companyId); + activitySignWriteoff.setReceiveId(activitySignReceiveRecord.getId()); + activitySignWriteoff.setCreateBy(user.getVipName()); + activitySignWriteoff.setCreateTime(new Date()); + activitySignWriteoff.setUpdateBy(user.getVipName()); + activitySignWriteoff.setUpdateTime(new Date()); + activitySignWriteoffDao.insert(activitySignWriteoff); + } + luckyDrawSuccessVos.add(luckyDrawSuccessVo); + }else{ + //生成领取记录 + ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); + activitySignReceiveRecord.setUserId(userId); + activitySignReceiveRecord.setReceiveTime(DateUtil.date()); + activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); + activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); + activitySignReceiveRecord.setActivityId(actId); + activitySignReceiveRecord.setCompanyId(companyId); + activitySignReceiveRecord.setCreateBy(user.getVipName()); + activitySignReceiveRecord.setCreateTime(new Date()); + activitySignReceiveRecord.setUpdateBy(user.getVipName()); + activitySignReceiveRecord.setUpdateTime(new Date()); + activitySignReceiveRecordDao.insert(activitySignReceiveRecord); + + LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); + luckyDrawSuccessVo.setType(1); + luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); + luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); + luckyDrawSuccessVos.add(luckyDrawSuccessVo); + + AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); + ajaxResult.setData(luckyDrawSuccessVos); + //return ajaxResult; + } + } AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); - ajaxResult.setData(signBasicInfoVo); - System.out.println(signBasicInfoVo); + ajaxResult.setData(luckyDrawSuccessVos); + //return ajaxResult; + } + @Test + public void awardInsert() { + //获取奖品的抽奖顺序 + List<ActivitySignAwardSetVo> activitySignAwardSetVos = new ArrayList<>(); + ActivitySignAwardSetVo activitySignAwardSetVo1 = new ActivitySignAwardSetVo(); + activitySignAwardSetVo1.setAwardInventoryCnt(10); + activitySignAwardSetVo1.setId(1L); + activitySignAwardSetVos.add(activitySignAwardSetVo1); + ActivitySignAwardSetVo activitySignAwardSetVo2 = new ActivitySignAwardSetVo(); + activitySignAwardSetVo2.setAwardInventoryCnt(10); + activitySignAwardSetVo2.setId(2L); + activitySignAwardSetVos.add(activitySignAwardSetVo2); + ActivitySignAwardSetVo activitySignAwardSetVo3 = new ActivitySignAwardSetVo(); + activitySignAwardSetVo3.setAwardInventoryCnt(2); + activitySignAwardSetVo3.setId(3L); + activitySignAwardSetVos.add(activitySignAwardSetVo3); + ActivitySignAwardSetVo activitySignAwardSetVo4 = new ActivitySignAwardSetVo(); + activitySignAwardSetVo4.setAwardInventoryCnt(1); + activitySignAwardSetVo4.setId(4L); + activitySignAwardSetVos.add(activitySignAwardSetVo4); + + //插入所有奖品后的集合 + LinkedList awardIdFinalList = new LinkedList<>(); + if(CollUtil.isNotEmpty(activitySignAwardSetVos)){ + //总数 + int maxCount = 0; + HashMap<Long, ActivitySignAwardSetVo> integerStringHashMap = new HashMap<>(); + for(ActivitySignAwardSetVo activitySignAwardSetVo : activitySignAwardSetVos){ + //总共派发数量 + int awardInventoryCnt = activitySignAwardSetVo.getAwardInventoryCnt(); + integerStringHashMap.put(activitySignAwardSetVo.getId(),activitySignAwardSetVo); + maxCount = maxCount + awardInventoryCnt; + } + HashMap<Long, ActivitySignAwardSetVo> sortHashMap = sortHashMap(integerStringHashMap,2); + HashMap<Long, ActivitySignAwardSetVo> 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, ActivitySignAwardSetVo>> entries = sortHashMap.entrySet().iterator(); + //插入奖品 + while (entries.hasNext()) { + Map.Entry<Long, ActivitySignAwardSetVo> entry = entries.next(); + ActivitySignAwardSetVo activitySignAwardSetVo = entry.getValue(); + int awardInventoryCnt = activitySignAwardSetVo.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); + } + } + } + } + + } + String awrdList = awardIdFinalList.toString(); + String substring = awrdList.substring(1, awrdList.length() - 1); + List<String> strings = Arrays.asList(substring); + System.out.println(strings); + + } + + + + //中间插入对应的奖品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, ActivitySignAwardSetVo> sortHashMap(HashMap<Long, ActivitySignAwardSetVo> map,int type) { + // 首先拿到 map 的键值对集合 + Set<Map.Entry<Long, ActivitySignAwardSetVo>> entrySet = map.entrySet(); + // 将 set 集合转为 List 集合,为什么,为了使用工具类的排序方法 + List<Map.Entry<Long, ActivitySignAwardSetVo>> list = new ArrayList<Map.Entry<Long, ActivitySignAwardSetVo>>(entrySet); + // 使用 Collections 集合工具类对 list 进行排序,排序规则使用匿名内部类来实现 + Collections.sort(list, new Comparator<Map.Entry<Long, ActivitySignAwardSetVo>>() { + @Override + public int compare(Map.Entry<Long, ActivitySignAwardSetVo> o1, Map.Entry<Long, ActivitySignAwardSetVo> o2) { + if(type == 2){ + //按照要求根据 升序进行排,如果是倒序就是o2-o1 + return o2.getValue().getAwardInventoryCnt() - o1.getValue().getAwardInventoryCnt(); + } + return o1.getValue().getAwardInventoryCnt() - o2.getValue().getAwardInventoryCnt(); + } + }); + //创建一个新的有序的 HashMap 子类的集合 + LinkedHashMap<Long, ActivitySignAwardSetVo> linkedHashMap = new LinkedHashMap<Long, ActivitySignAwardSetVo>(); + //将 List 中的数据存储在 LinkedHashMap 中 + for (Map.Entry<Long, ActivitySignAwardSetVo> entry : list) { + linkedHashMap.put(entry.getKey(), entry.getValue()); + } + //返回结果 + return linkedHashMap; + } + + /** + * 获取当月的 天数 + * */ + public static int getCurrentMonthDay(Date date) { + Date beginOfMonth = DateUtil.beginOfMonth(date); + Date endOfMonth = DateUtil.endOfMonth(date); + long betweenDay = DateUtil.between(beginOfMonth, endOfMonth, DateUnit.DAY); + return Integer.parseInt(String.valueOf(betweenDay))+1; + } + /** + * java 获取 获取某年某月 所有日期(yyyy-mm-dd格式字符串) + * @param year + * @param month + * @return + */ + public static List<String> getMonthFullDay(int year , int month){ + SimpleDateFormat dateFormatYYYYMMDD = new SimpleDateFormat("yyyy-MM-dd"); + List<String> fullDayList = new ArrayList<>(32); + // 获得当前日期对象 + Calendar cal = Calendar.getInstance(); + cal.clear();// 清除信息 + cal.set(Calendar.YEAR, year); + // 1月从0开始 + cal.set(Calendar.MONTH, month-1 ); + // 当月1号 + cal.set(Calendar.DAY_OF_MONTH,1); + int count = cal.getActualMaximum(Calendar.DAY_OF_MONTH); + for (int j = 1; j <= count ; j++) { + fullDayList.add(dateFormatYYYYMMDD.format(cal.getTime())); + cal.add(Calendar.DAY_OF_MONTH,1); + } + return fullDayList; + } +// @Test +// public void getinterger() { +// Long userId = 30L; +// Long companyId = 36L; +// int size = activitySignReceiveRecordDao.getSignAwardReceiveCount(userId,companyId); +// } +// /** +// * 获取累计签到天数 +// * @param actId +// * @param userId +// * @param date +// * @return +// */ +// public int getCumulativeDay(long actId, long userId,Date date, int i) { +// ActivitySignRecord activitySignRecordOld = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,date); +// if(ObjectUtil.isEmpty(activitySignRecordOld)) { +// return i; +// } +// i++; +// DateTime offsetDay = DateUtil.offsetDay(date, -i); +// return getCumulativeDay(actId,userId,offsetDay,i); +// } + @Test + public void clickSign() { + long awardId = 10; + Long userId = 30L; + Long companyId = 36L; + SeeAwardTextDto seeAwardTextDto = new SeeAwardTextDto(); + seeAwardTextDto.setAwardId(awardId); + seeAwardTextDto.setCompanyId(companyId); + seeAwardTextDto.setUserId(userId); + logisticsInsure(seeAwardTextDto); + + } + public AjaxResult logisticsInsure(@RequestBody @Validated SeeAwardTextDto seeAwardTextDto) { + SeeAwardTextVo seeAwardTextVO = activitySignReceiveRecordDao.selectSeeAwardTextVOById(seeAwardTextDto); + if(ObjectUtil.isEmpty(seeAwardTextVO)){ + return AjaxResult.buildFailInstance("奖品信息无法查看"); + } + long receiveId = seeAwardTextVO.getId(); + //获取核销记录的ID + ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectActivitySignWriteoffByUserIDAndReceiveId(seeAwardTextDto.getUserId(),receiveId); + if(ObjectUtil.isNotEmpty(activitySignWriteoff)){ + Integer logisticsId = activitySignWriteoff.getLogisticsId(); + ShopDeliveryInfo shopDeliveryInfo = shopDeliveryInfoDao.selectById(logisticsId); + if(ObjectUtil.isNotEmpty(shopDeliveryInfo)){ + //查看物流信息 + wxShopLogisticsQueryService.selectLogisticsInfo(shopDeliveryInfo); + List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId()); + seeAwardTextVO.setShopLogisticsInfos(shopLogisticsInfos); + } + } + AjaxResult result=AjaxResult.buildSuccessInstance(seeAwardTextVO); + return result; + } + /** + * 获取累计签到天数 + * @param actId + * @param userId + * @param date + * @return + */ + public int getCumulativeDay(long actId, long userId,Date date, int i) { + ActivitySignRecord activitySignRecordOld = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,date); + if(ObjectUtil.isEmpty(activitySignRecordOld)) { + return i; + } + i++; + DateTime offsetDay = DateUtil.offsetDay(date, -i); + return getCumulativeDay(actId,userId,offsetDay,i); } public void InitByCompanyId() { //对应的公司ID @@ -76,50 +679,50 @@ // //initBusParameterFenxiaoSetting(companyId); } - /** - * 初始化默认积分规则设置 - */ - public void initBusParameterSetting(long companyId) { - List<BusParameterSettings> ruleSettings=new ArrayList<>(); - - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.VALID_PERIOD_POINTS, companyId)); - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CREDIT_POINTS_CASH, companyId)); - - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CASH_CONSUMPTION, companyId)); - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.PRINCIPAL_BALANCE_CONSUMPTION, companyId)); - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.BONUS_BALANCE_CONSUMPTION, companyId)); - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.PRINCIPAL_CONSUMPTION, companyId)); - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.GIVE_CONSUMPTION, companyId)); - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.REFERRALS_CONSUMPTION, companyId)); - - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CASH_CONSUMPTION_SHOP, companyId)); - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.RESERVATION_SERVICE_SHOP, companyId)); - ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.EVALUATUIN_ORDER_SHOP, companyId)); - - busParameterSettingsDao.batchInsert(ruleSettings); - } - - /** - * 初始化默认分销规则设置 - */ - public void initBusParameterFenxiaoSetting(long companyId) { - List<BusParameterSettings> ruleSettings=new ArrayList<>(); - ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_SWITCH, companyId)); - ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_MODEL, companyId)); - ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_APPLY_WAY, companyId)); - ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_AUDIT_METHOD, companyId)); - ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_APPLY_CONDITION, companyId)); - ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_PLAN, companyId)); - ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_POSTER, companyId)); - ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_ZGFY, companyId)); - busParameterSettingsDao.batchInsert(ruleSettings); - } - - private BusParameterSettings addScoreRuleSetting(String code,long companyId) { - BusParameterSettings busParameterSetting = new BusParameterSettings(); - busParameterSetting.setParamCode(code); - busParameterSetting.setCompanyId(companyId); - return busParameterSetting; - } +// /** +// * 初始化默认积分规则设置 +// */ +// public void initBusParameterSetting(long companyId) { +// List<BusParameterSettings> ruleSettings=new ArrayList<>(); +// +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.VALID_PERIOD_POINTS, companyId)); +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CREDIT_POINTS_CASH, companyId)); +// +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CASH_CONSUMPTION, companyId)); +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.PRINCIPAL_BALANCE_CONSUMPTION, companyId)); +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.BONUS_BALANCE_CONSUMPTION, companyId)); +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.PRINCIPAL_CONSUMPTION, companyId)); +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.GIVE_CONSUMPTION, companyId)); +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.REFERRALS_CONSUMPTION, companyId)); +// +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.CASH_CONSUMPTION_SHOP, companyId)); +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.RESERVATION_SERVICE_SHOP, companyId)); +// ruleSettings.add(addScoreRuleSetting(ScoreSettingConstant.EVALUATUIN_ORDER_SHOP, companyId)); +// +// busParameterSettingsDao.batchInsert(ruleSettings); +// } +// +// /** +// * 初始化默认分销规则设置 +// */ +// public void initBusParameterFenxiaoSetting(long companyId) { +// List<BusParameterSettings> ruleSettings=new ArrayList<>(); +// ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_SWITCH, companyId)); +// ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_MODEL, companyId)); +// ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_APPLY_WAY, companyId)); +// ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_AUDIT_METHOD, companyId)); +// ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_APPLY_CONDITION, companyId)); +// ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_PLAN, companyId)); +// ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_TG_POSTER, companyId)); +// ruleSettings.add(addScoreRuleSetting(FenxiaoSettingConstant.FX_ZGFY, companyId)); +// busParameterSettingsDao.batchInsert(ruleSettings); +// } +// +// private BusParameterSettings addScoreRuleSetting(String code,long companyId) { +// BusParameterSettings busParameterSetting = new BusParameterSettings(); +// busParameterSetting.setParamCode(code); +// busParameterSetting.setCompanyId(companyId); +// return busParameterSetting; +// } } diff --git a/zq-erp/src/test/java/com/matrix/JyyTests.java b/zq-erp/src/test/java/com/matrix/JyyTests.java index bac5650..9297740 100644 --- a/zq-erp/src/test/java/com/matrix/JyyTests.java +++ b/zq-erp/src/test/java/com/matrix/JyyTests.java @@ -9,12 +9,15 @@ import com.matrix.system.score.dao.ScoreVipDetailDao; import com.matrix.system.score.service.ScoreVipDetailService; import com.matrix.system.shopXcx.dao.ShopOrderV2Dao; +import com.matrix.system.shopXcx.mqTask.OrderDingDingNoticeTask; +import com.rabbitmq.client.Delivery; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -48,6 +51,16 @@ @Autowired RedisClient redisClient; + + @Autowired + OrderDingDingNoticeTask orderDingDingNoticeTask; + + @Test + public void testNoticeTask() throws IOException { + orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes())); + } + + @Test public void testRedis() { diff --git a/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java b/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java index eccda8a..22b54cf 100644 --- a/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java +++ b/zq-erp/src/test/java/com/matrix/ParameterSettingsTool.java @@ -75,6 +75,12 @@ newSetting4.setCategory("店务配置"); newSettings.add(newSetting4); + ParameterSettings newSetting5=new ParameterSettings(); + newSetting5.setCode(AppConstance.WX_ORDER_NOTICE_DINGDING_TOKEN); + newSetting5.setName("钉钉通知token"); + newSetting5.setType(1); + newSetting5.setCategory("微商城配置"); + newSettings.add(newSetting5); for (ParameterSettings newSetting : newSettings) { diff --git "a/zq-erp/src/test/java/com/matrix/\345\233\233\346\234\210\344\273\275\345\256\266\345\261\205\344\272\247\345\223\201\344\270\232\347\273\251\346\201\242\345\244\215.java" "b/zq-erp/src/test/java/com/matrix/\345\233\233\346\234\210\344\273\275\345\256\266\345\261\205\344\272\247\345\223\201\344\270\232\347\273\251\346\201\242\345\244\215.java" new file mode 100644 index 0000000..4b1f86b --- /dev/null +++ "b/zq-erp/src/test/java/com/matrix/\345\233\233\346\234\210\344\273\275\345\256\266\345\261\205\344\272\247\345\223\201\344\270\232\347\273\251\346\201\242\345\244\215.java" @@ -0,0 +1,61 @@ +package com.matrix; + +import com.matrix.system.hive.bean.AchieveNew; +import com.matrix.system.hive.bean.SysOrderItem; +import com.matrix.system.hive.dao.AchieveNewDao; +import com.matrix.system.hive.dao.SysOrderDao; +import com.matrix.system.hive.dao.SysOrderItemDao; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + +/** + * 测试类示例 + * + * @author jiangyouyao + * @email 512061637@qq.com + * @date 2019年2月25日 + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = {ZqErpApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class 四月份家居产品业绩恢复 { + + @Autowired + SysOrderDao sysOrderDao; + + @Autowired + SysOrderItemDao itemDao; + + @Autowired + AchieveNewDao achieveNewDao; + + + @Test + public void recoverAchieve() { + + AchieveNew queryAchieve=new AchieveNew(); + List<SysOrderItem> items = itemDao.selectDgd(); + for (SysOrderItem item : + items) { + if(item.getType().equals("家居产品")){ + queryAchieve.setOrderItemId(item.getId()); + List<AchieveNew> achieveNews = achieveNewDao.selectByModel(queryAchieve); + for (AchieveNew achieve : + achieveNews) { + if(achieve.getHisConsume()==null){ + achieve.setHisConsume(achieve.getGoodsCash()); + achieveNewDao.updateByModel(achieve); + System.out.println("更新业绩"+achieve.getId()); + } + } + } + } + + } + + +} -- Gitblit v1.9.1