13 files added
10 files modified
| | |
| | | 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.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 org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @description 奖品设置表 |
| | |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | | * 马上创建签到活动 |
| | |
| | | |
| | | 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); |
| | | |
| | | } |
| | |
| | | @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); |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
| | |
| | | @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; |
| | | |
| | |
| | | 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("操作成功"); |
New file |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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, "兑换成功!"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
New file |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
| | |
| | | * 活动类型 签到 |
| | | */ |
| | | public static final int ACTIVITIES_TYPE_SIGN = 4; |
| | | /** |
| | | * 活动类型转盘抽奖 |
| | | */ |
| | | public static final int ACTIVITIES_TYPE_LUCKYDRAW = 5; |
| | | |
| | | /** |
| | | * 活动状态 开启 |
| | |
| | | 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; |
| | | //进行中 |
| | |
| | | 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> |
| | |
| | | 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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | <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="openSignReceive(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> |
| | |
| | | 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({ |
New file |
| | |
| | | <!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-col> |
| | | <div style="padding:5px;font-size: 15px;text-align: right;"> |
| | | <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', |
| | | //标题图片 |
| | | imageUrlTitle: '', |
| | | imageLine: '', |
| | | imageUrlHead: "../../../images/sign/signHead.png", |
| | | imageUrlButton: "../../../images/sign/signButton.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> |
New file |
| | |
| | | <!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-col> |
| | | <div style="padding:5px;font-size: 15px;text-align: right;"> |
| | | <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, |
| | | }, |
| | | |
| | | //标题图片 |
| | | imageUrlTitle: '', |
| | | imageLine: '', |
| | | imageUrlHead: "../../../images/sign/signHead.png", |
| | | imageUrlButton: "../../../images/sign/signButton.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> |
| | |
| | | |
| | | <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"> |
| | |
| | | </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/sign/meiriqiandao.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> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | </div> |
| | | </body> |
| | |
| | | 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(){ |
| | | $.AjaxProxy().invoke(basePath + "/admin/activitySignAwardSet/createSignAwardSet", function(loj) { |
| | |
| | | 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'] |