55 files modified
35 files added
| | |
| | | <exclude>config/xcx/*</exclude> |
| | | <exclude>config/xcshop/*</exclude> |
| | | |
| | | <!----> |
| | | <!-- |
| | | <exclude>config/config.json</exclude> |
| | | <exclude>config/application.properties</exclude> |
| | | <exclude>config/system.properties</exclude> |
| | | |
| | | |
| | | --> |
| | | |
| | | <exclude>**/*.woff</exclude> |
| | | <exclude>**/*.woff2</exclude> |
| | |
| | | .excludePathPatterns("/plugin/**") |
| | | .excludePathPatterns("/swagger**/**") |
| | | .excludePathPatterns("/webjars/**"); |
| | | |
| | | // 用户认证拦截 |
| | | registry.addInterceptor(userLoginInterceptor) |
| | | .addPathPatterns("/**") |
| | | .excludePathPatterns("/common/**") |
| | | .excludePathPatterns("/resource/**") |
| | | .excludePathPatterns("/swagger**/**") |
| | | .excludePathPatterns("/webjars/**") |
| | | .excludePathPatterns("/api/**"); |
| | | // registry.addInterceptor(userLoginInterceptor) |
| | | // .addPathPatterns("/**") |
| | | // .excludePathPatterns("/common/**") |
| | | // .excludePathPatterns("/resource/**") |
| | | // .excludePathPatterns("/swagger**/**") |
| | | // .excludePathPatterns("/webjars/**") |
| | | // .excludePathPatterns("/api/**"); |
| | | |
| | | // url权限拦截 |
| | | registry.addInterceptor(suAuthorityInterceptor).addPathPatterns("/**/su/**"); |
| | |
| | | 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; |
| | | |
| | | } |
| | |
| | | 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; |
| | | |
| | | } |
| | |
| | | * 主键 |
| | | */ |
| | | private Long id; |
| | | //活动类型 |
| | | private int actType; |
| | | |
| | | @ApiModelProperty(value = "用户") |
| | | private String nickName; |
| | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.matrix.core.anotations.Extend; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import com.matrix.system.app.dto.BasePageDto; |
| | | import com.matrix.system.common.bean.EntityDTOExt; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | |
| | | * |
| | | * @date 2019-03-24 23:55 |
| | | */ |
| | | public class AchieveNew implements Serializable{ |
| | | public class AchieveNew extends EntityDTOExt { |
| | | @Extend |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * 美疗师id |
| | | * 美疗师id 把这个字段视为正式的业绩归属人 |
| | | */ |
| | | private Long beaultId; |
| | | |
New file |
| | |
| | | package com.matrix.system.hive.bean; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.matrix.system.hiveErp.pojo.AchieveRuleItem; |
| | | import com.matrix.system.score.entity.BaseEntity; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotEmpty; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 业绩规则 |
| | | * @author JIANGYOUYAO |
| | | * @date 2021/6/3 0003 |
| | | */ |
| | | @Data |
| | | @TableName("achieve_rule") |
| | | public class AchieveRule extends BaseEntity { |
| | | |
| | | @NotEmpty(message = "规则名称不能为空") |
| | | private String name; |
| | | |
| | | |
| | | private String rules; |
| | | |
| | | private Long companyId; |
| | | |
| | | @TableField(exist=false) |
| | | @NotEmpty(message = "规则不能为空") |
| | | private List<AchieveRuleItem> ruleItemList; |
| | | |
| | | } |
| | |
| | | package com.matrix.system.hive.bean; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.matrix.core.anotations.Extend; |
| | | import com.matrix.core.tools.DateUtil; |
| | |
| | | * |
| | | * @date 2016-09-17 10:17 |
| | | */ |
| | | |
| | | public class MoneyCardUse { |
| | | |
| | | |
| | | @TableId(value = "id",type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | |
| | |
| | | * 任选套餐是否无限次 N-否 Y-是 |
| | | */ |
| | | private String isInfinite; |
| | | /** |
| | | *业绩规则id |
| | | */ |
| | | private Long achieveRuleId; |
| | | |
| | | /** |
| | | *业绩规则名称 |
| | | */ |
| | | @Extend |
| | | private String achieveRuleName; |
| | | |
| | | /** |
| | | * 支付方式 1-充值本金 2-赠送金额 3-积分 |
| | | */ |
| | | private String payMethods; |
| | | |
| | | public String getAchieveRuleName() { |
| | | return achieveRuleName; |
| | | } |
| | | |
| | | public void setAchieveRuleName(String achieveRuleName) { |
| | | this.achieveRuleName = achieveRuleName; |
| | | } |
| | | |
| | | public Long getAchieveRuleId() { |
| | | return achieveRuleId; |
| | | } |
| | | |
| | | public void setAchieveRuleId(Long achieveRuleId) { |
| | | this.achieveRuleId = achieveRuleId; |
| | | } |
| | | |
| | | public String getPayMethods() { |
| | | return payMethods; |
| | | } |
| | |
| | | private Date orderTime; |
| | | |
| | | /** |
| | | * 收款 |
| | | * calculationType: 1, |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") |
| | | private Date payTime; |
| | |
| | | package com.matrix.system.hive.dao; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.matrix.core.pojo.PaginationVO; |
| | | import com.matrix.system.app.vo.OrderDetailAchieveItemVo; |
| | | import com.matrix.system.app.vo.RankingVo; |
| | | import com.matrix.system.app.vo.UserAchieveVo; |
| | | import com.matrix.system.hive.bean.AchieveNew; |
| | | import com.matrix.system.hive.dto.AchieveNewStatisticsDto; |
| | | import com.matrix.system.hive.vo.AchieveNewStatisticsVo; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.Date; |
| | |
| | | */ |
| | | |
| | | |
| | | public interface AchieveNewDao{ |
| | | public interface AchieveNewDao extends BaseMapper<AchieveNew> { |
| | | |
| | | public int insert(@Param("item") AchieveNew achieveNew); |
| | | |
| | |
| | | |
| | | int updateAchieveNumOfPeople(@Param("list") List<AchieveNew> list, @Param("num") Double num); |
| | | |
| | | IPage<AchieveNewStatisticsVo> achieveNewStatistics(Page<AchieveNewStatisticsVo> page, @Param("record")AchieveNewStatisticsDto queryDto); |
| | | } |
New file |
| | |
| | | package com.matrix.system.hive.dao; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.matrix.system.hive.bean.AchieveRule; |
| | | |
| | | /** |
| | | * 业绩规则dao |
| | | */ |
| | | public interface AchieveRuleDao extends BaseMapper<AchieveRule> { |
| | | |
| | | } |
| | |
| | | List<OrderDetailItemVo> selectApiOrderDetailItemsByOrderId(@Param("orderId") Long orderId); |
| | | |
| | | List<ErpOrderDetailItemVo> selectErpOrderItemByOrderId(String orderId); |
| | | |
| | | List<SysOrderItem> selectDgd(); |
| | | } |
| | |
| | | public SysVipInfo findByOpenId(String openId); |
| | | |
| | | int unbundlingSaleMan(Long userId); |
| | | |
| | | int bindingRecommend(@Param("recommendId") Long recommendId,@Param("userId") Long userId); |
| | | } |
New file |
| | |
| | | package com.matrix.system.hive.dto; |
| | | |
| | | import com.google.common.base.CaseFormat; |
| | | import com.matrix.core.pojo.BasePageQueryDto; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class AchieveNewStatisticsDto extends BasePageQueryDto { |
| | | |
| | | //规则名称 |
| | | String achieveRuleId; |
| | | |
| | | |
| | | //业绩归属人id |
| | | String staffName; |
| | | |
| | | |
| | | //门店名称 |
| | | Long shopId; |
| | | |
| | | //公司id |
| | | Long companyId; |
| | | |
| | | //订单类型 |
| | | String orderType; |
| | | |
| | | @Override |
| | | public void setSort(String sort) { |
| | | if(StringUtils.isNotBlank(sort)){ |
| | | if ("ruleName".equals(sort)) { |
| | | super.setSort("u.name"); |
| | | } else { |
| | | super.setSort(CaseFormat.LOWER_CAMEL.to |
| | | (CaseFormat.LOWER_UNDERSCORE, sort)); |
| | | } |
| | | }else{ |
| | | super.setSort(sort); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.matrix.system.hive.service; |
| | | |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.matrix.system.hive.bean.AchieveRule; |
| | | import com.matrix.system.hive.dao.AchieveRuleDao; |
| | | import com.matrix.system.hiveErp.pojo.AchieveRuleItem; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * 业绩规则服务 |
| | | * @author JIANGYOUYAO |
| | | * @date 2021/6/3 0003 |
| | | */ |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class AchieveRuleService { |
| | | |
| | | AchieveRuleDao achieveRuleDao; |
| | | |
| | | |
| | | /** |
| | | * 根据id查询 AchieveRule |
| | | * @param id |
| | | * @return |
| | | */ |
| | | public AchieveRule selectById(Long id){ |
| | | AchieveRule achieveRule = achieveRuleDao.selectById(id); |
| | | achieveRule.setRuleItemList(JSONUtil.toList(JSONUtil.parseArray(achieveRule.getRules()), AchieveRuleItem.class)); |
| | | return achieveRule; |
| | | } |
| | | |
| | | } |
| | |
| | | package com.matrix.system.hive.service.imp; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.matrix.core.constance.MatrixConstance; |
| | | import com.matrix.core.exception.GlobleException; |
| | | import com.matrix.core.pojo.PaginationVO; |
| | |
| | | import com.matrix.system.common.dao.SysUsersDao; |
| | | import com.matrix.system.constance.Dictionary; |
| | | import com.matrix.system.hive.bean.*; |
| | | import com.matrix.system.hive.dao.AchieveNewDao; |
| | | import com.matrix.system.hive.dao.ShoppingGoodsDao; |
| | | import com.matrix.system.hive.dao.SysBeauticianStateDao; |
| | | import com.matrix.system.hive.dao.SysProjUseDao; |
| | | import com.matrix.system.hive.dao.*; |
| | | import com.matrix.system.hive.plugin.util.CollectionUtils; |
| | | import com.matrix.system.hive.service.AchieveNewService; |
| | | import com.matrix.system.hive.service.SysProjServicesService; |
| | | import com.matrix.system.hiveErp.pojo.AchieveRuleItem; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | // 是否为赠送业绩 |
| | | if (Dictionary.TAOCAN_SOURCE_ZS.equals(projUse.getSource())) { |
| | | achieveNew.setFreeConsume(projUse.getPrice()*beauticianState.getCount()); |
| | | //计算提成 |
| | | achieveNew.setProjPercentage( |
| | | calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_ZS,achieveNew.getFreeConsume(),beauticianState.getProjId())); |
| | | } else { |
| | | achieveNew.setHisConsume(projUse.getPrice()*beauticianState.getCount()); |
| | | //计算提成 |
| | | achieveNew.setProjPercentage( |
| | | calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_BJ,achieveNew.getHisConsume(),beauticianState.getProjId())); |
| | | } |
| | | achieveNew.setT2(projUse.getSource()); |
| | | achieveNew.setDatatime(new Date()); |
| | |
| | | |
| | | if (flag) { |
| | | // if (!achieveId.equals(beauticianState.getStaffId())) { |
| | | AchieveNew saleMan = new AchieveNew(); |
| | | BeanUtils.copyProperties(achieveNew, saleMan); |
| | | saleMan.setBeaultId(achieveId); |
| | | AchieveNew saleManAchieve = new AchieveNew(); |
| | | BeanUtils.copyProperties(achieveNew, saleManAchieve); |
| | | saleManAchieve.setBeaultId(achieveId); |
| | | |
| | | saleAchieveNumOfPeople(saleMan); |
| | | achieveNewList.add(saleMan); |
| | | saleAchieveNumOfPeople(saleManAchieve); |
| | | //销售人员不计算项目提成 |
| | | saleManAchieve.setProjPercentage(0D); |
| | | achieveNewList.add(saleManAchieve); |
| | | // } |
| | | } |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | @Autowired |
| | | AchieveRuleDao achieveRuleDao; |
| | | |
| | | private Double calculationProjPercentage(int type, Double consume, Long goodsId) { |
| | | ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(goodsId); |
| | | if(shoppingGoods.getAchieveRuleId()!=null){ |
| | | |
| | | AchieveRule achieveRule = achieveRuleDao.selectById(shoppingGoods.getAchieveRuleId()); |
| | | if(achieveRule!=null){ |
| | | List<AchieveRuleItem> achieveRuleItems = JSONUtil.toList(JSONUtil.parseArray(achieveRule.getRules()), AchieveRuleItem.class); |
| | | double percentage=0D; |
| | | for(AchieveRuleItem item:achieveRuleItems){ |
| | | if(item.getAchieveType()==type |
| | | && (item.getLower() == consume |
| | | || (item.getLower()< consume && consume < item.getUpper() ))){ |
| | | |
| | | if(AchieveRuleItem.ACHIEVE_TYPE_FIXED==item.getCalculationType()){ |
| | | percentage=item.getAchieve(); |
| | | }else{ |
| | | percentage= consume * (item.getAchieve()/100); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | return percentage; |
| | | } |
| | | } |
| | | return 0D; |
| | | } |
| | | |
| | | /** |
| | | * 顾问人头业绩 |
| | | * @param achieveNew |
| | |
| | | for (AchieveNew achieveNew : orderItem.getAchieveList()) { |
| | | if (achieveNew !=null && achieveNew.getGoodsCash()!=null) { |
| | | buildAchieve(pageOrder, orderItem, achieveNew); |
| | | // 新增美疗师业绩 |
| | | achieveNewList.add(achieveNew); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | achieveNew.setVipId(pageOrder.getVipId()); |
| | | if(achieveNew.getSaleId()==null){ |
| | | achieveNew.setSaleId(pageOrder.getStaffId()); |
| | | } |
| | | |
| | | |
| | | if (pageOrder.getPayTime() != null) { |
| | | achieveNew.setDatatime(pageOrder.getPayTime()); |
| | |
| | | if (!Dictionary.ORDER_STATU_DFK.equals(pageOrder.getStatu())) { |
| | | throw new GlobleException("该订单已经收过款,请刷新页面再试!"); |
| | | } |
| | | |
| | | //交易业绩设置是否合理 |
| | | |
| | | checkAchieveIsOk(pageOrder); |
| | | |
| | | |
| | | // 更新收款时间 |
| | | pageOrder.setPayTime(new Date()); |
| | | pageOrder.setStatu(Dictionary.ORDER_STATU_YFK); |
| | |
| | | //设置会员积分 |
| | | addVipScore(pageOrder); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 交易业绩设置是否合理 |
| | | * @param pageOrder |
| | | */ |
| | | private void checkAchieveIsOk(SysOrder pageOrder) { |
| | | double huakouSum = pageOrder.getItems().stream() |
| | | .mapToDouble( |
| | | item -> |
| | | item.getAchieveList().stream() |
| | | .filter(achieveNew -> "划扣".equals(achieveNew.getPayMethod())) |
| | | .mapToDouble(achieve -> achieve.getGoodsCash()).sum() |
| | | ).sum(); |
| | | |
| | | double czkPay= pageOrder.getFlows().stream() |
| | | .filter(sysOrderFlow -> "储值卡".equals(sysOrderFlow.getPayMethod())) |
| | | .mapToDouble(sysOrderFlow ->sysOrderFlow.getAmount().doubleValue()).sum(); |
| | | |
| | | if(czkPay!=huakouSum){ |
| | | throw new GlobleException("划扣业绩不等于储值卡扣款金额,请修改业绩设置!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | } else { |
| | | puse.setPrice(goodsAssemble.getPrice() * zk); |
| | | } |
| | | puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount()))); |
| | | |
| | | // 赠送和打折后金额为0的都视为赠送项目 |
| | | if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) { |
| | | puse.setSource(Dictionary.TAOCAN_SOURCE_GM); |
| | | } else { |
| | | //赠送产品按原价计算消耗 |
| | | puse.setSource(Dictionary.TAOCAN_SOURCE_ZS); |
| | | if (taocanId == null) { |
| | | puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() ); |
| | | } else { |
| | | puse.setPrice(goodsAssemble.getPrice()); |
| | | } |
| | | } |
| | | puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount()))); |
| | | puse.setFailTime(failTime); |
| | | sysProjUseDao.insert(puse); |
| | | return puse; |
| | |
| | | puse.setVipId(order.getVipId()); |
| | | puse.setStatus(Dictionary.TAOCAN_STATUS_YX); |
| | | puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM); |
| | | puse.setBalance(sysOrderItem.getZkPrice()); |
| | | puse.setPrice(sysOrderItem.getZkPrice()); |
| | | |
| | | |
| | | puse.setProjName(sysOrderItem.getShoppingGoods().getName()); |
| | | // 赠送和打折后金额为0的都视为赠送项目 |
| | | if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) { |
| | | puse.setSource(Dictionary.TAOCAN_SOURCE_GM); |
| | | puse.setPrice(sysOrderItem.getZkPrice()); |
| | | } else { |
| | | puse.setSource(Dictionary.TAOCAN_SOURCE_ZS); |
| | | //赠送产品按原价计算消耗 |
| | | puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice()); |
| | | } |
| | | // 设置失效时间 |
| | | Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null); |
| | | puse.setFailTime(invalidTime); |
| | | puse.setBalance(sysOrderItem.getShoppingGoods().getSealPice()*puse.getSurplusCount()); |
| | | sysProjUseDao.insert(puse); |
| | | } |
| | | |
| | |
| | | throw new GlobleException(sysVipInfo.getPhone()+"手机已被注册!"); |
| | | } |
| | | } |
| | | |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | if(user!=null){ |
| | | sysVipInfo.setCompanyId(user.getCompanyId()); |
| | | } |
| | | sysVipInfo.setCreateTime(new Date()); |
| | | sysVipInfo.setPointAll(0); |
| | | sysVipInfo.setIsDeal(SysVipInfo.UNDEAL_VIP); |
| | |
| | | package com.matrix.system.hive.statistics; |
| | | |
| | | 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.pojo.PaginationVO; |
| | |
| | | import com.matrix.system.hive.action.util.QueryUtil; |
| | | import com.matrix.system.hive.bean.AchieveNew; |
| | | import com.matrix.system.hive.dao.AchieveNewDao; |
| | | import com.matrix.system.hive.dto.AchieveNewStatisticsDto; |
| | | import com.matrix.system.hive.plugin.util.CollectionUtils; |
| | | import com.matrix.system.hive.service.AchieveNewService; |
| | | import com.matrix.system.hive.service.SysOrderItemService; |
| | | import com.matrix.system.hive.service.SysOrderService; |
| | | import com.matrix.system.hive.vo.AchieveNewStatisticsVo; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.ui.ModelMap; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | |
| | | @Autowired |
| | | private AchieveNewDao achieveNewDao; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 员工业绩统计 |
| | | */ |
| | | @PostMapping(value = "/achieveNewStatistics") |
| | | public @ResponseBody |
| | | AjaxResult achieveNewStatistics(@RequestBody AchieveNewStatisticsDto queryDto){ |
| | | SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | |
| | | queryDto.setCompanyId(sysUsers.getCompanyId()); |
| | | |
| | | Page<AchieveNewStatisticsVo> page = new Page(queryDto.getPageNum(), queryDto.getPageSize()); |
| | | IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto); |
| | | AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 门店每日单据明细表 |
| | | */ |
| | |
| | | */ |
| | | @RequestMapping(value = "/findDailyInfoNew") |
| | | public @ResponseBody |
| | | AjaxResult findDailyInfoNew(AchieveNew achieveNew, PaginationVO pageVo) { |
| | | AjaxResult findDailyInfoNew(@RequestBody AchieveNew achieveNew) { |
| | | SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | achieveNew.setCompanyId(sysUsers.getCompanyId()); |
| | | if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){ |
| | | achieveNew.setShopId(sysUsers.getShopId()); |
| | | } |
| | | PaginationVO pageVo = new PaginationVO(); |
| | | |
| | | pageVo.setOffset(achieveNew.getOffset()); |
| | | pageVo.setLimit(achieveNew.getLimit()); |
| | | pageVo.setSort("datatime"); |
| | | pageVo.setOrder("desc"); |
| | | AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, achieveNewService.findDayFlow(achieveNew, pageVo), |
| | |
| | | return result; |
| | | } |
| | | |
| | | @RequestMapping(value = "/exportAchieveNewStatisticsExcel") |
| | | public void exportAchieveNewStatisticsExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNewStatisticsDto queryDto) throws IOException { |
| | | //这里是从数据库里查数据并组装成我们想要的数据结构的过程 |
| | | List<ExcelSheetPO> res = new ArrayList<>(); |
| | | ExcelSheetPO orderSheet = new ExcelSheetPO(); |
| | | String title = "员工业绩统计"; |
| | | orderSheet.setSheetName(title); |
| | | orderSheet.setTitle(title); |
| | | String[] header = {"规则名称", "门店名称", "业绩归属人", "业绩创建人", "订单金额", "现金", "划扣", "本金消耗", "赠送消耗" |
| | | , "服务提成", "人头", "项目个数", "服务时间", "订单类型"}; |
| | | orderSheet.setHeaders(header); |
| | | SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){ |
| | | queryDto.setShopId(sysUsers.getShopId()); |
| | | } |
| | | queryDto.setCompanyId(sysUsers.getCompanyId()); |
| | | Page<AchieveNewStatisticsVo> page = new Page(1, Long.MAX_VALUE); |
| | | IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto); |
| | | List<AchieveNewStatisticsVo> dataList = rows.getRecords(); |
| | | List<List<Object>> list = new ArrayList<>(); |
| | | if (dataList.size() > 0) { |
| | | for (AchieveNewStatisticsVo item : dataList) { |
| | | List<Object> temp = new ArrayList<>(); |
| | | temp.add(item.getRuleName()); |
| | | temp.add(item.getShopName()); |
| | | temp.add(item.getGuwen()); |
| | | temp.add(item.getCreateBy()); |
| | | temp.add(item.getZkTotal()); |
| | | temp.add(item.getGoodsCash()); |
| | | temp.add(item.getCardCash()); |
| | | temp.add(item.getHisConsume()); |
| | | temp.add(item.getFreeConsume()); |
| | | temp.add(item.getProjPercentage()); |
| | | temp.add(item.getNumberOfPeople()); |
| | | temp.add(item.getProjNum()); |
| | | temp.add(item.getProjTime()); |
| | | temp.add(item.getOrderType()); |
| | | list.add(temp); |
| | | } |
| | | } |
| | | orderSheet.setDataList(list); |
| | | res.add(orderSheet); |
| | | response = ResponseHeadUtil.setExcelHead(response); |
| | | response.setHeader("Content-Disposition", |
| | | "attachment;filename=" + java.net.URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8")); |
| | | OutputStream os = response.getOutputStream(); |
| | | com.matrix.core.tools.excl.ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); |
| | | } |
| | | |
| | | @RequestMapping(value = "/exportDailyInfoNew") |
| | | public void exportDailyInfoNew(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNew achieveNew) throws IOException { |
| | | //这里是从数据库里查数据并组装成我们想要的数据结构的过程 |
New file |
| | |
| | | package com.matrix.system.hive.vo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | public class AchieveNewStatisticsVo { |
| | | //规则名称 |
| | | String ruleName; |
| | | //业绩归属人 |
| | | String guwen; |
| | | //业绩归属人id |
| | | Long gwid; |
| | | //订单创建人 |
| | | String createBy; |
| | | //创建人id |
| | | Long createId; |
| | | //订单金额 |
| | | BigDecimal zkTotal; |
| | | //消耗金额 |
| | | BigDecimal hisConsume; |
| | | //赠送消耗 |
| | | BigDecimal freeConsume; |
| | | //项目提成 |
| | | BigDecimal projPercentage; |
| | | // 人头数 |
| | | Double numberOfPeople; |
| | | //项目数 |
| | | Double projNum; |
| | | //项目时长 |
| | | Integer projTime; |
| | | //现金支付 |
| | | BigDecimal goodsCash; |
| | | //卡项支付 |
| | | BigDecimal cardCash; |
| | | //门店名称 |
| | | String shopName; |
| | | //订单类型 |
| | | String orderType; |
| | | |
| | | } |
New file |
| | |
| | | package com.matrix.system.hiveErp.action; |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | 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.pojo.BasePageQueryDto; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.core.tools.WebUtil; |
| | | import com.matrix.system.common.bean.SysUsers; |
| | | import com.matrix.system.common.dao.SysUsersDao; |
| | | import com.matrix.system.hive.action.util.QueryUtil; |
| | | import com.matrix.system.hive.bean.AchieveRule; |
| | | import com.matrix.system.hive.dao.AchieveRuleDao; |
| | | import com.matrix.system.hiveErp.pojo.AchieveRuleItem; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | /** |
| | | * 业绩规则Api |
| | | * |
| | | * @author jiangyouyao |
| | | * @date 2021-06-03 |
| | | **/ |
| | | @RestController |
| | | @AllArgsConstructor |
| | | @RequestMapping(value = "/admin/achieveRule") |
| | | public class AchieveRuleAction { |
| | | |
| | | private AchieveRuleDao achieveRuleDao; |
| | | |
| | | |
| | | private SysUsersDao sysUsersDao; |
| | | |
| | | |
| | | /** |
| | | * 新增业绩规则 |
| | | * @param achieveRule |
| | | * @return |
| | | */ |
| | | @PostMapping("/add") |
| | | public AjaxResult add(@RequestBody @Validated AchieveRule achieveRule) { |
| | | |
| | | |
| | | |
| | | String rules = JSONUtil.toJsonStr(achieveRule.getRuleItemList()); |
| | | achieveRule.setRules(rules); |
| | | |
| | | QueryUtil.setQueryLimitCom(achieveRule); |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | achieveRule.setCreateTime(DateTime.now()); |
| | | achieveRule.setUpdateTime(DateTime.now()); |
| | | achieveRule.setCreateBy(user.getSuName()); |
| | | achieveRule.setUpdateBy(user.getSuName()); |
| | | achieveRuleDao.insert(achieveRule); |
| | | return AjaxResult.buildSuccessInstance("新增成功"); |
| | | } |
| | | |
| | | /** |
| | | * 修改业绩规则 |
| | | * |
| | | * @param achieveRule |
| | | * @return |
| | | */ |
| | | @PostMapping("/update") |
| | | public AjaxResult update(@RequestBody @Validated AchieveRule achieveRule) { |
| | | |
| | | if (achieveRule.getId() == null) { |
| | | return AjaxResult.buildFailInstance("id不能为空"); |
| | | } |
| | | |
| | | String rules = JSONUtil.toJsonStr(achieveRule.getRuleItemList()); |
| | | achieveRule.setRules(rules); |
| | | |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | achieveRule.setUpdateBy(user.getSuName()); |
| | | achieveRule.setUpdateTime(DateTime.now()); |
| | | achieveRuleDao.updateById(achieveRule); |
| | | return AjaxResult.buildSuccessInstance("修改成功"); |
| | | } |
| | | |
| | | /** |
| | | * 删除id |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @GetMapping("/removeById/{id}") |
| | | public AjaxResult removeById(@PathVariable Long id) { |
| | | achieveRuleDao.deleteById(id); |
| | | return AjaxResult.buildSuccessInstance("删除成功"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 分页查询规则 |
| | | * |
| | | * @param pageDto |
| | | * @return |
| | | */ |
| | | @PostMapping("/selectList") |
| | | public AjaxResult selectList(@RequestBody BasePageQueryDto pageDto) { |
| | | |
| | | SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | Page<AchieveRule> page = new Page<>(pageDto.getPageNum(), pageDto.getPageSize()); |
| | | LambdaQueryWrapper<AchieveRule> lambdaQueryWrapper = new LambdaQueryWrapper<AchieveRule>() |
| | | .eq(AchieveRule::getCompanyId, user.getCompanyId()); |
| | | if (StringUtils.isNotBlank(pageDto.getKeywords())) { |
| | | lambdaQueryWrapper.like(AchieveRule::getName, pageDto.getKeywords()); |
| | | } |
| | | IPage<AchieveRule> achieveRuleIPage = achieveRuleDao.selectPage(page, lambdaQueryWrapper); |
| | | achieveRuleIPage.getRecords().stream().forEach(item->{ |
| | | item.setRuleItemList(JSONUtil.toList(JSONUtil.parseArray(item.getRules()), AchieveRuleItem.class)); |
| | | item.setRules(null); |
| | | }); |
| | | |
| | | AjaxResult result = AjaxResult.buildSuccessInstance(achieveRuleIPage.getRecords(), achieveRuleIPage.getTotal()); |
| | | return result; |
| | | } |
| | | |
| | | @PostMapping("/selectListForm") |
| | | public AjaxResult selectListForm(BasePageQueryDto pageDto) { |
| | | return selectList(pageDto); |
| | | } |
| | | } |
New file |
| | |
| | | package com.matrix.system.hiveErp.pojo; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * 绩效规则明细 |
| | | * @author JIANGYOUYAO |
| | | * @date 2021/6/3 0003 |
| | | */ |
| | | @Data |
| | | public class AchieveRuleItem { |
| | | /** |
| | | * 类型,1本金消耗 |
| | | */ |
| | | public static final int ACHIEVE_TYPE_BJ=1; |
| | | /** |
| | | * 类型,2赠送消耗 |
| | | */ |
| | | public static final int ACHIEVE_TYPE_ZS =2; |
| | | /** |
| | | * 计算类型 1 固定值 |
| | | */ |
| | | public static final int ACHIEVE_TYPE_FIXED=1; |
| | | /** |
| | | * 计算类型 2百分比 |
| | | */ |
| | | public static final int ACHIEVE_TYPE_PERCENTAGE=2; |
| | | |
| | | |
| | | /** |
| | | * 类型,1本金消耗,2赠送消耗 |
| | | */ |
| | | private Integer achieveType; |
| | | |
| | | /** |
| | | * 计算类型 1 固定值,2百分比 |
| | | */ |
| | | private Integer calculationType; |
| | | |
| | | /** |
| | | * 区间-低 |
| | | */ |
| | | private Double Lower ; |
| | | |
| | | /** |
| | | * 区间-高 |
| | | */ |
| | | private Double upper ; |
| | | |
| | | /** |
| | | * 业绩值 |
| | | */ |
| | | private Double achieve; |
| | | |
| | | |
| | | } |
| | |
| | | import com.matrix.core.tools.WebUtil; |
| | | import com.matrix.system.common.bean.SysUsers; |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | import com.matrix.system.common.dao.BusParameterSettingsDao; |
| | | import com.matrix.system.hive.action.util.QueryUtil; |
| | | import com.matrix.system.shopXcx.api.service.WXShopOrderService; |
| | | import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService; |
| | |
| | | @Autowired |
| | | private RabiitMqTemplate rabiitMqTemplate; |
| | | |
| | | @Autowired |
| | | BusParameterSettingsDao parameterSettingsDao; |
| | | |
| | | /** |
| | | * 列表显示 |
| | |
| | | modifyMap.put("refundCharge", shopRefundRecord.getRefundMoney()); |
| | | shopOrderDao.updateByMap(modifyMap); |
| | | |
| | | |
| | | |
| | | |
| | | rabiitMqTemplate.sendMsg(MQTaskRouting.SHOP_ORDER_REFUND+evn,shopRefundRecord.getOrderId()+""); |
| | | |
| | | |
| | | }catch (Exception e){ |
| | | LogUtil.debug("退款成功,修改退款表和订单表状态出错。。。", id); |
| | | e.printStackTrace(); |
| | |
| | | package com.matrix.system.shopXcx.api.action; |
| | | |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.component.redis.RedisUserLoginUtils; |
| | | import com.matrix.component.tools.WxUtils; |
| | | import com.matrix.core.pojo.AjaxResult; |
| | |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | import com.matrix.system.common.dao.BusParameterSettingsDao; |
| | | import com.matrix.system.common.dao.CustomerDataDictionaryDao; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService; |
| | | import com.matrix.system.shopXcx.api.tools.SMSTools; |
| | | import com.matrix.system.shopXcx.bean.ShopDeliveryInfo; |
| | |
| | | return Double.valueOf(moneyStr); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 接收保存退款退货数据 |
| | | */ |
| | |
| | | if (i == 0) { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "保存失败"); |
| | | } |
| | | |
| | | ShopOrder order = shopOrderDao.selectById(refundRecord.getOrderId()); |
| | | //未发货的订单取消订单不走后台审核直接退款 |
| | | List<ShopRefundRecord> refundRecordsList = refundRecordDao.selectByModel(record); |
| | | if(CollectionUtils.isNotEmpty(refundRecordsList)){ |
| | | ShopRefundRecord shopRecord = refundRecordsList.get(0); |
| | | Integer orderId = shopRecord.getOrderId(); |
| | | ShopOrder order = shopOrderDao.selectById(orderId); |
| | | |
| | | if (order == null) { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "未发货直接退款未找到订单信息"); |
| | | } |
| | |
| | | if(flag){ |
| | | ShopRefundRecord fundRecord = refundRecordDao.selectById(shopRecord.getId()); |
| | | refundRecordService.updateGroupBuyStatus(orderId.longValue()); |
| | | |
| | | |
| | | |
| | | |
| | | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "退款成功"); |
| | | } |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "退款失败"); |
| | |
| | | modifyMap.put("id", orderId); |
| | | modifyMap.put("orderStatus", ShopOrder.ORDER_STATUS_APPLY_MONEYBACK); |
| | | shopOrderDao.updateByMap(modifyMap); |
| | | |
| | | |
| | | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "保存成功"); |
| | | } |
| | | |
| | |
| | | package com.matrix.system.shopXcx.api.action; |
| | | |
| | | import com.matrix.component.redis.RedisUserLoginUtils; |
| | | import com.matrix.core.pojo.AjaxResult; |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | import com.matrix.system.common.interceptor.HostInterceptor; |
| | | import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao; |
| | | import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.shopXcx.api.dto.SaleProductDto; |
| | | import com.matrix.system.shopXcx.bean.ShopProduct; |
| | | import com.matrix.system.shopXcx.bean.ShopSku; |
| | | import com.matrix.system.shopXcx.dao.ShopProductAttributeDao; |
| | | import com.matrix.system.shopXcx.dao.ShopProductDao; |
| | | import com.matrix.system.shopXcx.dao.ShopSkuDao; |
| | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * @author jyy |
| | |
| | | |
| | | @Autowired |
| | | private ShopProductAttributeDao shopProductAttributeDao; |
| | | |
| | | @Autowired |
| | | private ShopSalesmanGradeDao shopSalesmanGradeDao; |
| | | @Autowired |
| | | private ShopSkuDao shopSkuDao; |
| | | @Autowired |
| | | private RedisUserLoginUtils redisUserLoginUtils; |
| | | |
| | | @ApiOperation(value = "查询推广商品", notes = "") |
| | | @PostMapping(value = "/getSalesProductList") |
| | |
| | | shopProduct.setAbleSales(ShopProduct.ABLE_SALES); |
| | | shopProduct.setCompanyId(HostInterceptor.getCompanyId()); |
| | | List<ShopProduct> shopProducts = shopProductDao.selectByModelWx(shopProduct); |
| | | shopProducts.forEach(item->item.setSkus(shopSkuDao.selectByPid(item.getId()))); |
| | | SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class); |
| | | ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade()); |
| | | shopProducts.forEach(item->{ |
| | | List<ShopSku> shopSkus = shopSkuDao.selectByPid(item.getId()); |
| | | //计算产品佣金 |
| | | shopSkus.forEach(shopSku -> { |
| | | if(Objects.isNull(shopSku.getInvitationPrice())){ |
| | | shopSku.setInvitationPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getInvitationCommission())).divide(BigDecimal.valueOf(100))); |
| | | } |
| | | if(Objects.isNull(shopSku.getSealesPrice())){ |
| | | shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSealesCommission())).divide(BigDecimal.valueOf(100))); |
| | | } |
| | | if(Objects.isNull(shopSku.getSelfPrice())){ |
| | | shopSku.setSelfPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSelfCommission())).divide(BigDecimal.valueOf(100))); |
| | | } |
| | | }); |
| | | item.setSkus(shopSkus); |
| | | |
| | | }); |
| | | AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, shopProducts); |
| | | return result; |
| | | } |
| | |
| | | return AjaxResult.buildSuccessInstance("已经被绑定"); |
| | | } else { |
| | | if (loginUser.getRecommendId()==null) { |
| | | Map<String, Object> updateParam = new HashMap<>(); |
| | | updateParam.put("id", loginUser.getId()); |
| | | loginUser.setRecommendId(invitationUser.getId()); |
| | | loginUser.setBindingParentTime(new Date()); |
| | | sysVipInfoDao.update(loginUser); |
| | | sysVipInfoDao.bindingRecommend(invitationUser.getId(),loginUser.getId()); |
| | | return AjaxResult.buildSuccessInstance("绑定成功"); |
| | | } else { |
| | | return AjaxResult.buildSuccessInstance("已经存在上级"); |
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, "兑换成功!"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSealesCommission())).divide(BigDecimal.valueOf(100))); |
| | | } |
| | | if(Objects.isNull(shopSku.getSelfPrice())){ |
| | | shopSku.setSealesPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSelfCommission())).divide(BigDecimal.valueOf(100))); |
| | | shopSku.setSelfPrice(shopSku.getPrice().multiply(BigDecimal.valueOf(shopSalesmanGrade.getSelfCommission())).divide(BigDecimal.valueOf(100))); |
| | | } |
| | | }); |
| | | } |
| | |
| | | import com.matrix.system.constance.Dictionary; |
| | | import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant; |
| | | import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao; |
| | | import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao; |
| | | import com.matrix.system.fenxiao.entity.ShopSalesmanApply; |
| | | import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; |
| | | import com.matrix.system.fenxiao.service.ShopSalesmanApplyService; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.hive.dao.MoneyCardUseDao; |
| | |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | ShopSalesmanGradeDao shopSalesmanGradeDao; |
| | | |
| | | /** |
| | | * 查询用户信息 |
| | |
| | | res.putInMap("couponCount", shopCouponRecordDao.countUnuseCouponRecord(loginUser.getId())); |
| | | res.putInMap("prizeCount",activitySignReceiveRecordDao.getSignAwardReceiveCount(loginUser.getId(),loginUser.getCompanyId())); |
| | | res.putInMap("userInfo", sysVipInfo); |
| | | //查询会员等级 |
| | | if(sysVipInfo.getSalesmanGrade()!=null){ |
| | | ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade()); |
| | | res.putInMap("vipLevel", shopSalesmanGrade.getName()); |
| | | }else if(sysVipInfo.getVipLevel()!=null){ |
| | | res.putInMap("vipLevel", sysVipInfo.getVipLevel().getLevelName()); |
| | | }else{ |
| | | res.putInMap("vipLevel", "初级会员"); |
| | | } |
| | | res.setStatus(AjaxResult.STATUS_SUCCESS); |
| | | return res; |
| | | } |
| | |
| | | import com.matrix.system.common.dao.BusParameterSettingsDao; |
| | | import com.matrix.system.common.dao.CustomerDataDictionaryDao; |
| | | import com.matrix.system.common.interceptor.HostInterceptor; |
| | | import com.matrix.system.constance.Dictionary; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.hive.dao.ShoppingGoodsDao; |
| | | import com.matrix.system.hive.dao.SysVipInfoDao; |
| | |
| | | |
| | | |
| | | //计算运费 |
| | | discountExplain.setPostage(calculationPostage(discountExplain.getPayPrice(), HostInterceptor.getCompanyId())); |
| | | |
| | | |
| | | if(ShopOrder.SHIPPING_METHOD_WL==shopOrderDto.getDeliverySelect()){ |
| | | discountExplain.setPostage(calculationPostage(billPrice, HostInterceptor.getCompanyId())); |
| | | }else{ |
| | | discountExplain.setPostage(BigDecimal.ZERO); |
| | | } |
| | | |
| | | //账单总金额 |
| | | discountExplain.setBillPrice(billPrice.add(discountExplain.getPostage())); |
| | |
| | | package com.matrix.system.shopXcx.api.service.impl; |
| | | |
| | | import com.matrix.component.rabbitmq.RabiitMqTemplate; |
| | | import com.matrix.component.tools.WxTempLateMsgUtil; |
| | | import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil; |
| | | import com.matrix.core.exception.GlobleException; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import com.matrix.core.tools.DingDingRobotUtil; |
| | | import com.matrix.core.tools.LogUtil; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.system.common.bean.BusParameterSettings; |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | import com.matrix.system.common.dao.BusParameterSettingsDao; |
| | | import com.matrix.system.shopXcx.api.service.WXShopOrderService; |
| | | import com.matrix.system.shopXcx.api.service.WxShopRefundRecordService; |
| | | import com.matrix.system.shopXcx.bean.*; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | |
| | | @Autowired |
| | | private ShopActivitiesGroupJoinDao shopActivitiesGroupJoinDao; |
| | | |
| | | @Autowired |
| | | private BusParameterSettingsDao busParameterSettingsDao; |
| | | |
| | | |
| | | @Value("${wx_pay_debug_onoff}") |
| | | private boolean isDebug; |
| | |
| | | |
| | | rabiitMqTemplate.sendMsg(MQTaskRouting.SHOP_ORDER_REFUND+evn,shopRefundRecord.getOrderId()+""); |
| | | |
| | | //发送退款通知 |
| | | BusParameterSettings wxOrderNoticeDingdingToken = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WX_ORDER_NOTICE_DINGDING_TOKEN, shopOrder.getCompanyId()); |
| | | if (wxOrderNoticeDingdingToken != null && StringUtils.isNotBlank(wxOrderNoticeDingdingToken.getParamValue())) { |
| | | DingDingRobotUtil.sendText(wxOrderNoticeDingdingToken.getParamValue(), |
| | | "订单退款,微商城订单编号 "+shopOrder.getOrderNo() |
| | | +"; 订单金额:¥"+shopOrder.getOrderMoney() |
| | | +";收货电话:"+ shopOrder.getUserTel()+",收货人:"+ shopOrder.getUserName() |
| | | ,""); |
| | | } |
| | | |
| | | |
| | | }catch (Exception e){ |
| | | LogUtil.debug("退款成功,修改退款表和订单表状态出错。。。", id); |
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; |
| | | //进行中 |
| | |
| | | import com.matrix.system.common.bean.BusParameterSettings; |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | import com.matrix.system.common.dao.BusParameterSettingsDao; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.hive.dao.SysVipInfoDao; |
| | | import com.matrix.system.shopXcx.bean.ShopDeliveryInfo; |
| | | import com.matrix.system.shopXcx.bean.ShopOrder; |
| | | import com.matrix.system.shopXcx.bean.ShopOrderDetails; |
| | | import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao; |
| | | import com.matrix.system.shopXcx.dao.ShopOrderDao; |
| | | import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao; |
| | | import com.rabbitmq.client.DeliverCallback; |
| | |
| | | @Autowired |
| | | SysVipInfoDao sysVipInfoDao; |
| | | |
| | | @Autowired |
| | | ShopDeliveryInfoDao shopDeliveryInfoDao; |
| | | |
| | | @Override |
| | | public void handle(String consumerTag, Delivery message) throws IOException { |
| | | String orderId = new String(message.getBody(), "UTF-8"); |
| | | String orderIdStr = new String(message.getBody(), "UTF-8"); |
| | | Integer orderId=Integer.valueOf(orderIdStr); |
| | | //获取订单信息 |
| | | ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); |
| | | ShopOrder order = shopOrderDao.selectById(orderId); |
| | | LogUtil.debug("收到创建订单通知任务orderId={}", orderId); |
| | | BusParameterSettings wxOrderNoticeDingdingToken = parameterSettingsDao.selectCompanyParamByCode(AppConstance.WX_ORDER_NOTICE_DINGDING_TOKEN, order.getCompanyId()); |
| | | if (wxOrderNoticeDingdingToken != null && StringUtils.isNotBlank(wxOrderNoticeDingdingToken.getParamValue())) { |
| | |
| | | StringBuilder content = new StringBuilder(); |
| | | orderDetails.stream().forEach(i -> content.append(i.getsTitle()).append("*").append( |
| | | i.getCount()).append(";")); |
| | | ShopDeliveryInfo addInfo = shopDeliveryInfoDao.selectByOrderId(orderId); |
| | | |
| | | DingDingRobotUtil.sendText(wxOrderNoticeDingdingToken.getParamValue(),"微商城订单 ("+order.getUserName()+") | 订单金额:¥"+order.getOrderMoney()+",订单内容:"+ content.toString(),""); |
| | | String shippingMethod="物流配送"; |
| | | if(AppConstance.SHIPPING_METHOD_SELF .equals(order.getShippingMethod())){ |
| | | shippingMethod="门店自提"; |
| | | } |
| | | DingDingRobotUtil.sendText(wxOrderNoticeDingdingToken.getParamValue(), |
| | | "新订单,微商城订单编号 "+order.getOrderNo() |
| | | +"; 订单金额:¥"+order.getOrderMoney() |
| | | +";订单内容:"+ content.toString() |
| | | +";收货电话:"+ order.getUserTel()+",收货人:"+ order.getUserName()+",收货地址:"+ addInfo.getReceiveAddress() |
| | | +"配送方式:"+shippingMethod |
| | | ,""); |
| | | }else{ |
| | | LogUtil.debug("未配置订单钉钉提醒"); |
| | | } |
| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 分销订单退款 |
| | |
| | | LogUtil.debug("收到分销订单退款任务orderId={}", orderId); |
| | | QueryWrapper queryWrapper=new QueryWrapper(); |
| | | queryWrapper.eq("order_id",orderId); |
| | | ShopSalesmanOrder shopSalesmanOrder = shopSalesmanOrderDao.selectOne(queryWrapper); |
| | | List<ShopSalesmanOrder> list = shopSalesmanOrderDao.selectList(queryWrapper); |
| | | |
| | | list.forEach(shopSalesmanOrder->{ |
| | | |
| | | if(shopSalesmanOrder!=null){ |
| | | shopSalesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_YTK); |
| | | shopSalesmanOrderDao.updateById(shopSalesmanOrder); |
| | | }else{ |
| | | LogUtil.debug("改订单为生成分销订单={}", orderId); |
| | | } |
| | | |
| | | |
| | | }); |
| | | ShopOrder order=shopOrderDao.selectById(Integer.parseInt(orderId)); |
| | | |
| | | //如果是积分支付则需要返还积分 |
New file |
| | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileOutputStream; |
| | | import java.io.IOException; |
| | | |
| | | /** |
| | | * 文件对比复制 |
| | | * @author JIANGYOUYAO |
| | | * @date 2021/6/7 0007 |
| | | */ |
| | | public class filecopy { |
| | | |
| | | |
| | | static String targetFilePath="/mnt/sdc/webresource"; |
| | | |
| | | static String sourceFilePaht="/mnt/sdc/webresourceback"; |
| | | |
| | | public static void main(String[] args) throws IOException { |
| | | |
| | | |
| | | File sourceFile=new File(sourceFilePaht); |
| | | traverseFolder(sourceFile); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | public static void traverseFolder(File file) throws IOException { |
| | | |
| | | if (file.exists()) { |
| | | File[] files = file.listFiles(); |
| | | if (null == files || files.length == 0) { |
| | | System.out.println("文件夹是空的!"); |
| | | return; |
| | | } else { |
| | | for (File file2 : files) { |
| | | if (file2.isDirectory()) { |
| | | //对比target是否存在 |
| | | final String s = file2.getCanonicalPath().replaceAll("webresourceback", "webresource"); |
| | | File f=new File(s); |
| | | if(!f.exists()){ |
| | | System.out.println("复制文件:" + file2.getAbsolutePath()); |
| | | f.mkdir(); |
| | | }else{ |
| | | System.out.println("文件:" + file2.getAbsolutePath()+"存在"); |
| | | } |
| | | traverseFolder(file2); |
| | | } else { |
| | | |
| | | //对比target是否存在,不存在则copy |
| | | final String s = file2.getCanonicalPath().replaceAll("webresourceback", "webresource"); |
| | | File f=new File(s); |
| | | if(!f.exists()){ |
| | | System.out.println("复制文件:" + file2.getAbsolutePath()); |
| | | FileInputStream in=new FileInputStream(file2); |
| | | FileOutputStream out=new FileOutputStream(f); |
| | | byte[] buff=new byte[1024]; |
| | | int length=in.read(buff); |
| | | while (length>0){ |
| | | out.write(buff,0,length); |
| | | length=in.read(buff); |
| | | } |
| | | out.close(); |
| | | in.close(); |
| | | |
| | | }else{ |
| | | System.out.println("文件:" + file2.getAbsolutePath()+"存在"); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | System.out.println("文件不存在!"); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | default.vip.photo.woman=https://filehive2.jyymatrix.cc/uploadeFile/20210125/db53552e688040afb286686f081e1e68f3fe946f75624598828f01898635152e.png |
| | | default.vip.photo.man=https://filehive2.jyymatrix.cc/uploadeFile/20210125/3642f1d827c44c76832fea106c85e0f89e089c16cbcc4dd0a82bb52b9ac700f4.png |
| | | |
| | | mybatis-plus.global-config.db-config.id-type=auto |
| | | mybatis-plus.config-location=classpath:mybatis/mybatis-config.xml |
| | | mybatis-plus.mapper-locations=classpath*:mybatis/mapper/**/*.xml |
| | |
| | | |
| | | spring.datasource.username=ct_test |
| | | spring.datasource.password=123456 |
| | | spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 |
| | | spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test_meidu?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 |
| | | |
| | | #spring.datasource.username=chuhuan |
| | | #spring.datasource.password=chuhuan |
| | |
| | | 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> |
| | |
| | | c.award_name awardName, |
| | | c.coupon_name couponName, |
| | | c.score_cnt scoreCnt, |
| | | d.act_type actType, |
| | | c.award_rule awardRule |
| | | FROM |
| | | activity_sign_receive_record a |
| | | LEFT JOIN sys_vip_info b ON a.user_id = b.id |
| | | LEFT JOIN activity_sign_award_set c ON a.award_id = c.id |
| | | LEFT JOIN shop_activities d ON a.award_id = d.id |
| | | <where> |
| | | a.company_id = #{record.companyId} |
| | | and a.activity_id = #{record.actId} |
| | |
| | | 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> |
| | |
| | | <set> |
| | | update_time=now(), |
| | | <if test="updateBy!=null"> |
| | | update_by = #{btnKey}, |
| | | update_by = #{updateBy}, |
| | | </if> |
| | | <if |
| | | test="(suName!=null and suName!='') or (suName!='' and suName==0)"> |
| | |
| | | left join sys_proj_services l on a.service_order_id=l.id |
| | | left join sys_order_item j on a.order_item_id=j.ID |
| | | <where> |
| | | and a.company_id = #{record.companyId} |
| | | <if test="record!=null"> |
| | | <if |
| | | test="(record.shopId!=null and record.shopId!='') or (record.shopId!='' and record.shopId==0) "> |
| | |
| | | <if test="record.beaultId != null and record.beaultId !='' "> |
| | | and a.beault_id = #{record.beaultId} |
| | | </if> |
| | | <if test="record.companyId != null and record.companyId !='' "> |
| | | and a.company_id = #{record.companyId} |
| | | </if> |
| | | |
| | | <if test="record.beaultId != null and record.beaultId !='' "> |
| | | and a.beault_id = #{record.beaultId} |
| | | </if> |
| | |
| | | </where> |
| | | </select> |
| | | |
| | | <!-- |
| | | |
| | | 统计员工业绩 |
| | | |
| | | select |
| | | u.name, |
| | | g.su_name guwen, |
| | | cast(SUM(b.ZK_TOTAL) AS decimal(15,2)) as zk_total, |
| | | cast(SUM(a.his_consume) AS decimal(15,2)), |
| | | cast(SUM(a.free_consume) AS decimal(15,2)), |
| | | cast(SUM(a.proj_percentage) AS decimal(15,2)), |
| | | cast(SUM(a.number_of_people) AS decimal(15,2)), |
| | | cast(SUM(a.proj_num) AS decimal(15,2)), |
| | | cast(SUM(a.proj_time) AS decimal(15,2)), |
| | | h.shop_short_name shop_name, |
| | | a.order_type, |
| | | a.achieveType |
| | | from |
| | | achieve_new a |
| | | left join sys_order b on a.order_id=b.id |
| | | left join sys_vip_info c on a.vip_id=c.id |
| | | left join sys_vip_level d on c.LEVEL_ID=d.id |
| | | left join shopping_goods e on a.shopping_goods_id=e.id |
| | | LEFT JOIN sys_users f on a.beault_id=f.su_id |
| | | LEFT JOIN sys_users g on a.sale_id = g.su_id |
| | | LEFT JOIN sys_shop_info h ON a.SHOP_ID = h.ID |
| | | LEFT JOIN shopping_goods_category i ON e.cate_id = i.id |
| | | left join sys_proj_services l on a.service_order_id=l.id |
| | | left join sys_order_item j on a.order_item_id=j.ID |
| | | left join achieve_rule u on u.id=e.achieve_rule_id |
| | | where h.shop_short_name='龙华店' |
| | | GROUP BY g.su_name , a.order_type, h.id,a.achieveType |
| | | ORDER BY g.su_name |
| | | |
| | | --> |
| | | |
| | | |
| | | <select id="findSumDailyInfoNew" resultMap="AchieveNewMap"> |
| | |
| | | and date_format(datatime, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') |
| | | </select> |
| | | |
| | | <select id="achieveNewStatistics" resultType="com.matrix.system.hive.vo.AchieveNewStatisticsVo"> |
| | | |
| | | select |
| | | u.name ruleName, |
| | | f.su_name guwen, |
| | | f.su_id gwid, |
| | | g.su_name createBy, |
| | | g.su_id createId, |
| | | cast(SUM(b.ZK_TOTAL) AS decimal(15,2)) as zk_total, |
| | | cast(SUM(a.his_consume) AS decimal(15,2)) his_consume, |
| | | cast(SUM(a.free_consume) AS decimal(15,2)) free_consume, |
| | | cast(SUM(a.proj_percentage) AS decimal(15,2)) proj_percentage, |
| | | cast(SUM(a.number_of_people) AS decimal(15,2)) number_of_people, |
| | | cast(SUM(a.proj_num) AS decimal(15,2)) proj_num, |
| | | cast(SUM(case when a.pay_method = '划扣' then goods_cash end )AS decimal(15,2)) card_cash, |
| | | cast(SUM(a.proj_time) AS decimal(15,2)) proj_time, |
| | | cast(SUM(case when a.pay_method = '现金' then goods_cash end )AS decimal(15,2)) goods_cash, |
| | | h.shop_short_name shop_name, |
| | | a.order_type |
| | | from |
| | | achieve_new a |
| | | left join sys_order b on a.order_id=b.id |
| | | left join sys_vip_info c on a.vip_id=c.id |
| | | left join sys_vip_level d on c.LEVEL_ID=d.id |
| | | left join shopping_goods e on a.shopping_goods_id=e.id |
| | | LEFT JOIN sys_users f on a.beault_id=f.su_id |
| | | LEFT JOIN sys_users g on a.sale_id = g.su_id |
| | | LEFT JOIN sys_shop_info h ON a.SHOP_ID = h.ID |
| | | LEFT JOIN shopping_goods_category i ON e.cate_id = i.id |
| | | left join sys_proj_services l on a.service_order_id=l.id |
| | | left join sys_order_item j on a.order_item_id=j.ID |
| | | left join achieve_rule u on u.id=e.achieve_rule_id |
| | | <where> |
| | | and a.company_id = #{record.companyId} |
| | | <if test="record.shopId != null"> |
| | | and a.shop_id = #{record.shopId} |
| | | </if> |
| | | <if test="record.achieveRuleId != null"> |
| | | and u.id = #{record.achieveRuleId} |
| | | </if> |
| | | |
| | | <if test="record.staffName != null and record.staffName!=''"> |
| | | <!-- 创建人和归属人都有业绩 --> |
| | | and (f.su_name like concat('%',#{record.staffName},'%') or g.su_name like concat('%',#{record.staffName},'%') ) |
| | | </if> |
| | | |
| | | <if test="record.orderType != null and record.orderType != '' "> |
| | | and a.order_type= #{record.orderType} |
| | | </if> |
| | | <if test="record.beginTime != null "> |
| | | and a.datatime >= #{record.beginTime} |
| | | </if> |
| | | <if test="record.endTime != null "> |
| | | <![CDATA[and a.datatime <= #{record.endTime}]]> |
| | | </if> |
| | | |
| | | </where> |
| | | GROUP BY g.su_id , f.su_id, a.order_type, h.id,a.achieveType,u.name |
| | | <if test="record.sort !=null and record.sort!=''"> order by ${record.sort} ${record.order}</if> |
| | | |
| | | </select> |
| | | |
| | | |
| | | <update id="updateAchieveNumOfPeople"> |
| | | <foreach collection="list" item="item" index="index" |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | |
| | | <mapper namespace="com.matrix.system.hive.dao.AchieveRuleDao"> |
| | | |
| | | </mapper> |
| | |
| | | <result property="staffId" column="staff_id" /> |
| | | <result property="vipName" column="vip_name" /> |
| | | <result property="tel" column="tel" /> |
| | | <result property="bizUserId" column="sys_vip_info_id" /> |
| | | <result property="bizUserId" column="biz_user_id" /> |
| | | <result property="formId" column="form_id" /> |
| | | |
| | | <result property="productId" column="product_id" /> |
| | |
| | | <result property="staffId" column="staff_id" /> |
| | | <result property="vipName" column="vip_name" /> |
| | | <result property="tel" column="tel" /> |
| | | <result property="bizUserId" column="sys_vip_info_id" /> |
| | | <result property="bizUserId" column="biz_user_id" /> |
| | | <result property="productId" column="product_id" /> |
| | | <result property="orderNo" column="order_no" /> |
| | | <result property="formId" column="form_id" /> |
| | |
| | | staff_id, |
| | | vip_name, |
| | | tel, |
| | | sys_vip_info_id, |
| | | biz_user_id, |
| | | product_id, |
| | | order_no, |
| | | form_id |
| | |
| | | tel = #{tel}, |
| | | </if> |
| | | <if test="(bizUserId!=null and bizUserId!='') or (bizUserId!='' and bizUserId==0)"> |
| | | sys_vip_info_id = #{bizUserId}, |
| | | biz_user_id = #{bizUserId}, |
| | | </if> |
| | | <if test="(productId!=null and productId!='') or (productId!='' and productId==0)"> |
| | | product_id = #{productId}, |
| | |
| | | staff_id, |
| | | vip_name, |
| | | tel, |
| | | sys_vip_info_id, |
| | | biz_user_id, |
| | | product_id, |
| | | order_no, |
| | | form_id, |
| | |
| | | staff_id, |
| | | vip_name, |
| | | tel, |
| | | sys_vip_info_id, |
| | | biz_user_id, |
| | | product_id |
| | | from onlinebooking |
| | | where 1=1 |
| | |
| | | staff_id, |
| | | vip_name, |
| | | tel, |
| | | sys_vip_info_id, |
| | | biz_user_id, |
| | | product_id, |
| | | order_no |
| | | from onlinebooking |
| | |
| | | staff_id, |
| | | vip_name, |
| | | tel, |
| | | sys_vip_info_id, |
| | | biz_user_id, |
| | | product_id |
| | | from onlinebooking |
| | | where 1=1 |
| | |
| | | staff_id, |
| | | vip_name, |
| | | tel, |
| | | sys_vip_info_id, |
| | | biz_user_id, |
| | | product_id, |
| | | order_no |
| | | from onlinebooking |
| | |
| | | staff_id, |
| | | vip_name, |
| | | tel, |
| | | sys_vip_info_id, |
| | | biz_user_id, |
| | | product_id, |
| | | order_no, |
| | | form_id, |
| | |
| | | and vip_Id = #{record.vipId} |
| | | </if> |
| | | <if test="(record.bizUserId!=null and record.bizUserId!='') or (record.bizUserId!='' and record.bizUserId==0)"> |
| | | and sys_vip_info_id = #{record.bizUserId} |
| | | and biz_user_id = #{record.bizUserId} |
| | | </if> |
| | | <if test="(record.time!=null and record.time!='') or (record.time!='' and record.time==0)"> |
| | | and time = #{record.time} |
| | |
| | | and vip_Id = #{record.vipId} |
| | | </if> |
| | | <if test="(record.bizUserId!=null and record.bizUserId!='') or (record.bizUserId!='' and record.bizUserId==0)"> |
| | | and sys_vip_info_id = #{record.bizUserId} |
| | | and biz_user_id = #{record.bizUserId} |
| | | </if> |
| | | <if test="(record.time!=null and record.time!='') or (record.time!='' and record.time==0)"> |
| | | and time = #{record.time} |
| | |
| | | |
| | | <result property="goodsSortName" column="goodsSortName" /> |
| | | |
| | | <result property="achieveRuleName" column="achieveRuleName" /> |
| | | |
| | | |
| | | <result property="payMethods" column="pay_methods" /> |
| | | <result property="invalidTime" column="invalid_time" /> |
| | | <result property="useValid" column="use_valid" /> |
| | | <result property="buyValid" column="buy_valid" /> |
| | | <result property="isInfinite" column="is_infinite" /> |
| | | <result property="achieveRuleId" column="achieve_rule_id" /> |
| | | |
| | | |
| | | |
| | |
| | | <!-- 服务项目信息 --> |
| | | <result property="proReward" column="proReward" /> |
| | | <result property="timeLength" column="TIME_LENGTH" /> |
| | | <result property="achieveRuleId" column="achieve_rule_id" /> |
| | | |
| | | |
| | | <!-- 扩展属性 --> |
| | | <result property="cateName" column="cate_name" /> |
| | | <result property="goodsSortName" column="goodsSortName" /> |
| | | <result property="achieveRuleName" column="achieveRuleName" /> |
| | | |
| | | |
| | | </resultMap> |
| | | |
| | |
| | | use_valid, |
| | | invalid_time, |
| | | pay_methods, |
| | | is_infinite |
| | | is_infinite, |
| | | achieve_rule_id |
| | | |
| | | ) |
| | | VALUES ( |
| | | #{id}, |
| | |
| | | #{useValid}, |
| | | #{invalidTime}, |
| | | #{payMethods}, |
| | | #{isInfinite} |
| | | #{isInfinite}, |
| | | #{achieveRuleId} |
| | | |
| | | ) |
| | | </insert> |
| | | |
| | |
| | | <if test="isInfinite != null and isInfinite !='' "> |
| | | is_infinite = #{isInfinite}, |
| | | </if> |
| | | |
| | | <if test="achieveRuleId != null and achieveRuleId !='' "> |
| | | achieve_rule_id = #{achieveRuleId}, |
| | | </if> |
| | | invalid_time = #{invalidTime}, |
| | | buy_valid = #{buyValid}, |
| | | use_valid = #{useValid}, |
| | |
| | | <select id="selectInPage" resultMap="ShoppingGoodsMap"> |
| | | select |
| | | a.*, |
| | | (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName, |
| | | (select NAME from shopping_goods_category t where t.id=a.cate_id) cate_name, |
| | | (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName, |
| | | (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) as goodsSortName, |
| | | (select NAME from shopping_goods_category t where t.id=a.cate_id) as cate_name, |
| | | (select shop_name from sys_shop_info h where a.SHOP_ID=h.ID ) as shop_name |
| | | from shopping_goods a |
| | | where 1=1 |
| | |
| | | </if> |
| | | |
| | | |
| | | <if test="record.achieveRuleId != null and record.achieveRuleId !='' "> |
| | | and achieve_rule_id = #{record.achieveRuleId} |
| | | </if> |
| | | |
| | | |
| | | |
| | | <if test="record.headquarters != null and record.headquarters !='' "> |
| | | and headquarters = #{record.headquarters} |
| | |
| | | <if test="record.isVipCar != null and record.isVipCar !='' "> |
| | | and is_vip_car = #{record.isVipCar} |
| | | </if> |
| | | |
| | | <if test="record.achieveRuleId != null and record.achieveRuleId !='' "> |
| | | and achieve_rule_id = #{record.achieveRuleId} |
| | | </if> |
| | | |
| | | <if test="record.isCourse != null and record.isCourse !=''"> |
| | | and is_course = #{record.isCourse} |
| | |
| | | <select id="selectAll" resultMap="ShoppingGoodsSimpleMap"> |
| | | select |
| | | *, |
| | | (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName, |
| | | (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName, |
| | | (select NAME from |
| | | shopping_goods_category t where t.id=cate_id) |
| | |
| | | <select id="findByCode" resultMap="ShoppingGoodsMap"> |
| | | select |
| | | *, |
| | | (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName, |
| | | (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName, |
| | | (select NAME from shopping_goods_category t where |
| | | t.id=cate_id) |
| | |
| | | <select id="selectSimpleMapById" resultMap="ShoppingGoodsSimpleMap"> |
| | | select |
| | | *, |
| | | (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName, |
| | | (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName, |
| | | (select NAME from |
| | | shopping_goods_category t where t.id=cate_id) |
| | |
| | | <select id="selectByModel" resultMap="ShoppingGoodsMap"> |
| | | select |
| | | *, |
| | | (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName, |
| | | (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName, |
| | | (select NAME from |
| | | shopping_goods_category t where t.id=cate_id) |
| | |
| | | <select id="selectByModel1" resultMap="ShoppingGoodsMap"> |
| | | select |
| | | *, |
| | | (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName, |
| | | (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName, |
| | | (select NAME from |
| | | shopping_goods_category t where t.id=cate_id) |
| | |
| | | <select id="selectInPageNoTaocan" resultMap="ShoppingGoodsMap"> |
| | | select |
| | | *, |
| | | (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName, |
| | | (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName, |
| | | (select NAME from |
| | | shopping_goods_category t where t.id=cate_id) |
| | |
| | | where a.ORDER_ID=#{orderId} |
| | | </select> |
| | | |
| | | <!-- 临时数据处理sql --> |
| | | <select id="selectDgd" resultMap="SysOrderItemMap"> |
| | | SELECT a.* from sys_order_item a |
| | | left join sys_order b on a.ORDER_ID=b.id |
| | | where a.type='家居产品' and DATE_FORMAT(a.create_time,'%Y-%m')='2021-04' and b.company_id=17 and b.STATU='已付款'; |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | <if test="isDeal != null "> |
| | | is_deal = #{isDeal}, |
| | | </if> |
| | | <if test="recommendId != null "> |
| | | recommend_id = #{recommendId}, |
| | | </if> |
| | | |
| | | <if test="province != null and province !='' "> |
| | | province = #{province}, |
| | | </if> |
| | |
| | | <update id="unbundlingSaleMan"> |
| | | UPDATE sys_vip_info set recommend_id = NULL where id=#{userId}; |
| | | </update> |
| | | <update id="bindingRecommend"> |
| | | UPDATE sys_vip_info set recommend_id = #{recommendId} where id=#{userId}; |
| | | </update> |
| | | |
| | | <!-- 批量删除 --> |
| | | <delete id="deleteByIds" parameterType="java.util.List"> |
| | |
| | | select |
| | | #{item.beginTime} time, |
| | | (select ifnull(sum(ifnull(card_cash,0) + ifnull(consume,0)),0) from achieve_new a where a.beault_id=#{userId} and <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]>) orderAmount, |
| | | (select ifnull(sum(case b.pay_method when '现金' then goods_cash else 0 end),0) |
| | | (select ifnull(sum(case a.pay_method when '现金' then goods_cash else 0 end),0) |
| | | from achieve_new a |
| | | inner join sys_order_item b on a.order_item_id=b.ID |
| | | where a.beault_id=#{userId} and <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]>) cashAmount, |
| | | (select ifnull(sum(case b.pay_method when '划扣' then goods_cash else 0 end),0) |
| | | (select ifnull(sum(case a.pay_method when '划扣' then goods_cash else 0 end),0) |
| | | from achieve_new a |
| | | inner join sys_order_item b on a.order_item_id=b.ID |
| | | where a.beault_id=#{userId} and <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]>) cardAmount, |
| | | (select ifnull(sum(case b.pay_method when '划扣' then goods_cash else 0 end),0) |
| | | (select ifnull(sum(case a.pay_method when '划扣' then goods_cash else 0 end),0) |
| | | from achieve_new a |
| | | inner join sys_order_item b on a.order_item_id=b.ID |
| | | where a.beault_id=#{userId} and <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]>) cardUseAmount, |
| | |
| | | <select id="selectStaffCashAchieve" resultType="java.util.TreeMap"> |
| | | select |
| | | <foreach collection="list" index="index" item="item" separator="," > |
| | | (select ifnull(sum(case b.pay_method when '现金' then goods_cash else 0 end),0) |
| | | (select ifnull(sum(case a.pay_method when '现金' then goods_cash else 0 end),0) |
| | | from achieve_new a |
| | | inner join sys_order_item b on a.order_item_id=b.ID |
| | | where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]> |
| | |
| | | <select id="selectStaffCardAchieve" resultType="java.util.TreeMap"> |
| | | select |
| | | <foreach collection="list" index="index" item="item" separator="," > |
| | | (select ifnull(sum(case b.pay_method when '划扣' then goods_cash else 0 end),0) |
| | | (select ifnull(sum(case a.pay_method when '划扣' then goods_cash else 0 end),0) |
| | | from achieve_new a |
| | | inner join sys_order_item b on a.order_item_id=b.ID |
| | | where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]> |
| | |
| | | <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="openLuckdrawReceive(scope.row)" size="mini">活动统计</el-button> |
| | | <el-button type="primary" v-if="scope.row.actStatus == 3" @click="beClose(scope.row)" size="mini">关闭</el-button> |
| | | <el-button type="danger" v-if="scope.row.actStatus != 5" size="mini" @click="delRow(scope.row)">删除</el-button> |
| | | </el-row> |
| | | <el-row style="display:flex;" v-if="[1,2,3].includes(scope.row.actType)"> |
| | | <el-button type="primary" @click="openEdit(scope.row)" size="mini">编辑</el-button> |
| | | <el-button type="primary" @click="activityStatistics(scope.row)" size="mini">活动统计</el-button> |
| | | <el-button type="primary" @click="closeAct(scope.row)" size="mini">关闭</el-button> |
| | |
| | | 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({ |
| | |
| | | content : [ basePath + '/admin/redirect/activity/activity-sign-receive?actId=' + row.id] |
| | | })); |
| | | }, |
| | | //活动统计 |
| | | openLuckdrawReceive(row){ |
| | | layer.full(layer.open({ |
| | | type: 2, |
| | | title: "活动统计", |
| | | maxmin: true, |
| | | area: [MUI.SIZE_L, '500px'], |
| | | content : [ basePath + '/admin/redirect/activity/activity-luckdraw-receive?actId=' + row.id] |
| | | })); |
| | | }, |
| | | //发布 |
| | | beReady(row){ |
| | | let _this = this; |
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> |
| | | .panel-body{ |
| | | overflow: hidden; |
| | | } |
| | | .paginationStyle{ |
| | | background: #ffffff; |
| | | padding: 10px 10px; |
| | | margin: 0px 0px 10px 0px; |
| | | text-align: right; |
| | | } |
| | | </style> |
| | | </head> |
| | | |
| | | <body> |
| | | <div class="panel-body" id="app" v-cloak> |
| | | <el-row> |
| | | <el-row justify="space-between" type="flex"> |
| | | <el-col> |
| | | <el-form ref="form" :model="form" inline > |
| | | <el-form-item label="用户名称" prop="yhmc" > |
| | | <el-input v-model="form.yhmc" placeholder="用户名称"></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="qdsj" label="签到时间"> |
| | | <el-date-picker |
| | | v-model="form.qdsj" |
| | | type="datetimerange" |
| | | :picker-options="pickerOptions" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | align="right"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-button type="primary" @click="searchFormSignReceive" >搜索</el-button> |
| | | <el-button @click="resetFormSignReceive('form')">重置</el-button> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row class="table-style" > |
| | | <el-table ref="multipleTable" |
| | | :data="signReceiveList.rows" |
| | | :height="height" |
| | | stripe:true |
| | | @sort-change="sortChange" |
| | | @selection-change="handleSelectionChange"> |
| | | <el-table-column |
| | | type="selection"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="nickName" |
| | | label="用户" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="reciveTime" |
| | | label="抽奖时间" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="状态" |
| | | show-overflow-tooltip> |
| | | <template slot-scope="scope"> |
| | | <span v-if="scope.row.state == 1">待领取</span> |
| | | <span v-if="scope.row.state == 2">已领取</span> |
| | | <span v-if="scope.row.state == 3">待配送</span> |
| | | <span v-if="scope.row.state == 4">待收货</span> |
| | | <span v-if="scope.row.state == 5">已失效</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="奖品类型"> |
| | | <template slot-scope="scope"> |
| | | <span v-if="scope.row.awardType == 1">自定义礼品</span> |
| | | <span v-if="scope.row.awardType == 2">积分</span> |
| | | <span v-if="scope.row.awardType == 3">优惠券</span> |
| | | <span v-if="scope.row.awardType == 4">店铺商品</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="awardName" |
| | | label="获得奖励" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="奖励名称" |
| | | show-overflow-tooltip> |
| | | <template slot-scope="scope"> |
| | | {{scope.row.awardName}} |
| | | <span v-if="scope.row.awardType == 3">({{scope.row.couponName}})</span> |
| | | <span v-if="scope.row.awardType == 2">(*{{scope.row.scoreCnt}})</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row class="paginationStyle" > |
| | | <el-pagination background |
| | | @size-change="changePageSignReceive" |
| | | @current-change="changeCurrentPageSignReceive" |
| | | :current-page="signReceiveList.currentPage" |
| | | :page-sizes="[10, 20, 30, 50]" |
| | | :page-size="signReceiveList.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="signReceiveList.total"> |
| | | </el-pagination> |
| | | </el-row> |
| | | </el-row> |
| | | </div> |
| | | </body> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> |
| | | |
| | | <script> |
| | | //获取传输的活动对象 |
| | | var actId = $.query.get("actId"); |
| | | |
| | | var app = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | height:'calc(100vh - 200px)', |
| | | //--时间选择 |
| | | pickerOptions: { |
| | | shortcuts: [{ |
| | | text: '最近一周', |
| | | onClick(picker) { |
| | | const end = new Date(); |
| | | const start = new Date(); |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); |
| | | picker.$emit('pick', [start, end]); |
| | | } |
| | | }, { |
| | | text: '最近一个月', |
| | | onClick(picker) { |
| | | const end = new Date(); |
| | | const start = new Date(); |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); |
| | | picker.$emit('pick', [start, end]); |
| | | } |
| | | }, { |
| | | text: '最近三个月', |
| | | onClick(picker) { |
| | | const end = new Date(); |
| | | const start = new Date(); |
| | | start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); |
| | | picker.$emit('pick', [start, end]); |
| | | } |
| | | }] |
| | | }, |
| | | // 条件查询 |
| | | form:{ |
| | | yhmc:'', |
| | | qdsj:'', |
| | | order:'', |
| | | sort:'' |
| | | }, |
| | | //活动列表 |
| | | signReceiveList:{ |
| | | rows:[], |
| | | total:0, |
| | | pageSize:10, |
| | | currentPage:1, |
| | | }, |
| | | }, |
| | | created: function () { |
| | | this.loadInfo(); |
| | | }, |
| | | mounted: function () { |
| | | }, |
| | | methods: { |
| | | //加载分类 |
| | | loadInfo() { |
| | | let _this = this; |
| | | _this.loadSignReceiveList(); |
| | | }, |
| | | //--列表 |
| | | loadSignReceiveList() { |
| | | let _this = this; |
| | | let data=_this.getRequestParamSignReceive(); |
| | | data.pageSize=_this.signReceiveList.pageSize; |
| | | data.pageNum=_this.signReceiveList.currentPage; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data:data, |
| | | url: basePath + '/admin/activitySignAwardSet/findSignReceiveList', |
| | | callback: function (data) { |
| | | _this.signReceiveList.rows = data.rows; |
| | | _this.signReceiveList.total = data.total; |
| | | } |
| | | }); |
| | | },//查询参数 |
| | | getRequestParamSignReceive(){ |
| | | let _this = this; |
| | | let startTime = ''; |
| | | let endTime = ''; |
| | | if(_this.form.qdsj.length > 0){ |
| | | startTime = _this.form.qdsj[0]; |
| | | endTime = _this.form.qdsj[1]; |
| | | } |
| | | return { |
| | | yhmc:_this.form.yhmc, |
| | | startTime:startTime, |
| | | endTime:endTime, |
| | | actId:actId, |
| | | order:_this.form.order, |
| | | sort:_this.form.sort, |
| | | } |
| | | }, |
| | | //查询 |
| | | searchFormSignReceive:function(){ |
| | | this.signReceiveList.currentPage=1; |
| | | this.loadSignReceiveList(); |
| | | }, |
| | | //重置 |
| | | resetFormSignReceive(formName) { |
| | | this.$refs[formName].resetFields(); |
| | | }, |
| | | changePageSignReceive(val) { |
| | | this.signReceiveList.pageSize = val; |
| | | this.loadSignReceiveList(); |
| | | }, |
| | | changeCurrentPageSignReceive(val) { |
| | | this.signReceiveList.currentPage = val; |
| | | this.loadSignReceiveList(); |
| | | }, |
| | | //排序 |
| | | sortChange:function (column){ |
| | | if(column.order){ |
| | | if(column.order.indexOf("desc")){ |
| | | this.form.order="desc"; |
| | | }else{ |
| | | this.form.order="asc"; |
| | | } |
| | | this.form.sort=column.prop; |
| | | this.loadInfo(); |
| | | } |
| | | }, |
| | | //选择 |
| | | handleSelectionChange(val) { |
| | | let _this = this; |
| | | _this.multipleSelection = val; |
| | | }, |
| | | } |
| | | }) |
| | | </script> |
| | | |
| | | </body> |
| | | </html> |
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-row> |
| | | |
| | | <el-row> |
| | | <div @click="uploadImg()" class="imageThree" > |
| | | <el-button type="primary" v-show="imageUrlButton == ''" round><span style="font-size: 20px;">签到按钮</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | <img v-if="imageUrlButton" :src="imageUrlButton" style="width: 100%;"> |
| | | </div> |
| | | </el-row> |
| | | |
| | | |
| | | <el-row> |
| | | <div style="text-align: center;padding: 5px;" @click="gzsmSet()"> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 30px;">-- 规则说明--</span> |
| | | </div> |
| | | <div class="el-col-sm-24" style="text-align: center;"> |
| | | <span style="padding:5px;font-size: 15px;color: red;">(点击,编辑规则内容,背景颜色,字体颜色、大小、透明度)</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">1、每天参与签到可获得积分换取抽奖机会</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">2、每天参与签到可获得积分换取抽奖机会</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">3、每天参与签到可获得积分换取抽奖机会</span> |
| | | </div> |
| | | </div> |
| | | </el-row> |
| | | </el-card> |
| | | </el-aside> |
| | | |
| | | <el-main width="70%"> |
| | | <div> |
| | | <el-tabs v-model="activeName" @tab-click="clickSecondTab"> |
| | | <el-tab-pane label="活动设置" name="first"> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="活动名称" prop="actName"> |
| | | <el-input v-model="ruleForm.actName" placeholder="请输入活动名称"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="活动编码" prop="actCode"> |
| | | <el-input v-model.number="ruleForm.actCode" placeholder="请输入最大开团数量"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-4 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="活动时间" prop="actTime"> |
| | | <div class="block"> |
| | | <el-date-picker |
| | | v-model="ruleForm.actTime" |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </div> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <p class="el-big-title" style="text-align: left;">抽奖规则</p> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="每日抽奖机会"> |
| | | <el-form-item label="每人每日有" prop="wmkcjjh"> |
| | | <el-input-number v-model="ruleForm.wmkcjjh" :min="1" :max="10" label="描述文字"></el-input-number> 次无门槛抽奖机会 |
| | | </el-form-item> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-form-item label="可用" prop="dhycjfs"> |
| | | <el-input-number v-model="ruleForm.dhycjfs" :min="1" :max="200" label="描述文字"></el-input-number> 积分兑换1次抽奖机会,每日最多兑换 |
| | | </el-form-item> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-form-item label="每日最多兑换" prop="jfdhcs"> |
| | | <el-input-number v-model="ruleForm.jfdhcs" :min="1" :max="10" label="描述文字"></el-input-number> 次抽奖机会 |
| | | </el-form-item> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="中奖概率"> |
| | | <el-form-item label="每人最多中奖" prop="zzjcs"> |
| | | <el-input-number v-model="ruleForm.zzjcs" :min="1" :max="100" label="描述文字"></el-input-number> 次 |
| | | </el-form-item> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-form-item label="总中奖率" prop="zzjl"> |
| | | <el-input-number v-model="ruleForm.zzjl" :min="1" :max="100" label="描述文字"></el-input-number> % |
| | | </el-form-item> |
| | | </el-form-item> |
| | | </div> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="奖品设置" name="second"> |
| | | <el-row style="display:flex;"> |
| | | <el-col :span="20"> |
| | | <el-tabs v-model="editableTabsValue" type="card" closable @tab-click="clickTab" @tab-remove="removeTab"> |
| | | <el-tab-pane v-for="(item, index) in editableTabs" :key="item.name" :label="item.title" :name="item.name"> |
| | | <el-row v-show="editableTabsValue !== '1'"> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="奖项名称"> |
| | | <el-input v-model="item.content.awardName" placeholder="奖项名称"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="图片介绍"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="introduceImgSuccess"> |
| | | <img v-if="item.content.introduceImg" :src="item.content.introduceImg" style="max-width: 200px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <div v-show="item.name !== '1'"> |
| | | <el-row> |
| | | <el-form-item label="奖项类型"> |
| | | <el-col> |
| | | <el-radio-group v-model="item.content.awardType" @change="jxlxChange"> |
| | | <el-radio :label="1">自定义奖品</el-radio> |
| | | <el-radio :label="2">积分</el-radio> |
| | | <el-radio :label="3">优惠券</el-radio> |
| | | <el-radio :label="4">商品</el-radio> |
| | | </el-radio-group> |
| | | </el-col> |
| | | </el-form-item > |
| | | </el-row> |
| | | |
| | | <div> |
| | | <el-row style="display:flex;"> |
| | | <el-col> |
| | | <el-form-item label="奖项库存"> |
| | | <el-input v-model="item.content.awardInventoryCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-form-item label="已派发"> |
| | | <el-input v-model="item.content.awardDistributeCnt"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="item.content.awardType === 1"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="文字介绍"> |
| | | <el-input type="textarea" v-model="item.content.introduceTip"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="兑奖方式"> |
| | | <el-col> |
| | | <el-radio-group v-model="item.content.awardWay" @change="awardWayChange"> |
| | | <el-radio :label="'1'">线下兑换</el-radio> |
| | | <el-radio :label="'2'">物流配送</el-radio> |
| | | <el-radio :label="'3'">客服兑换</el-radio> |
| | | </el-radio-group> |
| | | </el-col> |
| | | </el-form-item > |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="操作提示"> |
| | | <el-input v-model="item.content.operationTip"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <div v-show="item.content.awardWay === '1'"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="兑奖地址"> |
| | | <el-input v-model="item.content.prizeAddress"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | </div> |
| | | <div v-show="item.content.awardWay === '3'"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="客服微信"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="wechatImgSuccess"> |
| | | <img v-if="item.content.wechatImg" :src="item.content.wechatImg" style="max-width: 200px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="[1,3].includes(item.content.awardWay)"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="客服电话"> |
| | | <el-input v-model="item.content.customerPhone"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="item.content.awardWay !== '2'"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="兑奖期限"> |
| | | <div class="block"> |
| | | <el-date-picker |
| | | v-model="item.content.prizeTime" |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | <div v-show="item.content.awardType === 2"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="积分数量"> |
| | | <el-input v-model="item.content.scoreCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="item.content.awardType === 3"> |
| | | <el-row style="display:flex;"> |
| | | <el-col> |
| | | <el-form-item label="优惠券名称"> |
| | | <el-input v-model="item.content.couponName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-form-item label="优惠券"> |
| | | <el-input v-model="item.content.couponId"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-button type="primary" @click="chooseCoupon(item.content.couponName,item.name)"> |
| | | 选择优惠券 |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-drawer |
| | | title="选择商城优惠券" |
| | | :visible.sync="drawerCoupon" |
| | | :direction="directionCoupon" |
| | | size="90%"> |
| | | <el-row style="margin-left: 50px;"> |
| | | <el-col :span="24"> |
| | | <el-row> |
| | | <el-form ref="formCoupon" :model="formCoupon" inline > |
| | | <el-form-item prop="yhjmc"> |
| | | <el-input v-model="formCoupon.yhjmc" placeholder="请输入优惠券名称"></el-input> |
| | | </el-form-item> |
| | | <el-button type="primary" @click="searchFormCoupon" >搜索</el-button> |
| | | <el-button @click="resetFormCoupon('formCoupon')">重置</el-button> |
| | | </el-form> |
| | | </el-row> |
| | | |
| | | <el-row class="table-style" > |
| | | <el-table ref="multipleTable" |
| | | :data="couponList.rows" |
| | | :height="tableHeightCoupon" |
| | | stripe:true |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="cname" |
| | | label="优惠券名称" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="endTime" |
| | | label="截止日期" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="primary" |
| | | size="mini" |
| | | @click="chooseOneCoupon(scope.row)">选择 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row class="paginationStyle" > |
| | | <el-pagination background |
| | | @size-change="changePageSizeCoupon" |
| | | @current-change="changeCurrentPageCoupon" |
| | | :current-page="couponList.currentPage" |
| | | :page-sizes="[10, 20, 30, 50]" |
| | | :page-size="couponList.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="couponList.total"> |
| | | </el-pagination> |
| | | </el-row> |
| | | </el-col> |
| | | </el-row> |
| | | </el-drawer> |
| | | </div> |
| | | <div v-show="item.content.awardType === 4"> |
| | | <el-row style="display:flex;"> |
| | | <el-col> |
| | | <el-form-item label="品项名称"> |
| | | <el-input v-model="item.content.goodsName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-form-item label="品项"> |
| | | <el-input v-model="item.content.goodsId"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-button type="primary" @click="chooseGoods(item.content.goodsName,item.name)"> |
| | | 选择品项 |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-drawer |
| | | title="选择ERP产品" |
| | | :visible.sync="drawerGoods" |
| | | :direction="directionGoods" |
| | | size="90%"> |
| | | <el-row style="margin-left: 50px;"> |
| | | <el-col :span="24"> |
| | | <el-row> |
| | | <el-form ref="formGoods" :model="formGoods" inline > |
| | | <el-form-item prop="cpmc"> |
| | | <el-input v-model="formGoods.cpmc" placeholder="请输入产品名称"></el-input> |
| | | </el-form-item> |
| | | <el-button type="primary" @click="searchFormGoods" >搜索</el-button> |
| | | <el-button @click="resetFormGoods('formGoods')">重置</el-button> |
| | | </el-form> |
| | | </el-row> |
| | | |
| | | <el-row class="table-style" > |
| | | <el-table ref="multipleTable" |
| | | :data="goodsList.rows" |
| | | :height="tableHeightGoods" |
| | | stripe:true |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="name" |
| | | label="名称" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="primary" |
| | | size="mini" |
| | | @click="chooseOneGoods(scope.row)">选择 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row class="paginationStyle" > |
| | | <el-pagination background |
| | | @size-change="changePageSizeGoods" |
| | | @current-change="changeCurrentPageGoods" |
| | | :current-page="goodsList.currentPage" |
| | | :page-sizes="[10, 20, 30, 50]" |
| | | :page-size="goodsList.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="goodsList.total"> |
| | | </el-pagination> |
| | | </el-row> |
| | | </el-col> |
| | | </el-row> |
| | | </el-drawer> |
| | | </div> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-button type="primary" @click="addTab(editableTabsValue)"> |
| | | 新增奖品 |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="背景图片上传" name="third"> |
| | | <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="标题"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="imageUrlTitleSuccess"> |
| | | <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div>--> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="头部"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="imageUrlHeadSuccess"> |
| | | <img v-if="imageUrlHead" :src="imageUrlHead" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="开始按钮"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="imageUrlTitleSuccess"> |
| | | <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="奖品划分线"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="imageLineSuccess"> |
| | | <img v-if="imageLine" :src="imageLine" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | |
| | | <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="转盘背景"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="imageUrlButtonSuccess"> |
| | | <img v-if="imageUrlButton" :src="imageUrlButton" style="max-width: 300px;"> |
| | | <i v-else></i> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div>--> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="规则说明" name="fourth"> |
| | | <div class="col-sm-8 col-sm-offset-1"> |
| | | <el-form-item label="规则内容" prop="ruleExplain" style="padding: 10px"> |
| | | <el-input type="textarea" v-model="ruleForm.ruleExplain"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="背景颜色" style="padding: 10px"> |
| | | <el-color-picker v-model="backgroundColor"></el-color-picker> |
| | | </el-form-item> |
| | | <el-form-item label="字体颜色" style="padding: 10px"> |
| | | <el-color-picker v-model="typographyColor"></el-color-picker> |
| | | </el-form-item> |
| | | <el-form-item label="字体大小" style="padding: 10px"> |
| | | <el-input-number v-model="typographyNum" :min="10" :max="50" label="描述文字"></el-input-number> |
| | | </el-form-item> |
| | | <!--<el-form-item label="字体透明度" style="padding: 10px"> |
| | | <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number> |
| | | </el-form-item>--> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | |
| | | <div class="form-group "> |
| | | <div class="col-sm-12 text-center"> |
| | | <el-button type="primary" @click="updateSignAwardSet('ruleForm')">保存</el-button> |
| | | <el-button type="danger" @click="cancelSubmit">关闭</el-button> |
| | | </div> |
| | | </div> |
| | | </el-main> |
| | | |
| | | </el-container> |
| | | |
| | | </el-form> |
| | | </div> |
| | | </body> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> |
| | | |
| | | <script> |
| | | //获取传输的活动对象 |
| | | var actId = $.query.get("actId"); |
| | | const prize = { |
| | | //奖品基本信息 |
| | | id:'', |
| | | cumulativeDay:'', |
| | | awardType:1, |
| | | awardName:'', |
| | | introduceImg:'', |
| | | introduceTip:'', |
| | | awardInventoryCnt:'', |
| | | awardDistributeCnt:'', |
| | | awardWay:1, |
| | | operationTip:'', |
| | | prizeAddress:'', |
| | | prizeTime: '', |
| | | wechatImg:'', |
| | | scoreCnt:'', |
| | | couponId:'', |
| | | customerPhone:'', |
| | | goodsId:'', |
| | | couponName:'', |
| | | goodsName:'', |
| | | } |
| | | var app = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | activeName: 'first', |
| | | formLabelWidth: '120px', |
| | | //标题图片 |
| | | imageLine: "../../../images/luckyDraw/line.png", |
| | | imageUrlTitle: "../../../images/luckyDraw/start.png", |
| | | imageUrlButton: "", |
| | | imageUrlHead: "../../../images/luckyDraw/zhuanpan.png", |
| | | |
| | | activeClickTab:0, |
| | | |
| | | //优惠券搜索弹出 |
| | | drawerCoupon: false, |
| | | directionCoupon: 'rtl', |
| | | tableHeightCoupon: 500, |
| | | //--优惠券 |
| | | formCoupon:{ |
| | | yhjmc:'', |
| | | order:'', |
| | | sort:'' |
| | | }, |
| | | couponList:{ |
| | | rows:[], |
| | | total:0, |
| | | pageSize:10, |
| | | currentPage:1, |
| | | }, |
| | | |
| | | //品项搜索弹出 |
| | | drawerGoods: false, |
| | | directionGoods: 'rtl', |
| | | tableHeightGoods: 500, |
| | | //--品项 |
| | | formGoods:{ |
| | | cpmc:'', |
| | | order:'', |
| | | sort:'' |
| | | }, |
| | | goodsList:{ |
| | | rows:[], |
| | | total:0, |
| | | pageSize:10, |
| | | currentPage:1, |
| | | }, |
| | | |
| | | //字体颜色 |
| | | typographyColor: '#409EFF', |
| | | //背景颜色 |
| | | backgroundColor: '#409EFF', |
| | | //字体大小 |
| | | typographyNum: '5', |
| | | //字体透明度 |
| | | typographyLight: '50', |
| | | //奖品设置 |
| | | prize:JSON.parse(JSON.stringify(prize)), |
| | | editableTabsValue: '1', |
| | | editableTabs: [{ |
| | | title: '谢谢参与', |
| | | name: '1', |
| | | content: JSON.parse(JSON.stringify(prize)) |
| | | }], |
| | | tabIndex: 1, |
| | | |
| | | ruleForm : { |
| | | //商品基本信息 |
| | | actName : '', |
| | | actCode : '', |
| | | actTime : '', |
| | | //抽奖规则 |
| | | wmkcjjh : '5', |
| | | dhycjfs : '20', |
| | | jfdhcs : '10', |
| | | zzjcs : '5', |
| | | zzjl : '10', |
| | | //规则说明 |
| | | ruleExplain : '', |
| | | }, |
| | | rules : { |
| | | //商品基本信息 |
| | | actName : [ |
| | | { required: true, message: '请输入活动名称', trigger: 'blur' } |
| | | ], |
| | | actCode : [ |
| | | { required: true, message: '请输入活动编码', trigger: 'blur' } |
| | | ], |
| | | actTime : [ |
| | | { required: true, message: '请选择日期', trigger: 'change' } |
| | | ], |
| | | wmkcjjh : [ |
| | | { required: true, message: '请输入1到10的数字', trigger: 'blur' } |
| | | ], |
| | | dhycjfs : [ |
| | | { required: true, message: '请输入1到200的数字', trigger: 'blur' } |
| | | ], |
| | | jfdhcs : [ |
| | | { required: true, message: '请输入1到10的数字', trigger: 'blur' } |
| | | ], |
| | | zzjcs : [ |
| | | { required: true, message: '请输入1到100的数字', trigger: 'blur' } |
| | | ], |
| | | zzjl : [ |
| | | { required: true, message: '请输入1到100的数字', trigger: 'blur' } |
| | | ], |
| | | ruleExplain : [ |
| | | { required: true, message: '请输入规则内容', trigger: 'blur' } |
| | | ] |
| | | }, |
| | | }, |
| | | created: function () { |
| | | this.loadInfo(); |
| | | }, |
| | | methods: { |
| | | //选择优惠券 |
| | | chooseCoupon(val,name){ |
| | | let _this = this; |
| | | _this.drawerCoupon = true; |
| | | _this.activeClickTab = parseInt(name); |
| | | |
| | | console.log(_this.activeClickTab); |
| | | _this.formCoupon.yhjmc = val; |
| | | _this.loadCouponList(); |
| | | }, |
| | | //--优惠券 |
| | | loadCouponList() { |
| | | let _this = this; |
| | | let data=_this.getRequestParamCoupon(); |
| | | data.pageSize=_this.couponList.pageSize; |
| | | data.pageNum=_this.couponList.currentPage; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data:data, |
| | | url: basePath + '/admin/activitySignAwardSet/selectCouponList', |
| | | callback: function (data) { |
| | | _this.couponList.rows = data.rows; |
| | | _this.couponList.total = data.total; |
| | | } |
| | | }); |
| | | }, |
| | | //查询参数 |
| | | getRequestParamCoupon(){ |
| | | let _this = this; |
| | | return { |
| | | yhjmc:_this.formCoupon.yhjmc, |
| | | order:_this.formCoupon.order, |
| | | sort:_this.formCoupon.sort, |
| | | } |
| | | }, |
| | | //查询 |
| | | searchFormCoupon:function(){ |
| | | this.couponList.currentPage=1; |
| | | this.loadCouponList(); |
| | | }, |
| | | //重置 |
| | | resetFormCoupon(formName) { |
| | | (this.$refs[formName])[0].resetFields(); |
| | | }, |
| | | changePageSizeCoupon(val) { |
| | | this.couponList.pageSize = val; |
| | | this.loadCouponList(); |
| | | }, |
| | | changeCurrentPageCoupon(val) { |
| | | this.couponList.currentPage = val; |
| | | this.loadCouponList(); |
| | | }, |
| | | //选择 |
| | | chooseOneCoupon(row) { |
| | | let _this = this; |
| | | _this.editableTabs[_this.activeClickTab-1].content.couponId = row.id; |
| | | _this.editableTabs[_this.activeClickTab-1].content.couponName = row.cname; |
| | | _this.drawerCoupon = false; |
| | | }, |
| | | |
| | | //选择品项 |
| | | chooseGoods(val,name){ |
| | | let _this = this; |
| | | _this.drawerGoods = true; |
| | | _this.activeClickTab = parseInt(name); |
| | | _this.formGoods.cpmc = val; |
| | | _this.loadGoodsList(); |
| | | }, |
| | | //--品项 |
| | | loadGoodsList() { |
| | | let _this = this; |
| | | let data=_this.getRequestParamGoods(); |
| | | data.pageSize=_this.goodsList.pageSize; |
| | | data.pageNum=_this.goodsList.currentPage; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data:data, |
| | | url: basePath + '/admin/activitySignAwardSet/selectGoodsList', |
| | | callback: function (data) { |
| | | _this.goodsList.rows = data.rows; |
| | | _this.goodsList.total = data.total; |
| | | } |
| | | }); |
| | | }, |
| | | //查询参数 |
| | | getRequestParamGoods(){ |
| | | let _this = this; |
| | | return { |
| | | cpmc:_this.formCoupon.cpmc, |
| | | order:_this.formCoupon.order, |
| | | sort:_this.formCoupon.sort, |
| | | } |
| | | }, |
| | | //查询 |
| | | searchFormGoods:function(){ |
| | | this.goodsList.currentPage=1; |
| | | this.loadGoodsList(); |
| | | }, |
| | | //重置 |
| | | resetFormGoods(formName) { |
| | | (this.$refs[formName])[0].resetFields(); |
| | | }, |
| | | changePageSizeGoods(val) { |
| | | this.goodsList.pageSize = val; |
| | | this.loadGoodsList(); |
| | | }, |
| | | changeCurrentPageGoods(val) { |
| | | this.goodsList.currentPage = val; |
| | | this.loadGoodsList(); |
| | | }, |
| | | //选择 |
| | | chooseOneGoods(row) { |
| | | let _this = this; |
| | | _this.editableTabs[_this.activeClickTab-1].content.goodsId = row.id; |
| | | _this.editableTabs[_this.activeClickTab-1].content.goodsName = row.name; |
| | | _this.drawerGoods = false; |
| | | }, |
| | | |
| | | //加载活动详情 |
| | | loadInfo() { |
| | | let _this = this; |
| | | _this.loadSign(); |
| | | }, |
| | | loadSign() { |
| | | let _this = this; |
| | | let data={ |
| | | actId:actId, |
| | | }; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data:data, |
| | | url: basePath + '/admin/activitySignAwardSet/findLuckyDrawForUpdate', |
| | | callback: function (data) { |
| | | _this.ruleForm.actName = data.mapInfo.addLuckyDrawSetVo.actName; |
| | | _this.ruleForm.actCode = data.mapInfo.addLuckyDrawSetVo.actCode; |
| | | let arrayObj = new Array(); |
| | | arrayObj.push(new Date(data.mapInfo.addLuckyDrawSetVo.beginTime)); |
| | | arrayObj.push(new Date(data.mapInfo.addLuckyDrawSetVo.endTime)); |
| | | _this.ruleForm.actTime = arrayObj; |
| | | //抽奖规则 |
| | | _this.ruleForm.wmkcjjh = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.wmkcjjh; |
| | | _this.ruleForm.dhycjfs = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.dhycjfs; |
| | | _this.ruleForm.jfdhcs = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.jfdhcs; |
| | | _this.ruleForm.zzjcs = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.zzjcs; |
| | | _this.ruleForm.zzjl = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.zzjl; |
| | | //字体颜色 |
| | | _this.ruleForm.ruleExplain = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.ruleExplain; |
| | | _this.typographyColor = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.typographyColor; |
| | | _this.backgroundColor = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.backgroundColor; |
| | | _this.typographyNum = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.typographyNum; |
| | | _this.typographyLight = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.typographyLight; |
| | | _this.imageUrlTitle = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageUrlTitle; |
| | | _this.imageUrlHead = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageUrlHead; |
| | | _this.imageUrlButton = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageUrlButton; |
| | | _this.imageUrlState = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageUrlState; |
| | | _this.imageLine = data.mapInfo.addLuckyDrawSetVo.luckyDrawBasicJsonVo.imageLine; |
| | | |
| | | for (let i = 0; i < data.mapInfo.addLuckyDrawSetVo.activityluckyDrawSets.length; i++) { |
| | | _this.tabIndex = data.mapInfo.addLuckyDrawSetVo.activityluckyDrawSets.length; |
| | | let prizeVo = data.mapInfo.addLuckyDrawSetVo.activityluckyDrawSets[i]; |
| | | let arrayObjs = new Array(); |
| | | arrayObjs.push(new Date(prizeVo.prizeStartTime)); |
| | | arrayObjs.push(new Date(prizeVo.prizeEndTime)); |
| | | let content = JSON.parse(JSON.stringify(prize)); |
| | | content = { |
| | | id: prizeVo.id, |
| | | cumulativeDay: prizeVo.cumulativeDay, |
| | | awardType: parseInt(prizeVo.awardType), |
| | | awardName: prizeVo.awardName, |
| | | introduceImg: prizeVo.introduceImg, |
| | | customerPhone: prizeVo.customerPhone, |
| | | introduceTip: prizeVo.introduceTip, |
| | | awardInventoryCnt: prizeVo.awardInventoryCnt, |
| | | awardDistributeCnt: prizeVo.awardDistributeCnt, |
| | | awardWay: parseInt(prizeVo.awardWay), |
| | | operationTip: prizeVo.operationTip, |
| | | prizeAddress: prizeVo.prizeAddress, |
| | | wechatImg: prizeVo.wechatImg, |
| | | scoreCnt: prizeVo.scoreCnt, |
| | | couponId: prizeVo.couponId, |
| | | goodsId: prizeVo.goodsId, |
| | | couponName: prizeVo.couponName, |
| | | goodsName: prizeVo.goodsName, |
| | | prizeTime: arrayObjs, |
| | | } |
| | | if(i === 0){ |
| | | _this.editableTabs[0].content = content; |
| | | }else{ |
| | | let newTabName = i+1 +''; |
| | | _this.editableTabs.push({ |
| | | title: "商品奖励"+"("+newTabName+")", |
| | | name: newTabName, |
| | | content: content, |
| | | }); |
| | | this.editableTabsValue = newTabName; |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | //保存 |
| | | updateSignAwardSet : function(formName) { |
| | | const _this = this; |
| | | let flag = false; |
| | | _this.$refs[formName].validate((valid) => { |
| | | if (!valid) { |
| | | _this.$notify({ |
| | | title: '提示', |
| | | message: '请完善转盘抽奖活动信息', |
| | | type: 'warning' |
| | | }); |
| | | flag = true; |
| | | return; |
| | | } |
| | | }); |
| | | if (flag) { |
| | | return; |
| | | } |
| | | //活动基本信息 |
| | | let luckyDrawBasicJsonDto = { |
| | | ruleExplain: _this.ruleForm.ruleExplain, |
| | | //字体颜色 |
| | | typographyColor: _this.typographyColor, |
| | | //背景颜色 |
| | | backgroundColor: _this.backgroundColor, |
| | | //字体大小 |
| | | typographyNum: _this.typographyNum, |
| | | //标题图片 |
| | | imageUrlTitle: _this.imageUrlTitle, |
| | | imageLine: _this.imageLine, |
| | | imageUrlHead: _this.imageUrlHead, |
| | | imageUrlButton: _this.imageUrlButton, |
| | | //抽奖规则 |
| | | wmkcjjh: _this.ruleForm.wmkcjjh, |
| | | dhycjfs: _this.ruleForm.dhycjfs, |
| | | jfdhcs: _this.ruleForm.jfdhcs, |
| | | zzjcs: _this.ruleForm.zzjcs, |
| | | zzjl: _this.ruleForm.zzjl, |
| | | } |
| | | //奖品信息 |
| | | let activityAwardSets = []; |
| | | for (let i = 0; i < _this.editableTabs.length; i++) { |
| | | let prize = _this.editableTabs[i].content; |
| | | let name = _this.editableTabs[i].title; |
| | | let awardRule = 2; |
| | | if(name == "谢谢参与"){ |
| | | awardRule = 1; |
| | | } |
| | | let activitySignAwardSet = { |
| | | id: prize.id, |
| | | cumulativeDay: prize.cumulativeDay, |
| | | awardRule: awardRule, |
| | | awardType: prize.awardType, |
| | | awardName: prize.awardName, |
| | | introduceImg: prize.introduceImg, |
| | | introduceTip: prize.introduceTip, |
| | | awardInventoryCnt: prize.awardInventoryCnt, |
| | | awardDistributeCnt: prize.awardDistributeCnt, |
| | | awardWay: prize.awardWay, |
| | | operationTip: prize.operationTip, |
| | | customerPhone: prize.customerPhone, |
| | | prizeAddress: prize.prizeAddress, |
| | | wechatImg: prize.wechatImg, |
| | | scoreCnt: prize.scoreCnt, |
| | | couponId: prize.couponId, |
| | | goodsId: prize.goodsId, |
| | | couponName: prize.couponName, |
| | | goodsName: prize.goodsName, |
| | | prizeStartTime: prize.prizeTime[0], |
| | | prizeEndTime: prize.prizeTime[1], |
| | | } |
| | | activityAwardSets.push(activitySignAwardSet); |
| | | } |
| | | let resultData = { |
| | | actMainId: actId, |
| | | actName: _this.ruleForm.actName, |
| | | actCode: _this.ruleForm.actCode, |
| | | beginTime : _this.ruleForm.actTime[0], |
| | | endTime : _this.ruleForm.actTime[1], |
| | | luckyDrawBasicJsonDto, |
| | | activityAwardSets, |
| | | } |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data: resultData, |
| | | url: basePath + '/admin/activitySignAwardSet/updateLuckyDrawSet', |
| | | callback: function (data) { |
| | | _this.$message({ |
| | | message: data.info, |
| | | type: 'success', |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | //奖品设置 |
| | | addTab(targetName) { |
| | | let newTabName = ++this.tabIndex + ''; |
| | | this.editableTabs.push({ |
| | | title: "转盘奖品"+"("+newTabName+")", |
| | | name: newTabName, |
| | | content: JSON.parse(JSON.stringify(prize)), |
| | | }); |
| | | this.editableTabsValue = newTabName; |
| | | this.activeClickTab = parseInt(newTabName); |
| | | }, |
| | | clickSecondTab(targetName) { |
| | | this.activeClickTab = 1; |
| | | }, |
| | | clickTab(targetName) { |
| | | console.log(targetName.name); |
| | | this.activeClickTab = parseInt(targetName.name); |
| | | }, |
| | | removeTab(targetName) { |
| | | let tabs = this.editableTabs; |
| | | let activeName = this.editableTabsValue; |
| | | if(activeName === '1' || targetName === '1'){ |
| | | this.$notify({ |
| | | title: '提示', |
| | | message: '【谢谢参与】不能删除', |
| | | type: 'warning' |
| | | }); |
| | | }else{ |
| | | if (activeName === targetName) { |
| | | tabs.forEach((tab, index) => { |
| | | if (tab.name === targetName && tab.title !== "谢谢参与") { |
| | | let nextTab = tabs[index + 1] || tabs[index - 1]; |
| | | if (nextTab) { |
| | | activeName = nextTab.name; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | this.editableTabsValue = activeName; |
| | | this.editableTabs = tabs.filter(tab => tab.name !== targetName); |
| | | this.tabIndex = this.editableTabs.length; |
| | | } |
| | | }, |
| | | //切换奖项类型,显示不同内容 |
| | | jxlxChange(val){ |
| | | let _this = this; |
| | | _this.isShow=val; |
| | | }, |
| | | //切换兑奖方式,显示不同内容 |
| | | awardWayChange(val){ |
| | | let _this = this; |
| | | _this.isShow=val; |
| | | }, |
| | | //跳转到图片上传 |
| | | uploadImg(){ |
| | | this.activeName = 'third'; |
| | | }, |
| | | //跳转到规则说明 |
| | | gzsmSet(){ |
| | | this.activeName = 'fourth'; |
| | | }, |
| | | //标题图片 |
| | | imageUrlTitleSuccess(res, file) { |
| | | this.imageUrlTitle = res.path; |
| | | }, |
| | | imageLineSuccess(res, file) { |
| | | this.imageLine = res.path; |
| | | }, |
| | | imageUrlHeadSuccess(res, file) { |
| | | this.imageUrlHead = res.path; |
| | | }, |
| | | imageUrlButtonSuccess(res, file) { |
| | | this.imageUrlButton = res.path; |
| | | }, |
| | | //奖品设置的图片介绍 |
| | | introduceImgSuccess(res, file) { |
| | | this.editableTabs[this.activeClickTab-1].content.introduceImg = res.path; |
| | | }, |
| | | //奖品设置的客服微信 |
| | | wechatImgSuccess(res, file) { |
| | | this.editableTabs[this.activeClickTab-1].content.wechatImg = res.path; |
| | | }, |
| | | cancelSubmit() { |
| | | this.closeFrame(); |
| | | }, |
| | | closeFrame() { |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | }, |
| | | } |
| | | }) |
| | | </script> |
| | | |
| | | </body> |
| | | </html> |
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-row> |
| | | |
| | | <el-row> |
| | | <div @click="uploadImg()" class="imageThree" > |
| | | <el-button type="primary" v-show="imageUrlButton == ''" round><span style="font-size: 20px;">签到按钮</span><span style="padding:5px;font-size: 15px;color: red;">(上传图片)</span></span></el-button> |
| | | <img v-if="imageUrlButton" :src="imageUrlButton" style="width: 100%;"> |
| | | </div> |
| | | </el-row> |
| | | |
| | | |
| | | <el-row> |
| | | <div style="text-align: center;padding: 5px;" @click="gzsmSet()"> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 30px;">-- 规则说明--</span> |
| | | </div> |
| | | <div class="el-col-sm-24" style="text-align: center;"> |
| | | <span style="padding:5px;font-size: 15px;color: red;">(点击,编辑规则内容,背景颜色,字体颜色、大小、透明度)</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">1、每天参与签到可获得积分换取抽奖机会</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">2、每天参与签到可获得积分换取抽奖机会</span> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-2" style="text-align: left;"> |
| | | <span style="padding:5px;font-size: 15px;">3、每天参与签到可获得积分换取抽奖机会</span> |
| | | </div> |
| | | </div> |
| | | </el-row> |
| | | </el-card> |
| | | </el-aside> |
| | | |
| | | <el-main width="70%"> |
| | | <div> |
| | | <el-tabs v-model="activeName" @tab-click="clickSecondTab"> |
| | | <el-tab-pane label="活动设置" name="first"> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="活动名称" prop="actName"> |
| | | <el-input v-model="ruleForm.actName" placeholder="请输入活动名称"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="活动编码" prop="actCode"> |
| | | <el-input v-model.number="ruleForm.actCode" placeholder="请输入最大开团数量"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-4 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="活动时间" prop="actTime"> |
| | | <div class="block"> |
| | | <el-date-picker |
| | | v-model="ruleForm.actTime" |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </div> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <p class="el-big-title" style="text-align: left;">抽奖规则</p> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="每日抽奖机会"> |
| | | <el-form-item label="每人每日有" prop="wmkcjjh"> |
| | | <el-input-number v-model="ruleForm.wmkcjjh" :min="1" :max="10" label="描述文字"></el-input-number> 次无门槛抽奖机会 |
| | | </el-form-item> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-form-item label="可用" prop="dhycjfs"> |
| | | <el-input-number v-model="ruleForm.dhycjfs" :min="1" :max="200" label="描述文字"></el-input-number> 积分兑换1次抽奖机会,每日最多兑换 |
| | | </el-form-item> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-form-item label="每日最多兑换" prop="jfdhcs"> |
| | | <el-input-number v-model="ruleForm.jfdhcs" :min="1" :max="10" label="描述文字"></el-input-number> 次抽奖机会 |
| | | </el-form-item> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="中奖概率"> |
| | | <el-form-item label="每人最多中奖" prop="zzjcs"> |
| | | <el-input-number v-model="ruleForm.zzjcs" :min="1" :max="100" label="描述文字"></el-input-number> 次 |
| | | </el-form-item> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-form-item label="总中奖率" prop="zzjl"> |
| | | <el-input-number v-model="ruleForm.zzjl" :min="1" :max="100" label="描述文字"></el-input-number> % |
| | | </el-form-item> |
| | | </el-form-item> |
| | | </div> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="奖品设置" name="second"> |
| | | <el-row style="display:flex;"> |
| | | <el-col :span="20"> |
| | | <el-tabs v-model="editableTabsValue" type="card" closable @tab-click="clickTab" @tab-remove="removeTab"> |
| | | <el-tab-pane v-for="(item, index) in editableTabs" :key="item.name" :label="item.title" :name="item.name"> |
| | | <el-row v-show="editableTabsValue !== '1'"> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="奖项名称"> |
| | | <el-input v-model="item.content.awardName" placeholder="奖项名称"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="图片介绍"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="introduceImgSuccess"> |
| | | <img v-if="item.content.introduceImg" :src="item.content.introduceImg" style="max-width: 200px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <div v-show="item.name !== '1'"> |
| | | <el-row> |
| | | <el-form-item label="奖项类型"> |
| | | <el-col> |
| | | <el-radio-group v-model="item.content.awardType" @change="jxlxChange"> |
| | | <el-radio :label="'1'">自定义奖品</el-radio> |
| | | <el-radio :label="'2'">积分</el-radio> |
| | | <el-radio :label="'3'">优惠券</el-radio> |
| | | <el-radio :label="'4'">商品</el-radio> |
| | | </el-radio-group> |
| | | </el-col> |
| | | </el-form-item > |
| | | </el-row> |
| | | |
| | | <div> |
| | | <el-row style="display:flex;"> |
| | | <el-col> |
| | | <el-form-item label="奖项库存"> |
| | | <el-input v-model="item.content.awardInventoryCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-form-item label="已派发"> |
| | | <el-input v-model="item.content.awardDistributeCnt"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="item.content.awardType === '1'"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="文字介绍"> |
| | | <el-input type="textarea" v-model="item.content.introduceTip"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="兑奖方式"> |
| | | <el-col> |
| | | <el-radio-group v-model="item.content.awardWay" @change="awardWayChange"> |
| | | <el-radio :label="'1'">线下兑换</el-radio> |
| | | <el-radio :label="'2'">物流配送</el-radio> |
| | | <el-radio :label="'3'">客服兑换</el-radio> |
| | | </el-radio-group> |
| | | </el-col> |
| | | </el-form-item > |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="操作提示"> |
| | | <el-input v-model="item.content.operationTip"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <div v-show="item.content.awardWay === '1'"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="兑奖地址"> |
| | | <el-input v-model="item.content.prizeAddress"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | </div> |
| | | <div v-show="item.content.awardWay === '3'"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="客服微信"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="wechatImgSuccess"> |
| | | <img v-if="item.content.wechatImg" :src="item.content.wechatImg" style="max-width: 200px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="[1,3].includes(item.content.awardWay)"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="客服电话"> |
| | | <el-input v-model="item.content.customerPhone"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="item.content.awardWay !== '2'"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="兑奖期限"> |
| | | <div class="block"> |
| | | <el-date-picker |
| | | v-model="item.content.prizeTime" |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | <div v-show="item.content.awardType === '2'"> |
| | | <el-row > |
| | | <el-col> |
| | | <el-form-item label="积分数量"> |
| | | <el-input v-model="item.content.scoreCnt" oninput ="value=value.replace(/[^0-9.]/g,'')"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="item.content.awardType === '3'"> |
| | | <el-row style="display:flex;"> |
| | | <el-col> |
| | | <el-form-item label="优惠券名称"> |
| | | <el-input v-model="item.content.couponName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-form-item label="优惠券"> |
| | | <el-input v-model="item.content.couponId"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-button type="primary" @click="chooseCoupon(item.content.couponName,item.name)"> |
| | | 选择优惠券 |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-drawer |
| | | title="选择商城优惠券" |
| | | :visible.sync="drawerCoupon" |
| | | :direction="directionCoupon" |
| | | size="90%"> |
| | | <el-row style="margin-left: 50px;"> |
| | | <el-col :span="24"> |
| | | <el-row> |
| | | <el-form ref="formCoupon" :model="formCoupon" inline > |
| | | <el-form-item prop="yhjmc"> |
| | | <el-input v-model="formCoupon.yhjmc" placeholder="请输入优惠券名称"></el-input> |
| | | </el-form-item> |
| | | <el-button type="primary" @click="searchFormCoupon" >搜索</el-button> |
| | | <el-button @click="resetFormCoupon('formCoupon')">重置</el-button> |
| | | </el-form> |
| | | </el-row> |
| | | |
| | | <el-row class="table-style" > |
| | | <el-table ref="multipleTable" |
| | | :data="couponList.rows" |
| | | :height="tableHeightCoupon" |
| | | stripe:true |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="cname" |
| | | label="优惠券名称" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="endTime" |
| | | label="截止日期" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="primary" |
| | | size="mini" |
| | | @click="chooseOneCoupon(scope.row)">选择 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row class="paginationStyle" > |
| | | <el-pagination background |
| | | @size-change="changePageSizeCoupon" |
| | | @current-change="changeCurrentPageCoupon" |
| | | :current-page="couponList.currentPage" |
| | | :page-sizes="[10, 20, 30, 50]" |
| | | :page-size="couponList.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="couponList.total"> |
| | | </el-pagination> |
| | | </el-row> |
| | | </el-col> |
| | | </el-row> |
| | | </el-drawer> |
| | | </div> |
| | | <div v-show="item.content.awardType === '4'"> |
| | | <el-row style="display:flex;"> |
| | | <el-col> |
| | | <el-form-item label="品项名称"> |
| | | <el-input v-model="item.content.goodsName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-form-item label="品项"> |
| | | <el-input v-model="item.content.goodsId"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col> |
| | | <el-button type="primary" @click="chooseGoods(item.content.goodsName,item.name)"> |
| | | 选择品项 |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-drawer |
| | | title="选择ERP产品" |
| | | :visible.sync="drawerGoods" |
| | | :direction="directionGoods" |
| | | size="90%"> |
| | | <el-row style="margin-left: 50px;"> |
| | | <el-col :span="24"> |
| | | <el-row> |
| | | <el-form ref="formGoods" :model="formGoods" inline > |
| | | <el-form-item prop="cpmc"> |
| | | <el-input v-model="formGoods.cpmc" placeholder="请输入产品名称"></el-input> |
| | | </el-form-item> |
| | | <el-button type="primary" @click="searchFormGoods" >搜索</el-button> |
| | | <el-button @click="resetFormGoods('formGoods')">重置</el-button> |
| | | </el-form> |
| | | </el-row> |
| | | |
| | | <el-row class="table-style" > |
| | | <el-table ref="multipleTable" |
| | | :data="goodsList.rows" |
| | | :height="tableHeightGoods" |
| | | stripe:true |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="name" |
| | | label="名称" |
| | | show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="primary" |
| | | size="mini" |
| | | @click="chooseOneGoods(scope.row)">选择 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row class="paginationStyle" > |
| | | <el-pagination background |
| | | @size-change="changePageSizeGoods" |
| | | @current-change="changeCurrentPageGoods" |
| | | :current-page="goodsList.currentPage" |
| | | :page-sizes="[10, 20, 30, 50]" |
| | | :page-size="goodsList.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="goodsList.total"> |
| | | </el-pagination> |
| | | </el-row> |
| | | </el-col> |
| | | </el-row> |
| | | </el-drawer> |
| | | </div> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-button type="primary" @click="addTab(editableTabsValue)"> |
| | | 新增奖品 |
| | | </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="背景图片上传" name="third"> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="头部"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="imageUrlHeadSuccess"> |
| | | <img v-if="imageUrlHead" :src="imageUrlHead" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="开始按钮"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="imageUrlTitleSuccess"> |
| | | <img v-if="imageUrlTitle" :src="imageUrlTitle" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="奖品划分线"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="imageLineSuccess"> |
| | | <img v-if="imageLine" :src="imageLine" style="max-width: 300px;"> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | |
| | | <!--<div class="col-sm-8 col-sm-offset-1" style="padding: 10px"> |
| | | <el-form-item label="转盘背景"> |
| | | <el-upload |
| | | action="/admin/multipleUploadFile/doUpload" |
| | | :show-file-list="false" |
| | | :on-success="imageUrlButtonSuccess"> |
| | | <img v-if="imageUrlButton" :src="imageUrlButton" style="max-width: 300px;"> |
| | | <i v-else></i> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div>--> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="规则说明" name="fourth"> |
| | | <div class="col-sm-8 col-sm-offset-1"> |
| | | <el-form-item label="规则内容" prop="ruleExplain" style="padding: 10px"> |
| | | <el-input type="textarea" v-model="ruleForm.ruleExplain"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="背景颜色" style="padding: 10px"> |
| | | <el-color-picker v-model="backgroundColor"></el-color-picker> |
| | | </el-form-item> |
| | | <el-form-item label="字体颜色" style="padding: 10px"> |
| | | <el-color-picker v-model="typographyColor"></el-color-picker> |
| | | </el-form-item> |
| | | <el-form-item label="字体大小" style="padding: 10px"> |
| | | <el-input-number v-model="typographyNum" :min="10" :max="50" label="描述文字"></el-input-number> |
| | | </el-form-item> |
| | | <!--<el-form-item label="字体透明度" style="padding: 10px"> |
| | | <el-input-number v-model="typographyLight" :min="1" :max="100" label="描述文字">%</el-input-number> |
| | | </el-form-item>--> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | |
| | | <div class="form-group "> |
| | | <div class="col-sm-12 text-center"> |
| | | <el-button type="primary" @click="dataSubmit('ruleForm')">保存</el-button> |
| | | <el-button type="danger" @click="cancelSubmit">关闭</el-button> |
| | | </div> |
| | | </div> |
| | | </el-main> |
| | | |
| | | </el-container> |
| | | |
| | | </el-form> |
| | | </div> |
| | | </body> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/bootstrap-3.3.5/js/bootstrap.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> |
| | | |
| | | <script> |
| | | //获取传输的活动对象 |
| | | var actId = $.query.get("actId"); |
| | | const prize = { |
| | | //奖品基本信息 |
| | | awardType:'1', |
| | | awardName:'', |
| | | introduceImg:'', |
| | | introduceTip:'', |
| | | awardInventoryCnt:'', |
| | | awardDistributeCnt:'', |
| | | awardWay:'1', |
| | | operationTip:'', |
| | | prizeAddress:'', |
| | | prizeTime: '', |
| | | wechatImg:'', |
| | | scoreCnt:'', |
| | | couponId:'', |
| | | goodsId:'', |
| | | couponName:'', |
| | | customerPhone:'', |
| | | goodsName:'', |
| | | } |
| | | var app = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | activeName: 'first', |
| | | formLabelWidth: '120px', |
| | | |
| | | activeClickTab:0, |
| | | //优惠券搜索弹出 |
| | | drawerCoupon: false, |
| | | directionCoupon: 'rtl', |
| | | tableHeightCoupon: 500, |
| | | //--优惠券 |
| | | formCoupon:{ |
| | | yhjmc:'', |
| | | order:'', |
| | | sort:'' |
| | | }, |
| | | couponList:{ |
| | | rows:[], |
| | | total:0, |
| | | pageSize:10, |
| | | currentPage:1, |
| | | }, |
| | | |
| | | //品项搜索弹出 |
| | | drawerGoods: false, |
| | | directionGoods: 'rtl', |
| | | tableHeightGoods: 500, |
| | | //--品项 |
| | | formGoods:{ |
| | | cpmc:'', |
| | | order:'', |
| | | sort:'' |
| | | }, |
| | | goodsList:{ |
| | | rows:[], |
| | | total:0, |
| | | pageSize:10, |
| | | currentPage:1, |
| | | }, |
| | | |
| | | //标题图片 |
| | | imageLine: "../../../images/luckyDraw/line.png", |
| | | imageUrlTitle: "../../../images/luckyDraw/start.png", |
| | | imageUrlButton: "", |
| | | imageUrlHead: "../../../images/luckyDraw/zhuanpan.png", |
| | | |
| | | //字体颜色 |
| | | typographyColor: '#409EFF', |
| | | //背景颜色 |
| | | backgroundColor: '#409EFF', |
| | | //字体大小 |
| | | typographyNum: '5', |
| | | //字体透明度 |
| | | typographyLight: '50', |
| | | //奖品设置 |
| | | prize:JSON.parse(JSON.stringify(prize)), |
| | | editableTabsValue: '1', |
| | | editableTabs: [{ |
| | | title: '谢谢参与', |
| | | name: '1', |
| | | content: JSON.parse(JSON.stringify(prize)) |
| | | }], |
| | | tabIndex: 1, |
| | | |
| | | ruleForm : { |
| | | //商品基本信息 |
| | | actName : '', |
| | | actCode : '', |
| | | actTime : '', |
| | | //抽奖规则 |
| | | wmkcjjh : '5', |
| | | dhycjfs : '20', |
| | | jfdhcs : '10', |
| | | zzjcs : '5', |
| | | zzjl : '10', |
| | | |
| | | //规则说明 |
| | | ruleExplain : '', |
| | | }, |
| | | rules : { |
| | | //商品基本信息 |
| | | actName : [ |
| | | { required: true, message: '请输入活动名称', trigger: 'blur' } |
| | | ], |
| | | actCode : [ |
| | | { required: true, message: '请输入活动编码', trigger: 'blur' } |
| | | ], |
| | | actTime : [ |
| | | { required: true, message: '请选择日期', trigger: 'change' } |
| | | ], |
| | | wmkcjjh : [ |
| | | { required: true, message: '请输入1到10的数字', trigger: 'blur' } |
| | | ], |
| | | dhycjfs : [ |
| | | { required: true, message: '请输入1到200的数字', trigger: 'blur' } |
| | | ], |
| | | jfdhcs : [ |
| | | { required: true, message: '请输入1到10的数字', trigger: 'blur' } |
| | | ], |
| | | zzjcs : [ |
| | | { required: true, message: '请输入1到100的数字', trigger: 'blur' } |
| | | ], |
| | | zzjl : [ |
| | | { required: true, message: '请输入1到100的数字', trigger: 'blur' } |
| | | ], |
| | | ruleExplain : [ |
| | | { required: true, message: '请输入规则内容', trigger: 'blur' } |
| | | ] |
| | | }, |
| | | }, |
| | | created: function () { |
| | | }, |
| | | methods: { |
| | | //选择优惠券 |
| | | chooseCoupon(val,name){ |
| | | let _this = this; |
| | | _this.drawerCoupon = true; |
| | | _this.activeClickTab = parseInt(name); |
| | | _this.formCoupon.yhjmc = val; |
| | | _this.loadCouponList(); |
| | | }, |
| | | //--优惠券 |
| | | loadCouponList() { |
| | | let _this = this; |
| | | let data=_this.getRequestParamCoupon(); |
| | | data.pageSize=_this.couponList.pageSize; |
| | | data.pageNum=_this.couponList.currentPage; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data:data, |
| | | url: basePath + '/admin/activitySignAwardSet/selectCouponList', |
| | | callback: function (data) { |
| | | _this.couponList.rows = data.rows; |
| | | _this.couponList.total = data.total; |
| | | } |
| | | }); |
| | | }, |
| | | //查询参数 |
| | | getRequestParamCoupon(){ |
| | | let _this = this; |
| | | return { |
| | | yhjmc:_this.formCoupon.yhjmc, |
| | | order:_this.formCoupon.order, |
| | | sort:_this.formCoupon.sort, |
| | | } |
| | | }, |
| | | //查询 |
| | | searchFormCoupon:function(){ |
| | | this.couponList.currentPage=1; |
| | | this.loadCouponList(); |
| | | }, |
| | | //重置 |
| | | resetFormCoupon(formName) { |
| | | // this.formCoupon.yhjmc = '' |
| | | // console.log(this.$refs[formName].resetFields) |
| | | (this.$refs[formName])[0].resetFields(); |
| | | }, |
| | | changePageSizeCoupon(val) { |
| | | this.couponList.pageSize = val; |
| | | this.loadCouponList(); |
| | | }, |
| | | changeCurrentPageCoupon(val) { |
| | | this.couponList.currentPage = val; |
| | | this.loadCouponList(); |
| | | }, |
| | | //选择 |
| | | chooseOneCoupon(row) { |
| | | let _this = this; |
| | | _this.editableTabs[_this.activeClickTab-1].content.couponId = row.id; |
| | | _this.editableTabs[_this.activeClickTab-1].content.couponName = row.cname; |
| | | _this.drawerCoupon = false; |
| | | }, |
| | | |
| | | //选择品项 |
| | | chooseGoods(val,name){ |
| | | let _this = this; |
| | | _this.drawerGoods = true; |
| | | _this.activeClickTab = parseInt(name); |
| | | _this.formGoods.cpmc = val; |
| | | _this.loadGoodsList(); |
| | | }, |
| | | //--品项 |
| | | loadGoodsList() { |
| | | let _this = this; |
| | | let data=_this.getRequestParamGoods(); |
| | | data.pageSize=_this.goodsList.pageSize; |
| | | data.pageNum=_this.goodsList.currentPage; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data:data, |
| | | url: basePath + '/admin/activitySignAwardSet/selectGoodsList', |
| | | callback: function (data) { |
| | | _this.goodsList.rows = data.rows; |
| | | _this.goodsList.total = data.total; |
| | | } |
| | | }); |
| | | }, |
| | | //查询参数 |
| | | getRequestParamGoods(){ |
| | | let _this = this; |
| | | return { |
| | | cpmc:_this.formCoupon.cpmc, |
| | | order:_this.formCoupon.order, |
| | | sort:_this.formCoupon.sort, |
| | | } |
| | | }, |
| | | //查询 |
| | | searchFormGoods:function(){ |
| | | this.goodsList.currentPage=1; |
| | | this.loadGoodsList(); |
| | | }, |
| | | //重置 |
| | | resetFormGoods(formName) { |
| | | (this.$refs[formName])[0].resetFields(); |
| | | }, |
| | | changePageSizeGoods(val) { |
| | | this.goodsList.pageSize = val; |
| | | this.loadGoodsList(); |
| | | }, |
| | | changeCurrentPageGoods(val) { |
| | | this.goodsList.currentPage = val; |
| | | this.loadGoodsList(); |
| | | }, |
| | | //选择 |
| | | chooseOneGoods(row) { |
| | | let _this = this; |
| | | _this.editableTabs[_this.activeClickTab-1].content.goodsId = row.id; |
| | | _this.editableTabs[_this.activeClickTab-1].content.goodsName = row.name; |
| | | _this.drawerGoods = false; |
| | | }, |
| | | |
| | | //保存 |
| | | dataSubmit : function(formName) { |
| | | const _this = this; |
| | | let flag = false; |
| | | _this.$refs[formName].validate((valid) => { |
| | | if (!valid) { |
| | | _this.$notify({ |
| | | title: '提示', |
| | | message: '请完善转盘抽奖活动信息', |
| | | type: 'warning' |
| | | }); |
| | | flag = true; |
| | | return; |
| | | } |
| | | }); |
| | | if (flag) { |
| | | return; |
| | | } |
| | | //活动基本信息 |
| | | let luckyDrawBasicJsonDto = { |
| | | ruleExplain: _this.ruleForm.ruleExplain, |
| | | //字体颜色 |
| | | typographyColor: _this.typographyColor, |
| | | //背景颜色 |
| | | backgroundColor: _this.backgroundColor, |
| | | //字体大小 |
| | | typographyNum: _this.typographyNum, |
| | | //标题图片 |
| | | imageUrlTitle: _this.imageUrlTitle, |
| | | imageLine: _this.imageLine, |
| | | imageUrlHead: _this.imageUrlHead, |
| | | imageUrlButton: _this.imageUrlButton, |
| | | //抽奖规则 |
| | | wmkcjjh: _this.ruleForm.wmkcjjh, |
| | | dhycjfs: _this.ruleForm.dhycjfs, |
| | | jfdhcs: _this.ruleForm.jfdhcs, |
| | | zzjcs: _this.ruleForm.zzjcs, |
| | | zzjl: _this.ruleForm.zzjl, |
| | | } |
| | | //奖品信息 |
| | | let luckyDrawAwardSets = []; |
| | | for (let i = 0; i < _this.editableTabs.length; i++) { |
| | | let prize = _this.editableTabs[i].content; |
| | | let name = _this.editableTabs[i].title; |
| | | let awardRule = 2; |
| | | if(name == "谢谢参与"){ |
| | | awardRule = 1; |
| | | } |
| | | let activitySignAwardSet = { |
| | | awardRule: awardRule, |
| | | awardType: prize.awardType, |
| | | awardName: prize.awardName, |
| | | introduceImg: prize.introduceImg, |
| | | introduceTip: prize.introduceTip, |
| | | awardInventoryCnt: prize.awardInventoryCnt, |
| | | awardDistributeCnt: prize.awardDistributeCnt, |
| | | awardWay: prize.awardWay, |
| | | operationTip: prize.operationTip, |
| | | prizeAddress: prize.prizeAddress, |
| | | wechatImg: prize.wechatImg, |
| | | customerPhone: prize.customerPhone, |
| | | scoreCnt: prize.scoreCnt, |
| | | couponId: prize.couponId, |
| | | goodsId: prize.goodsId, |
| | | couponName: prize.couponName, |
| | | goodsName: prize.goodsName, |
| | | prizeStartTime: prize.prizeTime[0], |
| | | prizeEndTime: prize.prizeTime[1], |
| | | } |
| | | luckyDrawAwardSets.push(activitySignAwardSet); |
| | | } |
| | | let resultData = { |
| | | actName: _this.ruleForm.actName, |
| | | actCode: _this.ruleForm.actCode, |
| | | beginTime : _this.ruleForm.actTime[0], |
| | | endTime : _this.ruleForm.actTime[1], |
| | | luckyDrawBasicJsonDto, |
| | | luckyDrawAwardSets, |
| | | } |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data: resultData, |
| | | url: basePath + '/admin/activitySignAwardSet/addLuckyDrawSet', |
| | | callback: function (data) { |
| | | _this.$message({ |
| | | message: data.info, |
| | | type: 'success', |
| | | }); |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | } |
| | | }); |
| | | }, |
| | | //奖品设置 |
| | | addTab(targetName) { |
| | | let newTabName = ++this.tabIndex + ''; |
| | | this.editableTabs.push({ |
| | | title: "转盘奖品"+"("+newTabName+")", |
| | | name: newTabName, |
| | | content: JSON.parse(JSON.stringify(prize)), |
| | | }); |
| | | this.editableTabsValue = newTabName; |
| | | this.activeClickTab = parseInt(newTabName); |
| | | }, |
| | | clickSecondTab(targetName) { |
| | | this.activeClickTab = 1; |
| | | }, |
| | | clickTab(targetName) { |
| | | console.log(targetName.name); |
| | | this.activeClickTab = parseInt(targetName.name); |
| | | }, |
| | | removeTab(targetName) { |
| | | let tabs = this.editableTabs; |
| | | let activeName = this.editableTabsValue; |
| | | if(activeName === '1' || targetName === '1'){ |
| | | this.$notify({ |
| | | title: '提示', |
| | | message: '【谢谢参与】不能删除', |
| | | type: 'warning' |
| | | }); |
| | | }else{ |
| | | if (activeName === targetName) { |
| | | tabs.forEach((tab, index) => { |
| | | if (tab.name === targetName && tab.title !== "谢谢参与") { |
| | | let nextTab = tabs[index + 1] || tabs[index - 1]; |
| | | if (nextTab) { |
| | | activeName = nextTab.name; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | this.editableTabsValue = activeName; |
| | | this.editableTabs = tabs.filter(tab => tab.name !== targetName); |
| | | this.tabIndex = this.editableTabs.length; |
| | | } |
| | | }, |
| | | //切换奖项类型,显示不同内容 |
| | | jxlxChange(val){ |
| | | let _this = this; |
| | | _this.isShow=val; |
| | | }, |
| | | //切换兑奖方式,显示不同内容 |
| | | awardWayChange(val){ |
| | | let _this = this; |
| | | _this.isShow=val; |
| | | }, |
| | | //跳转到图片上传 |
| | | uploadImg(){ |
| | | this.activeName = 'third'; |
| | | }, |
| | | //跳转到规则说明 |
| | | gzsmSet(){ |
| | | this.activeName = 'fourth'; |
| | | }, |
| | | //标题图片 |
| | | imageUrlTitleSuccess(res, file) { |
| | | this.imageUrlTitle = res.path; |
| | | }, |
| | | imageLineSuccess(res, file) { |
| | | this.imageLine = res.path; |
| | | }, |
| | | imageUrlHeadSuccess(res, file) { |
| | | this.imageUrlHead = res.path; |
| | | }, |
| | | imageUrlButtonSuccess(res, file) { |
| | | this.imageUrlButton = res.path; |
| | | }, |
| | | //奖品设置的图片介绍 |
| | | introduceImgSuccess(res, file) { |
| | | this.editableTabs[this.activeClickTab-1].content.introduceImg = res.path; |
| | | }, |
| | | //奖品设置的客服微信 |
| | | wechatImgSuccess(res, file) { |
| | | this.editableTabs[this.activeClickTab-1].content.wechatImg = res.path; |
| | | }, |
| | | cancelSubmit() { |
| | | this.closeFrame(); |
| | | }, |
| | | closeFrame() { |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | }, |
| | | } |
| | | }) |
| | | </script> |
| | | |
| | | </body> |
| | | </html> |
| | |
| | | |
| | | <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/luckyDraw/zhuanpanchoujian.png" class="image"> |
| | | <div style="padding: 5px;"> |
| | | <span style="padding:5px;font-size: 18px;">转盘抽奖</span> |
| | | <div class="bottom clearfix"> |
| | | <el-button type="primary" size="mini" class="button" @click="createLuckyDraw()" round>马上创建</el-button> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </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'] |
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"/> |
| | | <LINK rel="Bookmark" href="../images/favicon.ico"> |
| | | <!-- 本框架基本脚本和样式 --> |
| | | <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> |
| | | <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> |
| | | <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> |
| | | <title></title> |
| | | <style> |
| | | .panel-body { |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .buttonPanel { |
| | | background: #ffffff; |
| | | padding: 10px 10px; |
| | | margin: 0px 0px 10px 0px; |
| | | } |
| | | |
| | | .rowPanel { |
| | | background: #ffffff; |
| | | padding: 0px 10px; |
| | | padding-top: 10px; |
| | | margin: 0px 0px 10px 0px; |
| | | } |
| | | |
| | | .paginationStyle { |
| | | background: #ffffff; |
| | | padding: 10px 10px; |
| | | margin: 0px 0px 10px 0px; |
| | | text-align: right; |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | | <div class="panel-body" id="app"> |
| | | |
| | | <el-row class="buttonPanel"> |
| | | <el-button @click="openForm('add')" type="primary">新增</el-button> |
| | | </el-row> |
| | | |
| | | <el-row class="rowPanel"> |
| | | <el-form ref="form" :model="form" inline> |
| | | <el-form-item label="规则名称" prop="queryKey"> |
| | | <el-input v-model="form.keyword" placeholder="请输入规则名称"></el-input> |
| | | </el-form-item> |
| | | <el-button type="primary" @click="search">搜索</el-button> |
| | | <el-button @click="resetForm('form')">重置</el-button> |
| | | </el-form> |
| | | </el-row> |
| | | |
| | | <el-row class="table-style"> |
| | | |
| | | <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange"> |
| | | <el-table-column |
| | | prop="name" |
| | | label="规则名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="updateTime" |
| | | sortable="custom" |
| | | label="修改时间" |
| | | show-overflow-tooltip |
| | | width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="updateBy" |
| | | label="修改人"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="createTime" |
| | | sortable="custom" |
| | | label="创建时间" |
| | | show-overflow-tooltip |
| | | width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createBy" |
| | | label="创建人" |
| | | width="180"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="openForm('modify', scope.row)" size="small">修改</el-button> |
| | | <el-button type="text" @click="remove(scope.$index, scope.row)" size="small">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row class="paginationStyle"> |
| | | <el-pagination background |
| | | @size-change="changePageSize" |
| | | @current-change="changeCurrentPage" |
| | | :current-page="table.currentPage" |
| | | :page-sizes="[10, 20, 30, 50]" |
| | | :page-size="table.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="table.total"> |
| | | </el-pagination> |
| | | </el-row> |
| | | |
| | | <el-dialog |
| | | :title="title" |
| | | :visible.sync="dialogVisible" |
| | | width="60%" |
| | | :before-close="handleClose"> |
| | | |
| | | <el-form :model="formData" ref="ruleForm" label-width="100px" class="demo-ruleForm"> |
| | | |
| | | <el-form-item label="规则名称" > |
| | | <el-input style="width: 200px" v-model="formData.name"></el-input> |
| | | <el-button type="primary" @click="addRuleItem()" size="small">添加规则</el-button> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="绩效方案" > |
| | | <el-table |
| | | :data="formData.ruleItemList" |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | label="业绩类型" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.achieveType" placeholder="请选择业绩类型"> |
| | | <el-option label="本金消耗" :value="1"></el-option> |
| | | <el-option label="赠送消耗" :value="2"></el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="计算方式" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.calculationType" placeholder="请选择计算方式"> |
| | | <el-option label="固定金额" :value="1"></el-option> |
| | | <el-option label="百分比(%)" :value="2"></el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="区间" |
| | | width="240"> |
| | | <template slot-scope="scope"> |
| | | <el-input style="width: 100px" v-model="scope.row.lower"></el-input> |
| | | - |
| | | <el-input style="width: 100px" v-model="scope.row.upper"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="业绩"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.achieve"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="removeRuleItem(scope.$index, scope.row)" size="small">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-form-item> |
| | | |
| | | |
| | | |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="submitForm">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | |
| | | </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/layer/layer.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="@{/plugin/moment.min.js}"></script> |
| | | <script type="text/javascript" th:inline="javascript"> |
| | | |
| | | var vue = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | table: { |
| | | rows: [], |
| | | total: 0, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | }, |
| | | form: { |
| | | queryKey: null, |
| | | }, |
| | | |
| | | height: 'calc(100vh - 240px)', |
| | | dialogVisible: false, |
| | | title: '', |
| | | formData: { |
| | | name: '', |
| | | ruleItemList: [ |
| | | { |
| | | achieveType: 1, |
| | | calculationType: 1, |
| | | lower: '', |
| | | upper: '', |
| | | achieve: '', |
| | | } |
| | | ] |
| | | }, |
| | | |
| | | type: '', |
| | | |
| | | }, |
| | | created: function () { |
| | | this.loadData(); |
| | | window.addEventListener("keydown", this.keydown); |
| | | }, |
| | | methods: { |
| | | changePageSize(val) { |
| | | this.table.pageSize = val; |
| | | this.loadData(); |
| | | }, |
| | | changeCurrentPage(val) { |
| | | this.table.currentPage = val; |
| | | this.loadData(); |
| | | }, |
| | | resetForm(formName) { |
| | | this.$refs[formName].resetFields(); |
| | | }, |
| | | sortChange: function (column) { |
| | | if (column.order) { |
| | | if (column.order.indexOf("desc")) { |
| | | this.form.order = "desc"; |
| | | } else { |
| | | this.form.order = "asc"; |
| | | } |
| | | this.form.sort = column.prop; |
| | | this.loadData(); |
| | | } |
| | | }, |
| | | loadData: function () { |
| | | let _this = this; |
| | | let data = _this.getRequestParam(); |
| | | data.pageSize = _this.table.pageSize; |
| | | data.pageNum = _this.table.currentPage; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data: data, |
| | | url: basePath + '/admin/achieveRule/selectList', |
| | | callback: function (data) { |
| | | _this.table.rows = data.rows; |
| | | _this.table.total = data.total; |
| | | } |
| | | }); |
| | | }, |
| | | getRequestParam() { |
| | | let _this = this; |
| | | return { |
| | | queryKey: _this.form.queryKey, |
| | | } |
| | | }, |
| | | search: function () { |
| | | this.table.currentPage = 1; |
| | | this.loadData(); |
| | | }, |
| | | keydown(evt) { |
| | | if (evt.keyCode == 13) { |
| | | this.search(); |
| | | } |
| | | }, |
| | | |
| | | remove(index, row) { |
| | | let _this = this; |
| | | this.$confirm('确认删除该规则吗?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | type: 'GET', |
| | | url: basePath + "/admin/achieveRule/removeById/" + row.id, |
| | | callback: function (data) { |
| | | _this.loadData(); |
| | | _this.$message({ |
| | | type: 'success', |
| | | message: data.info, |
| | | }); |
| | | } |
| | | }); |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已取消删除' |
| | | }); |
| | | }); |
| | | }, |
| | | //开启表单弹窗 |
| | | openForm(type, data) { |
| | | |
| | | if (type == 'add') { |
| | | this.title = '新增规则'; |
| | | //this.$refs['formName'].resetFields(); |
| | | |
| | | } else { |
| | | this.title = '修改规则'; |
| | | this.formData = data; |
| | | } |
| | | this.type = type; |
| | | this.dialogVisible = true; |
| | | }, |
| | | //提交表单 |
| | | submitForm() { |
| | | let url = basePath + "/admin/achieveRule/add"; |
| | | if (this.type == 'modify') { |
| | | url = basePath + "/admin/achieveRule/update"; |
| | | } |
| | | let data=this.formData; |
| | | |
| | | if(MTools.isBlank(data.name)){this.$message.error("请输入规则名称");return;} |
| | | |
| | | if(data.ruleItemList.length<1){ |
| | | this.$message.error("最少需要一个计算规则");;return;} |
| | | let flag=true; |
| | | data.ruleItemList.forEach(item=>{ |
| | | if(MTools.isBlank(item.lower)){ |
| | | this.$message.error("请输入业绩下限");flag=false;} |
| | | else if(MTools.isBlank(item.upper)){ |
| | | this.$message.error("请输入业绩上限");flag=false;} |
| | | else if(MTools.isBlank(item.achieve)){ |
| | | this.$message.error("请输入业绩金额或者比例");flag=false;} |
| | | }) |
| | | if(flag){ |
| | | var _this=this; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data:data, |
| | | url:url, |
| | | callback: function (data) { |
| | | _this.$message.success(data.info); |
| | | _this.loadData(); |
| | | _this.dialogVisible = false; |
| | | _this.formData={ |
| | | name: '', |
| | | ruleItemList: [ |
| | | { |
| | | achieveType: 1, |
| | | calculationType: 1, |
| | | lower: '', |
| | | upper: '', |
| | | achieve: '', |
| | | } |
| | | ] |
| | | }; |
| | | } |
| | | }); |
| | | |
| | | } |
| | | }, |
| | | handleClose(done) { |
| | | this.$confirm('确认关闭?') |
| | | .then(_ => { |
| | | done(); |
| | | }) |
| | | .catch(_ => { |
| | | }); |
| | | }, |
| | | addRuleItem(){ |
| | | this.formData.ruleItemList.push( |
| | | { |
| | | achieveType: 1, |
| | | calculationType: 1, |
| | | lower: '', |
| | | upper: '', |
| | | achieve: '', |
| | | } |
| | | ); |
| | | }, |
| | | removeRuleItem(index,row){ |
| | | this.formData.ruleItemList.splice(index, 1); |
| | | }, |
| | | |
| | | |
| | | } |
| | | |
| | | }); |
| | | |
| | | |
| | | </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"/> |
| | | <LINK rel="Bookmark" href="../images/favicon.ico"> |
| | | <!-- 本框架基本脚本和样式 --> |
| | | <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> |
| | | <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> |
| | | <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> |
| | | <title></title> |
| | | <style> |
| | | .panel-body{ |
| | | overflow: hidden; |
| | | } |
| | | .buttonPanel{ |
| | | background: #ffffff; |
| | | padding: 10px 10px ; |
| | | margin: 0px 0px 10px 0px; |
| | | } |
| | | .rowPanel{ |
| | | background: #ffffff; |
| | | padding: 0px 10px ; |
| | | padding-top: 10px; |
| | | margin: 0px 0px 10px 0px; |
| | | } |
| | | .paginationStyle{ |
| | | background: #ffffff; |
| | | padding: 10px 10px; |
| | | margin: 0px 0px 10px 0px; |
| | | text-align: right; |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | | <div class="panel-body" id="app"> |
| | | |
| | | <el-row class="buttonPanel"> |
| | | <el-button @click="exportExcel" type="primary" >导出</el-button> |
| | | </el-row> |
| | | |
| | | <el-row class="rowPanel" > |
| | | <el-form ref="form" :model="form" inline > |
| | | |
| | | <el-form-item label="业绩规则" > |
| | | <el-select v-model="form.achieveRuleId" filterable placeholder="请选择业绩规则"> |
| | | <el-option |
| | | v-for="item in achieveRulsList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="员工姓名" > |
| | | <el-input v-model="form.staffName"></el-input> |
| | | </el-form-item> |
| | | |
| | | |
| | | <el-form-item label="统计门店" > |
| | | <el-select v-model="form.shopId" placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in shopList" |
| | | :key="item.shopShortName" |
| | | :label="item.shopShortName" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | |
| | | <el-form-item label="订单类型" > |
| | | <el-select v-model="form.orderType" placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in orderTypeList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="统计时间" prop="datetimeArr"> |
| | | <el-date-picker |
| | | v-model="form.datetimeArr" |
| | | type="daterange" |
| | | range-separator="至" format="yyyy-MM-dd HH:mm" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | |
| | | <el-button type="primary" @click="search" >搜索</el-button> |
| | | <el-button @click="resetForm('form')">重置</el-button> |
| | | </el-form> |
| | | </el-row> |
| | | |
| | | <el-row class="table-style" > |
| | | |
| | | <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange"> |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="ruleName" |
| | | label="规则名称" |
| | | width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="shopName" |
| | | label="门店名称" |
| | | show-overflow-tooltip |
| | | width="240"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="guwen" |
| | | label="业绩归属人" |
| | | show-overflow-tooltip |
| | | width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createBy" |
| | | label="业绩创建人" |
| | | show-overflow-tooltip |
| | | width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="zkTotal" |
| | | label="订单金额"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="goodsCash" |
| | | label="现金"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="cardCash" |
| | | label="划扣"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="hisConsume" |
| | | label="本金消耗"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="freeConsume" |
| | | label="赠送消耗"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="projPercentage" |
| | | label="服务提成"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="numberOfPeople" |
| | | label="人头"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="projNum" |
| | | label="项目个数"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="projTime" |
| | | label="服务时间"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | sortable="custom" |
| | | prop="orderType" |
| | | label="订单类型"> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | | </el-row> |
| | | <el-row class="paginationStyle" > |
| | | <el-pagination background |
| | | @size-change="changePageSize" |
| | | @current-change="changeCurrentPage" |
| | | :current-page="table.currentPage" |
| | | :page-sizes="[10, 20, 30, 50]" |
| | | :page-size="table.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="table.total"> |
| | | </el-pagination> |
| | | </el-row> |
| | | |
| | | </div> |
| | | </body> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/layer/layer.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="@{/plugin/moment.min.js}"></script> |
| | | <script type="text/javascript" th:inline="javascript"> |
| | | |
| | | var vue = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | table:{ |
| | | rows:[], |
| | | total:0, |
| | | pageSize:10, |
| | | currentPage:1, |
| | | }, |
| | | form:{ |
| | | achieveRuleId:null, |
| | | staffName:null, |
| | | shopId:null, |
| | | orderType:'', |
| | | order:'', |
| | | sort:'', |
| | | beginTime:'', |
| | | endTime:'', |
| | | }, |
| | | height:'calc(100vh - 240px)', |
| | | |
| | | //提成规则 |
| | | achieveRulsList:[], |
| | | //业绩用户列表 |
| | | userList: [], |
| | | shopList:[{id:0,shopShortName:'全部'}], |
| | | |
| | | orderTypeList:[ |
| | | {value:'',label:'全部'}, |
| | | {value:'订单',label:'订单'}, |
| | | {value:'服务单',label:'服务单'}, |
| | | |
| | | ], |
| | | }, |
| | | created: function () { |
| | | let _this=this; |
| | | //获取业绩用户列表 |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | url: basePath + '/admin/shopAll', |
| | | callback: function (data) { |
| | | _this.userList = data.rows; |
| | | } |
| | | }); |
| | | AjaxProxy.requst({ |
| | | app:_this, |
| | | url:basePath+"/admin/shopInfo/findAll", |
| | | callback:function (data) { |
| | | data.rows.forEach(shop=>{ |
| | | _this.shopList.push(shop); |
| | | }); |
| | | } |
| | | |
| | | }) |
| | | this.getAchieveRule(); |
| | | this.loadData(); |
| | | window.addEventListener("keydown", this.keydown); |
| | | }, |
| | | methods: { |
| | | changePageSize(val) { |
| | | this.table.pageSize = val; |
| | | this.loadData(); |
| | | }, |
| | | changeCurrentPage(val) { |
| | | this.table.currentPage = val; |
| | | this.loadData(); |
| | | }, |
| | | resetForm(formName) { |
| | | this.$refs[formName].resetFields(); |
| | | this.form={ |
| | | achieveRuleId:null, |
| | | staffName:null, |
| | | shopId:null, |
| | | orderType:'', |
| | | order:'', |
| | | sort:'', |
| | | beginTime:'', |
| | | endTime:'', |
| | | }; |
| | | }, |
| | | sortChange:function (column){ |
| | | if(column.order){ |
| | | if(column.order.indexOf("desc")){ |
| | | this.form.order="desc"; |
| | | }else{ |
| | | this.form.order="asc"; |
| | | } |
| | | this.form.sort=column.prop; |
| | | this.loadData(); |
| | | } |
| | | }, |
| | | loadData:function(){ |
| | | let _this = this; |
| | | let data=_this.getRequestParam(); |
| | | data.pageSize=_this.table.pageSize; |
| | | data.pageNum=_this.table.currentPage; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data:data, |
| | | url: basePath + '/admin/achieve/achieveNewStatistics', |
| | | callback: function (data) { |
| | | _this.table.rows = data.rows; |
| | | _this.table.total=data.total; |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * 获取规则 |
| | | */ |
| | | getAchieveRule(){ |
| | | let _this = this; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data: {pageNum:1,pageSize:1000}, |
| | | url: basePath + "/admin/achieveRule/selectList", |
| | | callback: function (data) { |
| | | _this.achieveRulsList=data.rows; |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | getRequestParam(){ |
| | | let _this = this; |
| | | return { |
| | | achieveRuleId:_this.form.achieveRuleId, |
| | | staffName:_this.form.staffName, |
| | | shopId:_this.form.shopId, |
| | | orderType:_this.form.orderType, |
| | | beginTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[0]).format("YYYY-MM-DD HH:mm"):'', |
| | | endTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[1]).format("YYYY-MM-DD HH:mm"):'', |
| | | order:_this.form.order, |
| | | sort:_this.form.sort, |
| | | } |
| | | }, |
| | | search:function(){ |
| | | this.table.currentPage=1; |
| | | this.loadData(); |
| | | }, |
| | | keydown(evt){ |
| | | if(evt.keyCode==13) { |
| | | this.search(); |
| | | } |
| | | }, |
| | | |
| | | //导出 |
| | | exportExcel(){ |
| | | window.location.href=basePath+"/admin/achieve/exportAchieveNewStatisticsExcel?"+MTools.jsonToUrlParam(this.getRequestParam()); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | |
| | | </script> |
| | | </body> |
| | | </html> |
| | |
| | | <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="@{/plugin/moment.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> |
| | | <script type="text/javascript" th:inline="javascript"> |
| | | var vue = new Vue({ |
| | | el : "#app", |
| | |
| | | }, |
| | | methods : { |
| | | queryTableData () { |
| | | |
| | | let _this = this; |
| | | var form = _this.form; |
| | | var page = _this.page; |
| | | var params = _this.form; |
| | | let form = _this.form; |
| | | let page = _this.page; |
| | | let params = _this.form; |
| | | params.limit = page.size; |
| | | params.offset = (page.currentPage - 1) * page.size; |
| | | |
| | |
| | | params.beginTime = form.timeRange?moment(form.timeRange[0]).format("YYYY-MM-DD HH:mm"):''; |
| | | params.endTime = form.timeRange?moment(form.timeRange[1]).format("YYYY-MM-DD HH:mm"):''; |
| | | } |
| | | $.AjaxProxy({ |
| | | p:params |
| | | }).invoke(basePath + "/admin/achieve/findDailyInfoNew", function (loj) { |
| | | _this.tableData = loj.getValue("rows"); |
| | | _this.page.total = loj.getResult().total; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data: params, |
| | | url: basePath + "/admin/achieve/findDailyInfoNew", |
| | | callback: function (loj) { |
| | | _this.tableData = loj.rows; |
| | | _this.page.total = loj.total; |
| | | } |
| | | }); |
| | | }, |
| | | queryCustomColumns() { |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | |
| | | <el-col :offset="2" :span="10" v-if="form.goodType!='家居产品'"> |
| | | <el-form-item label="业绩规则" prop="achieveRuleId"> |
| | | <el-select v-model="form.achieveRuleId" filterable placeholder="请选择业绩规则"> |
| | | <el-option |
| | | v-for="item in achieveRulsList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | |
| | | |
| | | </el-row> |
| | | <el-row> |
| | |
| | | loading_zhk: false, |
| | | /******综合卡表格数据END********/ |
| | | |
| | | |
| | | //提成规则 |
| | | achieveRulsList:[], |
| | | |
| | | //默认充值卡选中项 |
| | | defaultCates: [], |
| | |
| | | useDateNum : '', |
| | | buyDateNum : '', |
| | | payMethods : '', |
| | | achieveRuleId:'', |
| | | |
| | | }, |
| | | submitUrl: '/admin/shoppinggoods/addShoppingGoods', |
| | | modifySubmitUrl: '/admin/shoppinggoods/modifyShoppingGoods', |
| | |
| | | this.getGoodstype(); |
| | | this.getDictionary(); |
| | | this.getShopInfo(); |
| | | this.getAchieveRule(); |
| | | if(goodType=='家居产品'){ |
| | | this.getSupplierList(); |
| | | } |
| | |
| | | methods: { |
| | | |
| | | /** |
| | | * 获取规则 |
| | | */ |
| | | getAchieveRule(){ |
| | | let _this = this; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data: {pageNum:1,pageSize:1000}, |
| | | url: basePath + "/admin/achieveRule/selectList", |
| | | callback: function (data) { |
| | | _this.achieveRulsList=data.rows; |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * 商品分类树形组件格式化 |
| | | */ |
| | | normalizer(node) { |
| | |
| | | <option value=''>请选择项目状态</option> |
| | | </select> |
| | | </div> |
| | | <div class="form-group mr-20"> |
| | | <label for="staus">业绩规则</label> |
| | | <select class="form-control autoFull" name="achieveRuleId" |
| | | data-filed="name" |
| | | data-value="id" |
| | | th:data-url="@{/admin/achieveRule/selectListForm}" |
| | | data-param="{pageNum:1,pageSize:1000}"> |
| | | <option value=''>请选择业绩规则</option> |
| | | </select> |
| | | </div> |
| | | |
| | | <div class="form-group mr-20"> |
| | | <label for="isPresent">是否赠送</label> |
| | |
| | | <th data-field="isPresent">是否赠送</th> |
| | | <th data-field="goodType" data-sortable="true">类型</th> |
| | | <th data-field="cateName">分类</th> |
| | | <th data-field="achieveRuleName" >业绩规则</th> |
| | | <th data-field="createTime" data-sortable="true" data-formatter="MGrid.getTime">创建时间</th> |
| | | </tr> |
| | | </thead> |
| | |
| | | <option value=''>请选择项目状态</option> |
| | | </select> |
| | | </div> |
| | | <div class="form-group mr-20"> |
| | | <label for="staus">业绩规则</label> |
| | | <select class="form-control autoFull" name="achieveRuleId" |
| | | data-filed="name" |
| | | data-value="id" |
| | | th:data-url="@{/admin/achieveRule/selectListForm}" |
| | | data-param="{pageNum:1,pageSize:1000}"> |
| | | <option value=''>请选择业绩规则</option> |
| | | </select> |
| | | </div> |
| | | |
| | | <div class="form-group mr-20"> |
| | | <label for="isPresent">是否赠送</label> |
| | |
| | | <th data-field="isPresent">是否赠送</th> |
| | | <th data-field="goodType" data-sortable="true">类型</th> |
| | | <th data-field="cateName" >分类</th> |
| | | <th data-field="achieveRuleName" >业绩规则</th> |
| | | <th data-field="createTime" data-sortable="true" data-formatter="MGrid.getTime">创建时间</th> |
| | | </tr> |
| | | </thead> |
| | |
| | | <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="@{/plugin/moment.min.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> |
| | | <script type="text/javascript" th:inline="javascript"> |
| | | var vue = new Vue({ |
| | | el : "#app", |
| | |
| | | }, |
| | | methods : { |
| | | queryTableData () { |
| | | |
| | | let _this = this; |
| | | var form = _this.form; |
| | | var page = _this.page; |
| | | var params = _this.form; |
| | | let form = _this.form; |
| | | let page = _this.page; |
| | | let params = _this.form; |
| | | params.limit = page.size; |
| | | params.offset = (page.currentPage - 1) * page.size; |
| | | |
| | |
| | | params.beginTime = form.timeRange?moment(form.timeRange[0]).format("YYYY-MM-DD HH:mm"):''; |
| | | params.endTime = form.timeRange?moment(form.timeRange[1]).format("YYYY-MM-DD HH:mm"):''; |
| | | } |
| | | $.AjaxProxy({ |
| | | p:params |
| | | }).invoke(basePath + "/admin/achieve/findDailyInfoNew", function (loj) { |
| | | _this.tableData = loj.getValue("rows"); |
| | | _this.page.total = loj.getResult().total; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | data: params, |
| | | url: basePath + "/admin/achieve/findDailyInfoNew", |
| | | callback: function (loj) { |
| | | _this.tableData = loj.rows; |
| | | _this.page.total = loj.total; |
| | | } |
| | | }); |
| | | }, |
| | | queryCustomColumns() { |
| | |
| | | <label class="col-sm-2 control-label">配送方式 |
| | | </label> |
| | | <div class="col-sm-4"> |
| | | <input autocomplete="off" type="text" class="form-control" readonly="readonly" |
| | | th:value="${orderInfo.shippingMethod}" nullmsg="订单备注不能为空"> |
| | | <input autocomplete="off" type="text" class="form-control" readonly="readonly" th:if="${orderInfo.shippingMethod==1}" th:value="物流配送" > |
| | | <input autocomplete="off" type="text" class="form-control" readonly="readonly" th:if="${orderInfo.shippingMethod==2}" th:value="门店自提" > |
| | | </div> |
| | | </div> |
| | | <div class="form-group"> |
| | |
| | | package com.matrix; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.RandomUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.matrix.core.pojo.AjaxResult; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.system.activity.dao.ActivitySignAwardSetDao; |
| | | import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao; |
| | | import com.matrix.system.activity.dao.ActivitySignRecordDao; |
| | | import com.matrix.system.activity.dao.ActivitySignWriteoffDao; |
| | | import com.matrix.system.activity.entity.ActivitySignAwardSet; |
| | | import com.matrix.system.activity.entity.ActivitySignReceiveRecord; |
| | | import com.matrix.system.activity.entity.ActivitySignRecord; |
| | | import com.matrix.system.activity.entity.ActivitySignWriteoff; |
| | | import com.matrix.system.common.constance.AppConstance; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.hive.dao.SysVipInfoDao; |
| | | import com.matrix.system.score.entity.ScoreVipDetail; |
| | | import com.matrix.system.score.service.ScoreVipDetailService; |
| | | import com.matrix.system.shopXcx.api.dto.SeeAwardTextDto; |
| | | import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService; |
| | | import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil; |
| | | import com.matrix.system.shopXcx.api.vo.ActivitySignAwardSetVo; |
| | | import com.matrix.system.shopXcx.api.vo.ActivitySignRecordVo; |
| | | import com.matrix.system.shopXcx.api.vo.SignBasicInfoJsonVo; |
| | | import com.matrix.system.shopXcx.api.vo.SignBasicInfoVo; |
| | | import com.matrix.system.shopXcx.bean.ShopActivities; |
| | | import com.matrix.system.shopXcx.dao.ShopActivitiesDao; |
| | | import com.matrix.system.shopXcx.api.vo.LuckyDrawBasicInfoJsonVo; |
| | | import com.matrix.system.shopXcx.api.vo.LuckyDrawSuccessVo; |
| | | import com.matrix.system.shopXcx.api.vo.SeeAwardTextVo; |
| | | import com.matrix.system.shopXcx.bean.*; |
| | | import com.matrix.system.shopXcx.dao.*; |
| | | import org.junit.Test; |
| | | import org.junit.runner.RunWith; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | import org.springframework.test.context.junit4.SpringRunner; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | @RunWith(SpringRunner.class) |
| | | @SpringBootTest(classes = {ZqErpApplication.class},webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT) |
| | |
| | | private ActivitySignReceiveRecordDao activitySignReceiveRecordDao; |
| | | |
| | | @Autowired |
| | | private ActivitySignWriteoffDao activitgwLinkUsySignWriteoffDao; |
| | | private ActivitySignWriteoffDao activitySignWriteoffDao; |
| | | |
| | | @Autowired |
| | | private ActivitySignRecordDao activitySignRecordDao; |
| | | |
| | | public static void main(String[] args) { |
| | | System.out.println(getCurrentMonthDay(DateUtil.date())); |
| | | System.out.println(getMonthFullDay(DateUtil.year(DateUtil.date()),DateUtil.month(DateUtil.date())+1).toString()); |
| | | @Autowired |
| | | ShopDeliveryInfoDao shopDeliveryInfoDao; |
| | | |
| | | @Autowired |
| | | private ShopLogisticsInfoDao shopLogisticsInfoDao; |
| | | |
| | | @Autowired |
| | | private WxShopLogisticsQueryService wxShopLogisticsQueryService; |
| | | @Autowired |
| | | private ScoreVipDetailService scoreVipDetailService; |
| | | @Autowired |
| | | private ShopCouponDao shopCouponDao; |
| | | @Autowired |
| | | private WxShopCouponUtil wxShopCouponUtil; |
| | | @Autowired |
| | | private ShopCouponRecordDao shopCouponRecordDao; |
| | | @Autowired |
| | | SysVipInfoDao sysVipInfoDao; |
| | | |
| | | //获取奖品并索引+1 已领取+1 |
| | | public synchronized ActivitySignAwardSet updateShopActivityAndAwardSet(Long actId){ |
| | | //通过活动ID获取对应的活动 |
| | | ShopActivities shopActivities = shopActivitiesDao.selectById(actId); |
| | | String actContent = shopActivities.getActContent(); |
| | | LuckyDrawBasicInfoJsonVo luckyDrawBasicInfoJsonVo = JSON.parseObject(actContent, LuckyDrawBasicInfoJsonVo.class); |
| | | |
| | | //中奖索引 |
| | | Integer awrdLineIndex = luckyDrawBasicInfoJsonVo.getAwrdLineIndex(); |
| | | //中奖序列 |
| | | String awardLine = luckyDrawBasicInfoJsonVo.getAwardLine(); |
| | | ActivitySignAwardSet activitySignAwardSet = null; |
| | | if(awardLine.length() > 0) { |
| | | String substring = awardLine.substring(1, awardLine.length() - 1); |
| | | List<String> awardList = StrUtil.splitTrim(substring, ","); |
| | | if(awrdLineIndex < awardList.size()){ |
| | | //中奖 |
| | | Long awardId = Long.parseLong(awardList.get(awrdLineIndex + 1)); |
| | | ActivitySignAwardSet activitySignAwardSetGet = activitySignAwardSetDao.selectById(awardId); |
| | | //奖项库存数量 |
| | | int awardInventoryCnt = activitySignAwardSetGet.getAwardInventoryCnt(); |
| | | //已派发数量 |
| | | int awardDistributeCnt = activitySignAwardSetGet.getAwardDistributeCnt(); |
| | | if(awardDistributeCnt < awardInventoryCnt){ |
| | | activitySignAwardSet = activitySignAwardSetGet; |
| | | activitySignAwardSetGet.setAwardDistributeCnt(awardDistributeCnt +1); |
| | | activitySignAwardSetDao.updateById(activitySignAwardSetGet); |
| | | |
| | | //将基本信息转换成JSON字符串存储到活动主表的act_content字段 |
| | | luckyDrawBasicInfoJsonVo.setAwrdLineIndex(awrdLineIndex + 1); |
| | | String json= JSON.toJSONString(luckyDrawBasicInfoJsonVo); |
| | | shopActivities.setActContent(json); |
| | | shopActivitiesDao.updateByModel(shopActivities); |
| | | } |
| | | } |
| | | } |
| | | return activitySignAwardSet; |
| | | } |
| | | |
| | | @Test |
| | | public void getLuckDraw(){ |
| | | long actId = 85L; |
| | | Long userId = 85L; |
| | | Long companyId = 36L; |
| | | SysVipInfo user = sysVipInfoDao.selectById(userId); |
| | | /** |
| | | * 活动是否存在 |
| | | * 活动是否已经开始 |
| | | * 免费抽奖还是积分抽奖 |
| | | * 积分抽奖一次一次换 |
| | | * 减少积分 |
| | | * 是否中奖 |
| | | * 中奖规则 |
| | | * 奖品处理 |
| | | * |
| | | */ |
| | | //活动是否存在 |
| | | ShopActivities shopActivities = shopActivitiesDao.selectById(actId); |
| | | if (ObjectUtil.isEmpty(shopActivities)) { |
| | | // return AjaxResult.buildFailInstance("活动不存在"); |
| | | } |
| | | //活动是否已经开始 |
| | | Integer actStatus = shopActivities.getActStatus(); |
| | | if(ShopActivities.ACTSTATUS_STATUS_ING != actStatus) { |
| | | //return AjaxResult.buildFailInstance("活动未开始"); |
| | | } |
| | | //获取今日抽奖总次数 |
| | | String actContent = shopActivities.getActContent(); |
| | | 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 = 0; |
| | | if(failureScope >= randomInt){ |
| | | //生成领取记录 |
| | | ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); |
| | | activitySignReceiveRecord.setUserId(userId); |
| | | activitySignReceiveRecord.setReceiveTime(DateUtil.date()); |
| | | activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setActivityId(actId); |
| | | activitySignReceiveRecord.setCompanyId(companyId); |
| | | activitySignReceiveRecord.setCreateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setCreateTime(new Date()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setUpdateTime(new Date()); |
| | | activitySignReceiveRecordDao.insert(activitySignReceiveRecord); |
| | | |
| | | LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); |
| | | luckyDrawSuccessVo.setType(1); |
| | | luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); |
| | | luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); |
| | | luckyDrawSuccessVos.add(luckyDrawSuccessVo); |
| | | |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | ajaxResult.setData(luckyDrawSuccessVos); |
| | | //return ajaxResult; |
| | | } |
| | | //中奖 |
| | | if(failureScope < randomInt){ |
| | | //获取奖品 |
| | | ActivitySignAwardSet activitySignAwardSetCumulativeDay = updateShopActivityAndAwardSet(actId); |
| | | |
| | | if(ObjectUtil.isNotEmpty(activitySignAwardSetCumulativeDay)){ |
| | | LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); |
| | | luckyDrawSuccessVo.setType(2); |
| | | luckyDrawSuccessVo.setAwardType(activitySignAwardSetCumulativeDay.getAwardType()); |
| | | luckyDrawSuccessVo.setAwardName(activitySignAwardSetCumulativeDay.getAwardName()); |
| | | luckyDrawSuccessVo.setAwardImg(activitySignAwardSetCumulativeDay.getIntroduceImg()); |
| | | luckyDrawSuccessVo.setAwardState(activitySignAwardSetCumulativeDay.getAwardState()); |
| | | //新增奖品领取记录 |
| | | ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); |
| | | activitySignReceiveRecord.setUserId(userId); |
| | | activitySignReceiveRecord.setReceiveTime(DateUtil.date()); |
| | | activitySignReceiveRecord.setAwardId(activitySignAwardSetCumulativeDay.getId()); |
| | | activitySignReceiveRecord.setActivityId(actId); |
| | | activitySignReceiveRecord.setCompanyId(companyId); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setCreateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setCreateTime(new Date()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setUpdateTime(new Date()); |
| | | /** |
| | | * 奖项类型(1:自定义产品2:积分3:优惠券4:店铺商品) |
| | | * |
| | | * todo:4:店铺商品 |
| | | */ |
| | | //1:自定义产品 |
| | | if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_ING); |
| | | String randomString = StringUtils.getRandomString(8); |
| | | activitySignReceiveRecord.setWriteOffCode(randomString); |
| | | |
| | | /** |
| | | * 获取对应奖品的领取方式(兑奖方式(1:线下兑换2:物流配送3:客服兑换) |
| | | */ |
| | | luckyDrawSuccessVo.setWriteOffCode(randomString); |
| | | luckyDrawSuccessVo.setAwardWay(activitySignAwardSetCumulativeDay.getAwardWay()); |
| | | //2:物流配送 |
| | | luckyDrawSuccessVo.setOperationTip(activitySignAwardSetCumulativeDay.getOperationTip()); |
| | | //1:线下兑换 |
| | | if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay()) { |
| | | luckyDrawSuccessVo.setIntroduceTip(activitySignAwardSetCumulativeDay.getIntroduceTip()); |
| | | luckyDrawSuccessVo.setPrizeAddress(activitySignAwardSetCumulativeDay.getPrizeAddress()); |
| | | luckyDrawSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); |
| | | luckyDrawSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); |
| | | } |
| | | //3:客服兑换 |
| | | if(ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { |
| | | luckyDrawSuccessVo.setWechatImg(activitySignAwardSetCumulativeDay.getWechatImg()); |
| | | luckyDrawSuccessVo.setPrizeStartTime(activitySignAwardSetCumulativeDay.getPrizeStartTime()); |
| | | luckyDrawSuccessVo.setPrizeEndTime(activitySignAwardSetCumulativeDay.getPrizeEndTime()); |
| | | } |
| | | } |
| | | //2:积分 |
| | | if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | luckyDrawSuccessVo.setScoreCnt(activitySignAwardSetCumulativeDay.getScoreCnt()); |
| | | } |
| | | //3:优惠券 |
| | | if(ActivitySignAwardSet.AWARDTYPE_COUPON == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | luckyDrawSuccessVo.setCouponName(activitySignAwardSetCumulativeDay.getCouponName()); |
| | | //获取优惠券 |
| | | int couponId = Integer.parseInt(activitySignAwardSetCumulativeDay.getCouponId()); |
| | | ShopCoupon shopCoupon = shopCouponDao.selectById(couponId); |
| | | // 如果没有找到该优惠券 |
| | | if (shopCoupon == null) { |
| | | // return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到该优惠券!"); |
| | | } |
| | | // 如果优惠券有数量限制并且已经领完 |
| | | if (shopCoupon.getMaxQuantity() >= 0 && (shopCoupon.getMaxQuantity() <= shopCoupon.getQuantityReceive())) { |
| | | //return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券已领完!"); |
| | | } |
| | | boolean newPeople = wxShopCouponUtil.verifyIsNewPeople(userId); |
| | | // 如果改券是新人专属且当前用户不是新人 |
| | | if (AppConstance.COUPON_GET_LIMT_NEW.equals(shopCoupon.getGetLimit()) && !newPeople) { |
| | | // return new AjaxResult(AjaxResult.STATUS_FAIL, "该优惠券为新人专享优惠券!"); |
| | | } |
| | | ShopCouponRecord insertRecord = new ShopCouponRecord(); |
| | | insertRecord.setCreateBy(AppConstance.SYSTEM_USER); |
| | | insertRecord.setUpdateBy(AppConstance.SYSTEM_USER); |
| | | insertRecord.setCId(couponId); |
| | | insertRecord.setUserId(userId); |
| | | insertRecord.setIsUsing(2); |
| | | int i = shopCouponRecordDao.insert(insertRecord); |
| | | // 如果插入领取记录表失败 |
| | | if (i < 0) { |
| | | //return new AjaxResult(AjaxResult.STATUS_FAIL, "优惠券领取失败!"); |
| | | } |
| | | shopCoupon.setQuantityReceive(shopCoupon.getQuantityReceive() + 1); |
| | | shopCouponDao.updateByModel(shopCoupon); |
| | | } |
| | | activitySignReceiveRecordDao.insert(activitySignReceiveRecord); |
| | | //累计奖励积分,对应用户积分加减 |
| | | if(ActivitySignAwardSet.AWARDTYPE_SCORE == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | int awardType = activitySignAwardSetCumulativeDay.getAwardType(); |
| | | if(ActivitySignAwardSet.AWARDTYPE_SCORE == awardType){ |
| | | int scoreCnt = activitySignAwardSetCumulativeDay.getScoreCnt(); |
| | | if(scoreCnt > 0){ |
| | | scoreVipDetailService.addScore(userId,null,null,scoreCnt, |
| | | activitySignReceiveRecord.getId(), ScoreVipDetail.SCORE_VIP_TYPE_JOIN_ACTIVE,"签到积分"); |
| | | } |
| | | } |
| | | } |
| | | //生成核销记录 |
| | | if(ActivitySignAwardSet.AWARDTYPE_CUSTOMIZE == activitySignAwardSetCumulativeDay.getAwardType()) { |
| | | ActivitySignWriteoff activitySignWriteoff = new ActivitySignWriteoff(); |
| | | //线下兑换和客服兑换 |
| | | if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSetCumulativeDay.getAwardWay() |
| | | || ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSetCumulativeDay.getAwardWay()) { |
| | | activitySignWriteoff.setWriteoffCode(activitySignReceiveRecord.getWriteOffCode()); |
| | | } |
| | | activitySignWriteoff.setActId(actId); |
| | | activitySignWriteoff.setAwardId(activitySignAwardSetCumulativeDay.getId()); |
| | | activitySignWriteoff.setWinTime(DateUtil.date()); |
| | | if(ActivitySignAwardSet.AWARDWAY_TWO == activitySignAwardSetCumulativeDay.getAwardWay()) { |
| | | activitySignWriteoff.setState(ActivitySignWriteoff.STATE_TWO); |
| | | }else { |
| | | activitySignWriteoff.setState(ActivitySignWriteoff.STATE_ONE); |
| | | } |
| | | activitySignWriteoff.setUserId(userId); |
| | | activitySignWriteoff.setCompanyId(companyId); |
| | | activitySignWriteoff.setReceiveId(activitySignReceiveRecord.getId()); |
| | | activitySignWriteoff.setCreateBy(user.getVipName()); |
| | | activitySignWriteoff.setCreateTime(new Date()); |
| | | activitySignWriteoff.setUpdateBy(user.getVipName()); |
| | | activitySignWriteoff.setUpdateTime(new Date()); |
| | | activitySignWriteoffDao.insert(activitySignWriteoff); |
| | | } |
| | | luckyDrawSuccessVos.add(luckyDrawSuccessVo); |
| | | }else{ |
| | | //生成领取记录 |
| | | ActivitySignReceiveRecord activitySignReceiveRecord = new ActivitySignReceiveRecord(); |
| | | activitySignReceiveRecord.setUserId(userId); |
| | | activitySignReceiveRecord.setReceiveTime(DateUtil.date()); |
| | | activitySignReceiveRecord.setAwardId(activitySignAwardSetNormal.getId()); |
| | | activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_DONE); |
| | | activitySignReceiveRecord.setActivityId(actId); |
| | | activitySignReceiveRecord.setCompanyId(companyId); |
| | | activitySignReceiveRecord.setCreateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setCreateTime(new Date()); |
| | | activitySignReceiveRecord.setUpdateBy(user.getVipName()); |
| | | activitySignReceiveRecord.setUpdateTime(new Date()); |
| | | activitySignReceiveRecordDao.insert(activitySignReceiveRecord); |
| | | |
| | | LuckyDrawSuccessVo luckyDrawSuccessVo = new LuckyDrawSuccessVo(); |
| | | luckyDrawSuccessVo.setType(1); |
| | | luckyDrawSuccessVo.setAwardName(activitySignAwardSetNormal.getAwardName()); |
| | | luckyDrawSuccessVo.setAwardImg(activitySignAwardSetNormal.getIntroduceImg()); |
| | | luckyDrawSuccessVos.add(luckyDrawSuccessVo); |
| | | |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | ajaxResult.setData(luckyDrawSuccessVos); |
| | | //return ajaxResult; |
| | | } |
| | | } |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); |
| | | ajaxResult.setData(luckyDrawSuccessVos); |
| | | //return ajaxResult; |
| | | } |
| | | |
| | | @Test |
| | | public void awardInsert() { |
| | | //获取奖品的抽奖顺序 |
| | | List<ActivitySignAwardSetVo> activitySignAwardSetVos = new ArrayList<>(); |
| | | ActivitySignAwardSetVo activitySignAwardSetVo1 = new ActivitySignAwardSetVo(); |
| | | activitySignAwardSetVo1.setAwardInventoryCnt(10); |
| | | activitySignAwardSetVo1.setId(1L); |
| | | activitySignAwardSetVos.add(activitySignAwardSetVo1); |
| | | ActivitySignAwardSetVo activitySignAwardSetVo2 = new ActivitySignAwardSetVo(); |
| | | activitySignAwardSetVo2.setAwardInventoryCnt(10); |
| | | activitySignAwardSetVo2.setId(2L); |
| | | activitySignAwardSetVos.add(activitySignAwardSetVo2); |
| | | ActivitySignAwardSetVo activitySignAwardSetVo3 = new ActivitySignAwardSetVo(); |
| | | activitySignAwardSetVo3.setAwardInventoryCnt(2); |
| | | activitySignAwardSetVo3.setId(3L); |
| | | activitySignAwardSetVos.add(activitySignAwardSetVo3); |
| | | ActivitySignAwardSetVo activitySignAwardSetVo4 = new ActivitySignAwardSetVo(); |
| | | activitySignAwardSetVo4.setAwardInventoryCnt(1); |
| | | activitySignAwardSetVo4.setId(4L); |
| | | activitySignAwardSetVos.add(activitySignAwardSetVo4); |
| | | |
| | | //插入所有奖品后的集合 |
| | | LinkedList awardIdFinalList = new LinkedList<>(); |
| | | if(CollUtil.isNotEmpty(activitySignAwardSetVos)){ |
| | | //总数 |
| | | int maxCount = 0; |
| | | HashMap<Long, ActivitySignAwardSetVo> integerStringHashMap = new HashMap<>(); |
| | | for(ActivitySignAwardSetVo activitySignAwardSetVo : activitySignAwardSetVos){ |
| | | //总共派发数量 |
| | | int awardInventoryCnt = activitySignAwardSetVo.getAwardInventoryCnt(); |
| | | integerStringHashMap.put(activitySignAwardSetVo.getId(),activitySignAwardSetVo); |
| | | maxCount = maxCount + awardInventoryCnt; |
| | | } |
| | | HashMap<Long, ActivitySignAwardSetVo> sortHashMap = sortHashMap(integerStringHashMap,2); |
| | | HashMap<Long, ActivitySignAwardSetVo> sortHashMapAec = sortHashMap(integerStringHashMap,1); |
| | | //获取奖品最多的ID |
| | | Long maxAwardIds = sortHashMap.keySet().stream().findFirst().get(); |
| | | Long minAwardIds = sortHashMapAec.keySet().stream().findFirst().get(); |
| | | //获取最大长度的奖品集合 |
| | | List awardIdList = new LinkedList<Long>(); |
| | | for(int i = 0; i< maxCount ; i++){ |
| | | awardIdList.add(maxAwardIds); |
| | | } |
| | | |
| | | Iterator<Map.Entry<Long, ActivitySignAwardSetVo>> entries = sortHashMap.entrySet().iterator(); |
| | | //插入奖品 |
| | | while (entries.hasNext()) { |
| | | Map.Entry<Long, ActivitySignAwardSetVo> entry = entries.next(); |
| | | ActivitySignAwardSetVo activitySignAwardSetVo = entry.getValue(); |
| | | int awardInventoryCnt = activitySignAwardSetVo.getAwardInventoryCnt(); |
| | | Long awardIdNew = entry.getKey(); |
| | | if(awardIdNew != maxAwardIds){ |
| | | //分段之后的List |
| | | List splitLists = getSplitList(awardInventoryCnt, awardIdList); |
| | | for(int j = 0; j<awardInventoryCnt; j++){ |
| | | List splitList = (List) splitLists.get(j); |
| | | //中间插入对应的奖品ID,如果和maxAwardIds相同,则索引+1 |
| | | List<Long> listInsert = getListInsert(maxAwardIds, awardIdNew, splitList); |
| | | if(minAwardIds == awardIdNew){ |
| | | awardIdFinalList.addAll(listInsert); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | String awrdList = awardIdFinalList.toString(); |
| | | String substring = awrdList.substring(1, awrdList.length() - 1); |
| | | List<String> strings = Arrays.asList(substring); |
| | | System.out.println(strings); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | //中间插入对应的奖品ID,如果和maxAwardIds相同,则索引+1 |
| | | public static List<Long> getListInsert(Long awardOld,Long awardNew,List splitList){ |
| | | //中间位置索引 |
| | | LinkedList<Integer> indexs = new LinkedList<>(); |
| | | int groupFlag = splitList.size() % 2 == 0 ? (splitList.size() / 2) : (splitList.size() / 2 + 1); |
| | | for(int j = groupFlag-1; j < splitList.size();j++){ |
| | | if(splitList.get(j) == awardOld){ |
| | | indexs.add(j); |
| | | } |
| | | } |
| | | if(CollUtil.isNotEmpty(indexs)){ |
| | | splitList.set(indexs.get(0),awardNew); |
| | | }else{ |
| | | splitList.add(groupFlag,awardNew); |
| | | } |
| | | return splitList; |
| | | } |
| | | |
| | | //等份平分数组,最后剩余的添加到倒数第二个集合中 |
| | | public static List<List<Long>> getSplitList(int splitNum, List<Long> list) { |
| | | LinkedList<List<Long>> splitList = new LinkedList<>(); |
| | | // groupFlag >= 1 |
| | | int groupFlag = list.size() % splitNum == 0 ? (list.size() / splitNum) : (list.size() / splitNum); |
| | | if(groupFlag * splitNum < list.size()){ |
| | | for (int j = 1; j <= splitNum +1; j++) { |
| | | if ((j * groupFlag) <= list.size() ) { |
| | | splitList.add(list.subList(j * groupFlag - groupFlag, j * groupFlag)); |
| | | } else if ((j * groupFlag) > list.size()) { |
| | | splitList.add(list.subList(j * groupFlag - groupFlag, list.size())); |
| | | } |
| | | } |
| | | }else if(groupFlag * splitNum > list.size()){ |
| | | for (int j = 1; j < splitNum; j++) { |
| | | if ((j * groupFlag) <= list.size() ) { |
| | | splitList.add(list.subList(j * groupFlag - groupFlag, j * groupFlag)); |
| | | } else if ((j * groupFlag) > list.size()) { |
| | | splitList.add(list.subList(j * groupFlag - groupFlag, list.size())); |
| | | } |
| | | } |
| | | }else{ |
| | | for (int j = 1; j <= splitNum; j++) { |
| | | if ((j * groupFlag) <= list.size() ) { |
| | | splitList.add(list.subList(j * groupFlag - groupFlag, j * groupFlag)); |
| | | } else if ((j * groupFlag) > list.size()) { |
| | | splitList.add(list.subList(j * groupFlag - groupFlag, list.size())); |
| | | } |
| | | } |
| | | } |
| | | return splitList; |
| | | } |
| | | |
| | | |
| | | //对于奖品排序 1:升序进行排,2是倒序就是o2-o1 |
| | | public static HashMap<Long, ActivitySignAwardSetVo> sortHashMap(HashMap<Long, ActivitySignAwardSetVo> map,int type) { |
| | | // 首先拿到 map 的键值对集合 |
| | | Set<Map.Entry<Long, ActivitySignAwardSetVo>> entrySet = map.entrySet(); |
| | | // 将 set 集合转为 List 集合,为什么,为了使用工具类的排序方法 |
| | | List<Map.Entry<Long, ActivitySignAwardSetVo>> list = new ArrayList<Map.Entry<Long, ActivitySignAwardSetVo>>(entrySet); |
| | | // 使用 Collections 集合工具类对 list 进行排序,排序规则使用匿名内部类来实现 |
| | | Collections.sort(list, new Comparator<Map.Entry<Long, ActivitySignAwardSetVo>>() { |
| | | @Override |
| | | public int compare(Map.Entry<Long, ActivitySignAwardSetVo> o1, Map.Entry<Long, ActivitySignAwardSetVo> o2) { |
| | | if(type == 2){ |
| | | //按照要求根据 升序进行排,如果是倒序就是o2-o1 |
| | | return o2.getValue().getAwardInventoryCnt() - o1.getValue().getAwardInventoryCnt(); |
| | | } |
| | | return o1.getValue().getAwardInventoryCnt() - o2.getValue().getAwardInventoryCnt(); |
| | | } |
| | | }); |
| | | //创建一个新的有序的 HashMap 子类的集合 |
| | | LinkedHashMap<Long, ActivitySignAwardSetVo> linkedHashMap = new LinkedHashMap<Long, ActivitySignAwardSetVo>(); |
| | | //将 List 中的数据存储在 LinkedHashMap 中 |
| | | for (Map.Entry<Long, ActivitySignAwardSetVo> entry : list) { |
| | | linkedHashMap.put(entry.getKey(), entry.getValue()); |
| | | } |
| | | //返回结果 |
| | | return linkedHashMap; |
| | | } |
| | | |
| | | /** |
| | |
| | | // } |
| | | @Test |
| | | public void clickSign() { |
| | | long actId = 74L; |
| | | long awardId = 10; |
| | | Long userId = 30L; |
| | | Long companyId = 36L; |
| | | //获取签到活动的信息 |
| | | SignBasicInfoVo signBasicInfoVo = new SignBasicInfoVo(); |
| | | AjaxResult ajaxResult = new AjaxResult(); |
| | | SeeAwardTextDto seeAwardTextDto = new SeeAwardTextDto(); |
| | | seeAwardTextDto.setAwardId(awardId); |
| | | seeAwardTextDto.setCompanyId(companyId); |
| | | seeAwardTextDto.setUserId(userId); |
| | | logisticsInsure(seeAwardTextDto); |
| | | |
| | | ShopActivities shopActivities = shopActivitiesDao.selectOneByCompanyIdAndActTypeAndActStatus(companyId,ShopActivities.ACTIVITIES_TYPE_SIGN,ShopActivities.ACTSTATUS_STATUS_ING); |
| | | |
| | | signBasicInfoVo.setActName(shopActivities.getActName()); |
| | | signBasicInfoVo.setActCode(shopActivities.getActCode()); |
| | | signBasicInfoVo.setId(shopActivities.getId()); |
| | | String actContent = shopActivities.getActContent(); |
| | | SignBasicInfoJsonVo signBasicInfoJsonVo = JSON.parseObject(actContent, SignBasicInfoJsonVo.class); |
| | | signBasicInfoVo.setSignBasicInfoJsonVo(signBasicInfoJsonVo); |
| | | |
| | | List<ActivitySignAwardSetVo> activitySignAwardSetVos = activitySignAwardSetDao |
| | | .selectListByActIDAndCompanyId(actId,companyId,ActivitySignAwardSet.AWARDSTATE_WORK); |
| | | signBasicInfoVo.setActivitySignAwardSetVos(activitySignAwardSetVos); |
| | | |
| | | //今日是否已经参与 |
| | | ActivitySignRecord activitySignRecord = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,new Date()); |
| | | if(ObjectUtil.isNotEmpty(activitySignRecord)) { |
| | | signBasicInfoVo.setJoinState(SignBasicInfoVo.JOINSTATE_SIGN); |
| | | }else { |
| | | signBasicInfoVo.setJoinState(SignBasicInfoVo.JOINSTATE_NOTSIGN); |
| | | } |
| | | /** |
| | | * 默认获取当前月份 |
| | | * 获取当前月份的天数 |
| | | */ |
| | | List<ActivitySignRecordVo> activitySignRecordVos = new ArrayList<>(); |
| | | //获取当前月的第一天是星期几 |
| | | DateTime dateTime = DateUtil.beginOfMonth(DateUtil.date()); |
| | | int i = DateUtil.dayOfWeek(dateTime); |
| | | for(int j = 1;j<i;j++){ |
| | | ActivitySignRecordVo activitySignRecordVoNull = new ActivitySignRecordVo(); |
| | | activitySignRecordVos.add(activitySignRecordVoNull); |
| | | public AjaxResult logisticsInsure(@RequestBody @Validated SeeAwardTextDto seeAwardTextDto) { |
| | | SeeAwardTextVo seeAwardTextVO = activitySignReceiveRecordDao.selectSeeAwardTextVOById(seeAwardTextDto); |
| | | if(ObjectUtil.isEmpty(seeAwardTextVO)){ |
| | | return AjaxResult.buildFailInstance("奖品信息无法查看"); |
| | | } |
| | | List<String> monthFullDays = getMonthFullDay(DateUtil.year(DateUtil.date()), DateUtil.month(DateUtil.date()) + 1); |
| | | for(String monthFullDay : monthFullDays){ |
| | | ActivitySignRecordVo activitySignRecordVo = new ActivitySignRecordVo(); |
| | | activitySignRecordVo.setSignTime(monthFullDay); |
| | | activitySignRecordVo.setActivityId(actId); |
| | | activitySignRecordVo.setCompanyId(companyId); |
| | | //对应日期是否已签到 |
| | | Date date = DateUtil.parse(monthFullDay); |
| | | ActivitySignRecord activitySignRecordDone = activitySignRecordDao.selectOneByActIdAndUserIdLikesignTime(actId,userId,date); |
| | | if(ObjectUtil.isNotEmpty(activitySignRecordDone)){ |
| | | activitySignRecordVo.setState(1); |
| | | }else{ |
| | | activitySignRecordVo.setState(2); |
| | | long receiveId = seeAwardTextVO.getId(); |
| | | //获取核销记录的ID |
| | | ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectActivitySignWriteoffByUserIDAndReceiveId(seeAwardTextDto.getUserId(),receiveId); |
| | | if(ObjectUtil.isNotEmpty(activitySignWriteoff)){ |
| | | Integer logisticsId = activitySignWriteoff.getLogisticsId(); |
| | | ShopDeliveryInfo shopDeliveryInfo = shopDeliveryInfoDao.selectById(logisticsId); |
| | | if(ObjectUtil.isNotEmpty(shopDeliveryInfo)){ |
| | | //查看物流信息 |
| | | wxShopLogisticsQueryService.selectLogisticsInfo(shopDeliveryInfo); |
| | | List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId()); |
| | | seeAwardTextVO.setShopLogisticsInfos(shopLogisticsInfos); |
| | | } |
| | | activitySignRecordVos.add(activitySignRecordVo); |
| | | } |
| | | signBasicInfoVo.setActivitySignRecords(activitySignRecordVos); |
| | | |
| | | //累计签到日期 |
| | | int cumulativeDay = getCumulativeDay(actId, userId, DateUtil.date(), 0); |
| | | signBasicInfoVo.setActAumulativeDay(cumulativeDay); |
| | | System.out.println(signBasicInfoVo); |
| | | AjaxResult result=AjaxResult.buildSuccessInstance(seeAwardTextVO); |
| | | return result; |
| | | } |
| | | /** |
| | | * 获取累计签到天数 |
| | |
| | | package com.matrix; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.matrix.component.redis.RedisClient; |
| | | import com.matrix.core.constance.MatrixConstance; |
| | | import com.matrix.core.tools.LogUtil; |
| | | import com.matrix.system.common.bean.BusParameterSettings; |
| | | import com.matrix.system.common.bean.SysFunction; |
| | | import com.matrix.system.common.dao.BusParameterSettingsDao; |
| | | import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant; |
| | | import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao; |
| | | import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao; |
| | | import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; |
| | | import com.matrix.system.fenxiao.entity.ShopSalesmanOrder; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.hive.dao.SysOrderDao; |
| | | import com.matrix.system.hive.dao.SysOrderItemDao; |
| | | import com.matrix.system.hive.dao.SysVipInfoDao; |
| | | import com.matrix.system.hive.service.CodeService; |
| | | import com.matrix.system.hive.service.ShoppingGoodsService; |
| | | import com.matrix.system.hive.service.SysOrderService; |
| | | import com.matrix.system.hive.service.SysVipInfoService; |
| | | import com.matrix.system.hive.service.imp.SysVipInfoServiceImpl; |
| | | import com.matrix.system.score.dao.ScoreVipDetailDao; |
| | | import com.matrix.system.score.service.ScoreVipDetailService; |
| | | import com.matrix.system.shopXcx.bean.ShopOrder; |
| | | import com.matrix.system.shopXcx.bean.ShopOrderDetails; |
| | | import com.matrix.system.shopXcx.bean.ShopProduct; |
| | | import com.matrix.system.shopXcx.dao.ShopOrderDao; |
| | | import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao; |
| | | import com.matrix.system.shopXcx.dao.ShopOrderV2Dao; |
| | | import com.matrix.system.shopXcx.dao.ShopSkuDao; |
| | | import com.matrix.system.shopXcx.mqTask.OrderDingDingNoticeTask; |
| | | import com.rabbitmq.client.Delivery; |
| | | import org.junit.Test; |
| | | import org.junit.runner.RunWith; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | import org.springframework.test.annotation.Rollback; |
| | | import org.springframework.test.context.junit4.SpringRunner; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 测试类示例 |
| | |
| | | OrderDingDingNoticeTask orderDingDingNoticeTask; |
| | | |
| | | @Test |
| | | @Rollback |
| | | public void testNoticeTask() throws IOException { |
| | | orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes())); |
| | | // orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes())); |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
New file |
| | |
| | | package com.matrix; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.matrix.component.redis.RedisClient; |
| | | import com.matrix.core.constance.MatrixConstance; |
| | | import com.matrix.core.tools.LogUtil; |
| | | import com.matrix.system.common.bean.BusParameterSettings; |
| | | import com.matrix.system.common.bean.SysFunction; |
| | | import com.matrix.system.common.dao.BusParameterSettingsDao; |
| | | import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant; |
| | | import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao; |
| | | import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao; |
| | | import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; |
| | | import com.matrix.system.fenxiao.entity.ShopSalesmanOrder; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.hive.dao.SysOrderDao; |
| | | import com.matrix.system.hive.dao.SysOrderItemDao; |
| | | import com.matrix.system.hive.dao.SysVipInfoDao; |
| | | import com.matrix.system.hive.service.CodeService; |
| | | import com.matrix.system.hive.service.ShoppingGoodsService; |
| | | import com.matrix.system.hive.service.SysOrderService; |
| | | import com.matrix.system.hive.service.SysVipInfoService; |
| | | import com.matrix.system.hive.service.imp.SysVipInfoServiceImpl; |
| | | import com.matrix.system.score.dao.ScoreVipDetailDao; |
| | | import com.matrix.system.score.service.ScoreVipDetailService; |
| | | import com.matrix.system.shopXcx.bean.ShopOrder; |
| | | import com.matrix.system.shopXcx.bean.ShopOrderDetails; |
| | | import com.matrix.system.shopXcx.bean.ShopProduct; |
| | | import com.matrix.system.shopXcx.dao.ShopOrderDao; |
| | | import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao; |
| | | import com.matrix.system.shopXcx.dao.ShopOrderV2Dao; |
| | | import com.matrix.system.shopXcx.dao.ShopSkuDao; |
| | | import com.matrix.system.shopXcx.mqTask.OrderDingDingNoticeTask; |
| | | import org.junit.Test; |
| | | import org.junit.runner.RunWith; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | import org.springframework.test.annotation.Rollback; |
| | | import org.springframework.test.context.junit4.SpringRunner; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 测试类示例 |
| | | * |
| | | * @author jiangyouyao |
| | | * @email 512061637@qq.com |
| | | * @date 2019年2月25日 |
| | | */ |
| | | @RunWith(SpringRunner.class) |
| | | @SpringBootTest(classes = {ZqErpApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) |
| | | public class JyyTests2 { |
| | | |
| | | @Autowired |
| | | ShopOrderDao shopOrderDao; |
| | | @Autowired |
| | | ShopOrderDetailsDao shopOrderDetailsDao; |
| | | |
| | | @Autowired |
| | | SysVipInfoService sysVipInfoService; |
| | | |
| | | |
| | | @Autowired |
| | | private SysVipInfoDao vipDap; |
| | | |
| | | @Autowired |
| | | SysVipInfoDao vipDao; |
| | | |
| | | @Autowired |
| | | CodeService codeService; |
| | | |
| | | @Autowired |
| | | SysOrderDao sysOrderDao; |
| | | |
| | | @Autowired |
| | | ShoppingGoodsService shoppingGoodsService; |
| | | |
| | | @Autowired |
| | | SysOrderItemDao orderItemDao; |
| | | |
| | | @Autowired |
| | | SysOrderService orderService; |
| | | |
| | | @Autowired |
| | | ShopSkuDao shopSkuDao; |
| | | |
| | | @Autowired |
| | | BusParameterSettingsDao parameterSettingsDao; |
| | | |
| | | |
| | | @Autowired |
| | | private ShopSalesmanOrderDao shopSalesmanOrderDao; |
| | | |
| | | @Autowired |
| | | private ShopSalesmanGradeDao shopSalesmanGradeDao; |
| | | |
| | | |
| | | @Test |
| | | @Rollback |
| | | public void testNoticeTask() throws IOException { |
| | | // orderDingDingNoticeTask.handle("",new Delivery(null,null,"1295".getBytes())); |
| | | |
| | | ShopOrder order=shopOrderDao.selectById(1353); |
| | | //判读客户是否存在上级,存在则产生上级的收益 |
| | | SysVipInfo sysVipInfo = sysVipInfoService.findById(order.getUserId()); |
| | | LogUtil.debug("处理分销订单userOpid={}",sysVipInfo.getOpenId()); |
| | | //判断是否重复生成 |
| | | QueryWrapper queryWrapper=new QueryWrapper(); |
| | | queryWrapper.eq("order_id",order.getId()); |
| | | Integer orderCount = shopSalesmanOrderDao.selectCount(queryWrapper); |
| | | ShopSalesmanOrder salesmanOrder=new ShopSalesmanOrder(); |
| | | salesmanOrder.setCompanyId(order.getCompanyId()); |
| | | salesmanOrder.setCreateBy(MatrixConstance.SYSTEM_USER); |
| | | salesmanOrder.setUpdateBy(MatrixConstance.SYSTEM_USER); |
| | | salesmanOrder.setCreateTime(new Date()); |
| | | salesmanOrder.setUpdateTime(new Date()); |
| | | salesmanOrder.setOrderId(Long.parseLong(order.getId()+"")); |
| | | salesmanOrder.setUserId(order.getUserId()); |
| | | salesmanOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES); |
| | | salesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS); |
| | | Double selfAmount=0D; |
| | | Double zk=1D; |
| | | //分销订单总额 |
| | | Double orderTotal=0D; |
| | | for (ShopOrderDetails item:order.getDetails() ){ |
| | | if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){ |
| | | orderTotal+=item.getTotalPrice().doubleValue(); |
| | | } |
| | | } |
| | | //自购返佣 |
| | | Integer isSales = sysVipInfo.getIsSales(); |
| | | if(SysVipInfo.IS_SALES == isSales){ |
| | | for (ShopOrderDetails item:order.getDetails() ){ |
| | | if(item.getShopProduct().getAbleSales()==ShopProduct.ABLE_SALES){ |
| | | //分销规则是否开启自购返佣 |
| | | BusParameterSettings zgfy = parameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_ZGFY, sysVipInfo.getCompanyId()); |
| | | //按分销等级计算 |
| | | ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade()); |
| | | if(ObjectUtil.isNotEmpty(zgfy)) { |
| | | //获取商品的自购返佣价格,如果没有设置,在去获取当前推广人的等级的自购返佣比例 |
| | | if(StrUtil.isNotEmpty(zgfy.getParamValue()) && |
| | | FenxiaoSettingConstant.FX_ZGFY_YES.equals(zgfy.getParamValue())) { |
| | | if(item.getShopSku().getSelfPrice() == null |
| | | ||item.getShopSku().getSealesPrice().doubleValue() == 0){ |
| | | selfAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSelfCommission()/100); |
| | | }else { |
| | | //按产品设置的自购返佣金额计算 |
| | | selfAmount+=item.getShopSku().getSelfPrice().doubleValue()*item.getCount(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //自购返佣记录 |
| | | if(selfAmount > 0) { |
| | | //整体的优惠金额折算成折扣,* 佣金 |
| | | zk=(order.getOrderMoney().doubleValue()-order.getPostage().doubleValue())/orderTotal; |
| | | selfAmount=selfAmount*zk; |
| | | salesmanOrder.setAmount(selfAmount); |
| | | salesmanOrder.setSalesUserId(order.getUserId()); |
| | | shopSalesmanOrderDao.insert(salesmanOrder); |
| | | } |
| | | } |
| | | |
| | | //存在上级 |
| | | if(sysVipInfo.getRecommendId()!=null) { |
| | | SysVipInfo salesMan=sysVipInfoService.findById(sysVipInfo.getRecommendId()); |
| | | Double salesAmount=0D; |
| | | Double invitationAmount=0D; |
| | | SysVipInfo invitationMan=null; |
| | | ShopSalesmanOrder invitationOrder=null; |
| | | boolean hasInvitationMan=salesMan.getRecommendId()!=null; |
| | | //判断推广员是否还存在上级,存在则计算邀请收益 |
| | | if(hasInvitationMan){ |
| | | invitationMan=sysVipInfoService.findById(salesMan.getRecommendId()); |
| | | invitationOrder=new ShopSalesmanOrder(); |
| | | BeanUtils.copyProperties(salesmanOrder,invitationOrder); |
| | | invitationOrder.setSalesUserId(invitationMan.getId()); |
| | | invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION); |
| | | } |
| | | //收益计算 |
| | | for (ShopOrderDetails item:order.getDetails() ){ |
| | | if(item.getShopProduct().getAbleSales()== ShopProduct.ABLE_SALES){ |
| | | //按分销等级计算 |
| | | ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade()); |
| | | //推广提成,按分销等级计算或者按产品设置的推广金额计算 |
| | | if(item.getShopSku().getSealesPrice()==null |
| | | ||item.getShopSku().getSealesPrice().doubleValue()==0){ |
| | | salesAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSealesCommission()/100); |
| | | }else{ |
| | | salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount(); |
| | | } |
| | | //邀请提成,获取商品的邀请提成价格和是否有上级推广人,如果没有设置,在去获取当前推广人的等级的自购返佣比例 |
| | | if(hasInvitationMan) { |
| | | if(item.getShopSku().getInvitationPrice() == null |
| | | ||item.getShopSku().getInvitationPrice().doubleValue() == 0){ |
| | | //获取上级的推广等级设置 |
| | | ShopSalesmanGrade invitationManGrade = shopSalesmanGradeDao.selectById(invitationMan.getSalesmanGrade()); |
| | | invitationAmount+=item.getTotalPrice().doubleValue()*(invitationManGrade.getInvitationCommission()/100); |
| | | }else { |
| | | //按产品设置的邀请提成价格计算 |
| | | invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //推广提成记录 |
| | | if(salesAmount>0){ |
| | | //整体的优惠金额折算成折扣,* 佣金 |
| | | zk=(order.getOrderMoney().doubleValue()-order.getPostage().doubleValue())/orderTotal; |
| | | salesAmount=salesAmount*zk; |
| | | salesmanOrder.setAmount(salesAmount); |
| | | salesmanOrder.setSalesUserId(sysVipInfo.getRecommendId()); |
| | | shopSalesmanOrderDao.insert(salesmanOrder); |
| | | } |
| | | //邀请提成记录 |
| | | if(invitationAmount > 0) { |
| | | //整体的优惠金额折算成折扣,* 佣金 |
| | | invitationAmount=invitationAmount*zk; |
| | | invitationOrder.setAmount(invitationAmount); |
| | | shopSalesmanOrderDao.insert(invitationOrder); |
| | | } |
| | | }else{ |
| | | LogUtil.debug("不存在父级userOpid={}",sysVipInfo.getOpenId()); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.matrix; |
| | | |
| | | import com.matrix.system.hive.bean.AchieveNew; |
| | | import com.matrix.system.hive.bean.SysOrderItem; |
| | | import com.matrix.system.hive.dao.AchieveNewDao; |
| | | import com.matrix.system.hive.dao.SysOrderDao; |
| | | import com.matrix.system.hive.dao.SysOrderItemDao; |
| | | import org.junit.Test; |
| | | import org.junit.runner.RunWith; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | import org.springframework.test.context.junit4.SpringRunner; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 测试类示例 |
| | | * |
| | | * @author jiangyouyao |
| | | * @email 512061637@qq.com |
| | | * @date 2019年2月25日 |
| | | */ |
| | | @RunWith(SpringRunner.class) |
| | | @SpringBootTest(classes = {ZqErpApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) |
| | | public class 四月份家居产品业绩恢复 { |
| | | |
| | | @Autowired |
| | | SysOrderDao sysOrderDao; |
| | | |
| | | @Autowired |
| | | SysOrderItemDao itemDao; |
| | | |
| | | @Autowired |
| | | AchieveNewDao achieveNewDao; |
| | | |
| | | |
| | | @Test |
| | | public void recoverAchieve() { |
| | | |
| | | AchieveNew queryAchieve=new AchieveNew(); |
| | | List<SysOrderItem> items = itemDao.selectDgd(); |
| | | for (SysOrderItem item : |
| | | items) { |
| | | if(item.getType().equals("家居产品")){ |
| | | queryAchieve.setOrderItemId(item.getId()); |
| | | List<AchieveNew> achieveNews = achieveNewDao.selectByModel(queryAchieve); |
| | | for (AchieveNew achieve : |
| | | achieveNews) { |
| | | if(achieve.getHisConsume()==null){ |
| | | achieve.setHisConsume(achieve.getGoodsCash()); |
| | | achieveNewDao.updateByModel(achieve); |
| | | System.out.println("更新业绩"+achieve.getId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | "compileHotReLoad": false, |
| | | "useMultiFrameRuntime": true, |
| | | "useApiHook": true, |
| | | "useApiHostProcess": false, |
| | | "babelSetting": { |
| | | "ignore": [], |
| | | "disablePlugins": [], |
| | | "outputPath": "" |
| | | }, |
| | | "enableEngineNative": false, |
| | | "bundle": false, |
| | | "useIsolateContext": true, |
| | | "useCompilerModule": true, |
| | | "userConfirmedUseCompilerModuleSwitch": false, |
| | | "userConfirmedBundleSwitch": false, |
| | | "packNpmManually": false, |
| | | "packNpmRelationList": [], |
| | | "enableEngineNative": false, |
| | | "minifyWXSS": true |
| | | }, |
| | | "compileType": "miniprogram", |