| @@ -1,321 +0,0 @@ | |||||
| package com.iformall.controller.basic; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.annotation.TenantIgnore; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.controller.mem.AsyncTask; | |||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.base.BaseEntity; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.enums.*; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.service.*; | |||||
| import com.iformall.utils.Constant; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.data.redis.core.StringRedisTemplate; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import org.springframework.web.multipart.MultipartFile; | |||||
| import java.io.BufferedInputStream; | |||||
| import java.io.File; | |||||
| import java.io.FileOutputStream; | |||||
| import java.io.IOException; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Arrays; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| import java.util.concurrent.TimeUnit; | |||||
| import java.util.stream.Collectors; | |||||
| /** | |||||
| * @author gongbiao | |||||
| */ | |||||
| @RestController | |||||
| @RequestMapping("merchantPoi") | |||||
| public class TtMerchantPoiController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private String fmUploadDir; | |||||
| @Autowired | |||||
| private TtMerchantPoiService ttMerchantPoiService; | |||||
| @Autowired | |||||
| private WxCouponChannelService wxCouponChannelService; | |||||
| @Autowired | |||||
| private WxCouponService wxCouponService; | |||||
| @Autowired | |||||
| StringRedisTemplate stringRedisTemplate; | |||||
| @Autowired | |||||
| private AsyncTask asyncTask; | |||||
| @ApiOperation("分页列表接口") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "列表") | |||||
| public ResultData list(@ModelAttribute TtMerchantPoi record, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::list"); | |||||
| if (null == record) record = new TtMerchantPoi(); | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||||
| final PageInfo<TtMerchantPoi> page = ttMerchantPoiService.listAsPage(record, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("根据id查询接口") | |||||
| @GetMapping("/findById") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "查询") | |||||
| public ResultData findById(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::findById"); | |||||
| if(id == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| TtMerchantPoi record = ttMerchantPoiService.getById(id); | |||||
| return new ResultData(record); | |||||
| } | |||||
| @ApiOperation("更新商户接口") | |||||
| @PostMapping("updateById") | |||||
| @SystemControllerLog(description = "更新") | |||||
| public ResultData updateById(@RequestBody TtMerchantPoi record) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::updateById"); | |||||
| if(record.getId() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| TtMerchantPoi merchantPoi = ttMerchantPoiService.getById(record.getId()); | |||||
| if(merchantPoi == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到修改的数据"); | |||||
| } | |||||
| if(!EnumSupplierMathStatus.match_update.getCode().equals(merchantPoi.getMatchStatus()) | |||||
| && !EnumSupplierMathStatus.match_fail.getCode().equals(merchantPoi.getMatchStatus())){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该状态不允许修改"); | |||||
| } | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| record.setMatchStatus(EnumSupplierMathStatus.match_update.getCode()); | |||||
| ttMerchantPoiService.updateById(record); | |||||
| return new ResultData(record); | |||||
| } | |||||
| @ApiOperation("新建匹配任务") | |||||
| @PostMapping("match") | |||||
| @SystemControllerLog(description = "新建匹配任务") | |||||
| public ResultData match(@RequestBody List<Long> ids) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::match"); | |||||
| if(ids == null || ids.isEmpty()){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| return ttMerchantPoiService.match(getTenantInfo(),ids); | |||||
| } | |||||
| @ApiOperation("重新匹配任务") | |||||
| @PostMapping("matchAgain") | |||||
| @SystemControllerLog(description = "重新匹配任务") | |||||
| public ResultData matchAgain(@RequestBody Map<String, Long> param) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::matchAgain"); | |||||
| Long id = param.get("id"); | |||||
| if(id == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| return ttMerchantPoiService.matchAgain(getTenantInfo(),id); | |||||
| } | |||||
| @ApiOperation("商铺同步") | |||||
| @PostMapping("merchantSync") | |||||
| @SystemControllerLog(description = "商铺同步") | |||||
| public ResultData merchantSync(@RequestBody Map<String, Long> param) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::merchantSync"); | |||||
| Long id = param.get("id"); | |||||
| if(id == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| return ttMerchantPoiService.merchantSync(getTenantInfo(),id); | |||||
| } | |||||
| @ApiOperation("商铺同步结果") | |||||
| @GetMapping("merchantQuery") | |||||
| @SystemControllerLog(description = "商铺同步") | |||||
| public ResultData merchantQuery(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::merchantQuery"); | |||||
| if(id == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| return ttMerchantPoiService.supplierQuery(getTenantInfo(),id); | |||||
| } | |||||
| // @ApiOperation("获取商品可用的POI") | |||||
| // @GetMapping("/findPoi") | |||||
| // @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| // @SystemControllerLog(description = "查询") | |||||
| // public ResultData findPoi(Long couponChannelId) { | |||||
| // logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::findPoi"); | |||||
| // if(couponChannelId == null){ | |||||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| // } | |||||
| // return ttMerchantPoiService.findPoi(getTenantInfo(),couponChannelId); | |||||
| // } | |||||
| // @ApiOperation("商品同步") | |||||
| // @PostMapping("spuSync") | |||||
| // @SystemControllerLog(description = "商品同步") | |||||
| // public ResultData spuSync(@RequestBody Map<String, String> param) { | |||||
| // logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::spuSync"); | |||||
| // String couponChannelIdStr = param.get("couponChannelId"); | |||||
| // Long couponChannelId = null; | |||||
| // try{ | |||||
| // couponChannelId = Long.parseLong(couponChannelIdStr); | |||||
| // }catch(Exception e){ | |||||
| // return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR); | |||||
| // } | |||||
| // if(couponChannelId == null){ | |||||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| // } | |||||
| //// String merchantIdStr = param.get("merchantIds"); | |||||
| //// List<Long> merchantIds = new ArrayList<>(); | |||||
| //// try{ | |||||
| //// List<String> strings = Arrays.asList(merchantIdStr.split(",")); | |||||
| //// merchantIds = strings.stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList()); | |||||
| //// }catch(Exception e){ | |||||
| //// return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR); | |||||
| //// } | |||||
| //// if(merchantIds == null || merchantIds.size() == 0){ | |||||
| //// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| //// } | |||||
| // return ttMerchantPoiService.spuSync(getTenantInfo(),couponChannelId,null); | |||||
| // } | |||||
| // @ApiOperation("商品同步查询") | |||||
| // @GetMapping("spuGet") | |||||
| // @SystemControllerLog(description = "商品同步查询") | |||||
| // public ResultData spuGet(Long couponChannelId) { | |||||
| // logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::spuGet"); | |||||
| // if(couponChannelId == null){ | |||||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| // } | |||||
| // return ttMerchantPoiService.spuGet(getTenantInfo(),couponChannelId); | |||||
| // } | |||||
| // | |||||
| // @ApiOperation("商品状态同步") | |||||
| // @PostMapping("spuStatusSync") | |||||
| // @SystemControllerLog(description = "商品状态同步") | |||||
| // public ResultData spuStatusSync(@RequestBody Map<String, Long> param) { | |||||
| // logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::spuStatusSync"); | |||||
| // Long couponChannelId = param.get("couponChannelId"); | |||||
| // if(couponChannelId == null){ | |||||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| // } | |||||
| // return ttMerchantPoiService.spuStatusSync(getTenantInfo(),couponChannelId); | |||||
| // } | |||||
| // | |||||
| // @ApiOperation("商品库存同步") | |||||
| // @PostMapping("spuStockSync") | |||||
| // @SystemControllerLog(description = "商品库存同步") | |||||
| // public ResultData spuStockSync(@RequestBody Map<String, Long> param) { | |||||
| // logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::spuStockSync"); | |||||
| // Long couponChannelId = param.get("couponChannelId"); | |||||
| // if(couponChannelId == null){ | |||||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| // } | |||||
| // return ttMerchantPoiService.spuStockSync(getTenantInfo(),couponChannelId); | |||||
| // } | |||||
| @TenantIgnore | |||||
| @PostMapping(value = "/importPoi", consumes = "multipart/*") | |||||
| @SystemControllerLog(description = "poi-导入数据") | |||||
| public ResultData importPoi(@RequestParam("file") MultipartFile mFile) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::importPoi"); | |||||
| if (mFile.isEmpty()) { | |||||
| throw new MallinkException(Result.ERROR, "上传文件不能为空"); | |||||
| } | |||||
| //得到当前用户ID | |||||
| final MallUserInfo user = getUser(); | |||||
| String userId = "" + user.getId(); | |||||
| String importKey = Constant.importMemPrev + userId; | |||||
| //查询当前用户得到的值是否为空,为空继续,不为空,返回模板正在导入 | |||||
| Boolean allCount = stringRedisTemplate.opsForHash().hasKey(importKey, "allCount"); | |||||
| if (allCount) { | |||||
| return new ResultData(Result.SUCCESS, "模板正在导入"); | |||||
| } | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "allCount", 0 + ""); | |||||
| stringRedisTemplate.expire(importKey,30, TimeUnit.MINUTES); | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "allSuccessCount", 0 + ""); | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "processCount", ""); | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "failCount", ""); | |||||
| String fpath = fmUploadDir; | |||||
| File targetFile = new File(fpath); | |||||
| if (!targetFile.exists()) { | |||||
| targetFile.mkdirs(); | |||||
| } | |||||
| String fileName = "poi" + Math.round(Math.random() * 100000000000L); | |||||
| int dot = mFile.getOriginalFilename().lastIndexOf('.'); | |||||
| fileName = fileName + mFile.getOriginalFilename().substring(dot, mFile.getOriginalFilename().length()); | |||||
| File lFile = new File(fpath + File.separator + fileName); | |||||
| FileOutputStream fos = null; | |||||
| BufferedInputStream fs = null; | |||||
| try { | |||||
| fos = new FileOutputStream(lFile); | |||||
| fs = (BufferedInputStream) mFile.getInputStream(); | |||||
| byte[] buffer = new byte[1024]; | |||||
| int len = 0; | |||||
| while ((len = fs.read(buffer)) != -1) { | |||||
| fos.write(buffer, 0, len); | |||||
| } | |||||
| fos.close(); | |||||
| fs.close(); | |||||
| } catch (Exception e) { | |||||
| stringRedisTemplate.expire(importKey,3,TimeUnit.SECONDS); | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "allCount", "1"); | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "failCount", "1"); | |||||
| logger.error(e.getMessage()); | |||||
| return new ResultData(ErrorCode.MEM_IMPORT_ERR.getCode(), "模板上传失败"); | |||||
| } finally { | |||||
| if (fos != null) { | |||||
| try { | |||||
| fos.close(); | |||||
| } catch (IOException e) { | |||||
| stringRedisTemplate.expire(importKey,3,TimeUnit.SECONDS); | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "allCount", "1"); | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "failCount", "1"); | |||||
| logger.error(e.getMessage()); | |||||
| return new ResultData(ErrorCode.MEM_IMPORT_ERR.getCode(), "模板上传失败"); | |||||
| } | |||||
| } | |||||
| if (fs != null) { | |||||
| try { | |||||
| fs.close(); | |||||
| } catch (IOException e) { | |||||
| stringRedisTemplate.expire(importKey,3,TimeUnit.SECONDS); | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "allCount", "1"); | |||||
| stringRedisTemplate.opsForHash().putIfAbsent(importKey, "failCount", "1"); | |||||
| logger.error(e.getMessage()); | |||||
| return new ResultData(ErrorCode.MEM_IMPORT_ERR.getCode(), "模板上传失败"); | |||||
| } | |||||
| } | |||||
| } | |||||
| asyncTask.importExcelPoiData(lFile, user, importKey); | |||||
| return new ResultData(Result.SUCCESS, "模板正在导入"); | |||||
| } | |||||
| } | |||||
| @@ -1,317 +0,0 @@ | |||||
| package com.iformall.controller.basic; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.TtPoiTakeRate; | |||||
| import com.iformall.domain.po.WxCoupon; | |||||
| import com.iformall.domain.po.base.BaseEntity; | |||||
| import com.iformall.enums.EnumCpsPlanContentType; | |||||
| import com.iformall.enums.EnumCpsPlanStatus; | |||||
| import com.iformall.enums.EnumCpsPlanType; | |||||
| import com.iformall.service.TtCouponGoodsService; | |||||
| import com.iformall.service.WxCouponService; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import java.util.HashMap; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| import java.util.stream.Collectors; | |||||
| /** | |||||
| * @author | |||||
| */ | |||||
| @RestController | |||||
| @RequestMapping("poiPlan") | |||||
| public class TtPoiPlanController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private TtCouponGoodsService ttCouponGoodsService; | |||||
| @Autowired | |||||
| private WxCouponService wxCouponService; | |||||
| @ApiOperation("分页列表接口") | |||||
| @GetMapping("takeRateList") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "列表") | |||||
| public ResultData takeRateList(@ModelAttribute TtPoiTakeRate record, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::list"); | |||||
| if (null == record) record = new TtPoiTakeRate(); | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||||
| final PageInfo<TtPoiTakeRate> page = ttCouponGoodsService.takeRateListAsPage(record, pageNum, pageSize); | |||||
| if(page.getList() != null && !page.getList().isEmpty()){ | |||||
| List<Long> couponIds = page.getList().stream().map(cc -> cc.getCouponId()).collect(Collectors.toList()); | |||||
| Map<Long, WxCoupon> couponMap = wxCouponService.getCouponMap(couponIds, getTenantInfo()); | |||||
| for (TtPoiTakeRate takeRate:page.getList()) { | |||||
| takeRate.setCoupon(couponMap.get(takeRate.getCouponId())); | |||||
| } | |||||
| } | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("通过id获取") | |||||
| @GetMapping("getTakeRate") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "列表") | |||||
| public ResultData getTakeRate(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::getTakeRate"); | |||||
| if(id == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| TtPoiTakeRate takeRateById = ttCouponGoodsService.getTakeRateById(getTenantInfo(), id); | |||||
| return new ResultData(takeRateById); | |||||
| } | |||||
| // @TenantIgnore | |||||
| @ApiOperation("通用计划分页列表接口") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({}) | |||||
| @SystemControllerLog(description = "列表") | |||||
| public ResultData list(Long couponId,Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] TtPoiPlanController::list"); | |||||
| if(couponId == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| if(pageNum == null){ | |||||
| pageNum = 1; | |||||
| } | |||||
| if(pageSize == null){ | |||||
| pageSize = 100; | |||||
| } | |||||
| return ttCouponGoodsService.poiPlanList(getTenantInfo(),couponId,pageNum,pageSize); | |||||
| } | |||||
| @ApiOperation("定向计划分页列表接口") | |||||
| @GetMapping("orientedList") | |||||
| @ApiImplicitParams({}) | |||||
| @SystemControllerLog(description = "列表") | |||||
| public ResultData orientedList(Long couponId,Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] TtPoiPlanController::orientedList"); | |||||
| if(couponId == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| if(pageNum == null){ | |||||
| pageNum = 1; | |||||
| } | |||||
| if(pageSize == null){ | |||||
| pageSize = 100; | |||||
| } | |||||
| return ttCouponGoodsService.poiOrientedPlanList(getTenantInfo(),couponId,pageNum,pageSize); | |||||
| } | |||||
| @ApiOperation("发布修改通用佣金计划") | |||||
| @PostMapping("save") | |||||
| @SystemControllerLog(description = "更新") | |||||
| public ResultData save(@RequestBody TtPoiTakeRate record) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::save"); | |||||
| if(record.getTakeRate() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品的抽佣率为空"); | |||||
| } | |||||
| if(record.getTakeRate() < 100 || record.getTakeRate() > 2900){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品的抽佣率需在万分位100-2900之间"); | |||||
| } | |||||
| if(record.getContentType() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"带货场景为空"); | |||||
| } | |||||
| if(record.getCouponId() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品Id为空"); | |||||
| } | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| return ttCouponGoodsService.poiPlanSave(record); | |||||
| } | |||||
| @ApiOperation("发布修改定向佣金计划") | |||||
| @PostMapping("saveOrientedPlan") | |||||
| @SystemControllerLog(description = "更新") | |||||
| public ResultData saveOrientedPlan(@RequestBody TtPoiTakeRate record) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::saveOrientedPlan"); | |||||
| if(StringUtils.isBlank(record.getName())){//不可修改 | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"计划名称为空"); | |||||
| } | |||||
| if(StringUtils.isBlank(record.getMerchantPhone())){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"计划联系人为空"); | |||||
| } | |||||
| if(record.getDouyinIdList() == null || record.getDouyinIdList().isEmpty()){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"定向达人抖音号为空"); | |||||
| } | |||||
| //达人去重 | |||||
| List<String> collect = record.getDouyinIdList().stream().distinct().collect(Collectors.toList()); | |||||
| record.setDouyinIdList(collect); | |||||
| if(record.getCouponId() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品Id为空"); | |||||
| } | |||||
| if(record.getContentType() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"带货场景为空"); | |||||
| } | |||||
| EnumCpsPlanContentType planType = EnumCpsPlanContentType.getEnum(record.getContentType()); | |||||
| if(planType == null || (!planType.equals(EnumCpsPlanContentType.VIDEO) && !planType.equals(EnumCpsPlanContentType.LIVE))){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"带货场景错误"); | |||||
| } | |||||
| if(planType.equals(EnumCpsPlanContentType.VIDEO)){ | |||||
| if(record.getStartTime() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"计划开始时间为空"); | |||||
| } | |||||
| if(record.getEndTime() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"计划结束时间为空"); | |||||
| } | |||||
| if(record.getCommissionDuration() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"佣金有效期为空"); | |||||
| } | |||||
| } | |||||
| if(record.getTakeRate() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品的抽佣率为空"); | |||||
| } | |||||
| if(record.getTakeRate() < 0 || record.getTakeRate() > 2900){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品的抽佣率需在万分位0-2900之间"); | |||||
| } | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| return ttCouponGoodsService.saveOrientedPlan(record); | |||||
| } | |||||
| @ApiOperation("新增定向佣金达人合作") | |||||
| @PostMapping("addOrientedPlanDouyin") | |||||
| @SystemControllerLog(description = "更新") | |||||
| public ResultData addOrientedPlanDouyin(@RequestBody TtPoiTakeRate record) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::addOrientedPlanDouyin"); | |||||
| if(record.getId() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"Id为空"); | |||||
| } | |||||
| if(record.getDouyinIdList() == null || record.getDouyinIdList().isEmpty()){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"添加定向达人抖音号为空"); | |||||
| } | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| return ttCouponGoodsService.addOrientedPlanDouyin(record); | |||||
| } | |||||
| @ApiOperation("取消定向佣金达人合作") | |||||
| @PostMapping("cancelOrientedPlanDouyin") | |||||
| @SystemControllerLog(description = "更新") | |||||
| public ResultData cancelOrientedPlanDouyin(@RequestBody TtPoiTakeRate record) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::cancelOrientedPlanDouyin"); | |||||
| if(record.getId() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"Id为空"); | |||||
| } | |||||
| if(StringUtils.isBlank(record.getDouyinId())){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"取消定向达人抖音号为空"); | |||||
| } | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| return ttCouponGoodsService.cancelOrientedPlanDouyin(record); | |||||
| } | |||||
| @ApiOperation("修改通用佣金计划状态") | |||||
| @PostMapping("updateStatus") | |||||
| @SystemControllerLog(description = "更新") | |||||
| public ResultData updateStatus(@RequestBody TtPoiTakeRate record) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::updateStatus"); | |||||
| if(record.getId() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"计划ID为空"); | |||||
| } | |||||
| if(record.getStatus() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"状态值为空"); | |||||
| } | |||||
| EnumCpsPlanStatus planStatus = EnumCpsPlanStatus.getEnum(record.getStatus()); | |||||
| if(planStatus == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"状态不合法"); | |||||
| } | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| return ttCouponGoodsService.poiPlanUpdateStatus(record); | |||||
| } | |||||
| @ApiOperation("修改定向佣金计划状态") | |||||
| @PostMapping("updateOrientedStatus") | |||||
| @SystemControllerLog(description = "更新") | |||||
| public ResultData updateOrientedStatus(@RequestBody TtPoiTakeRate record) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::updateOrientedStatus"); | |||||
| if(record.getId() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"计划ID为空"); | |||||
| } | |||||
| if(record.getStatus() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"状态值为空"); | |||||
| } | |||||
| EnumCpsPlanStatus planStatus = EnumCpsPlanStatus.getEnum(record.getStatus()); | |||||
| if(!EnumCpsPlanStatus.OFF.equals(planStatus)){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"状态不合法"); | |||||
| } | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| return ttCouponGoodsService.poiOrientedPlanUpdateStatus(record); | |||||
| } | |||||
| @ApiOperation("获取佣金范围") | |||||
| @PostMapping("getRateScope") | |||||
| @SystemControllerLog(description = "获取") | |||||
| public ResultData getRateScope(@RequestBody Map<String, Object> param) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::getRateScope"); | |||||
| String couponIdStr = (String) param.get("couponId"); | |||||
| Integer planType = (Integer) param.get("planType"); | |||||
| if(StringUtils.isBlank(couponIdStr)){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品Id为空"); | |||||
| } | |||||
| Long couponId = Long.parseLong(couponIdStr); | |||||
| EnumCpsPlanType anEnum = EnumCpsPlanType.getEnum(planType); | |||||
| if(anEnum == null){ | |||||
| anEnum = EnumCpsPlanType.COMMON; | |||||
| } | |||||
| return ttCouponGoodsService.getRateScope(getTenantInfo(),couponId,anEnum); | |||||
| } | |||||
| @ApiOperation("设置总分佣率") | |||||
| @PostMapping("setUpRateAll") | |||||
| @SystemControllerLog(description = "更新") | |||||
| public ResultData setUpAll(@RequestBody Map<String, Object> param) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::setUpAll"); | |||||
| String couponIdStr = (String) param.get("couponId"); | |||||
| if(StringUtils.isBlank(couponIdStr)){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品Id为空"); | |||||
| } | |||||
| Long couponId = Long.parseLong(couponIdStr); | |||||
| Integer mallRate = (Integer) param.get("mallRate"); | |||||
| if(mallRate == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"总分佣率为空"); | |||||
| } | |||||
| return ttCouponGoodsService.setUpAll(getTenantInfo(),couponId,mallRate); | |||||
| } | |||||
| @ApiOperation("获取总分佣率及范围") | |||||
| @PostMapping("getRateAll") | |||||
| @SystemControllerLog(description = "获取") | |||||
| public ResultData getAll(@RequestBody Map<String, Object> param) { | |||||
| logger.debug("[" + getIpAddr() + "] TtMerchantPoiController::getAll"); | |||||
| String couponIdStr = (String) param.get("couponId"); | |||||
| if(StringUtils.isBlank(couponIdStr)){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"商品Id为空"); | |||||
| } | |||||
| Long couponId = Long.parseLong(couponIdStr); | |||||
| return ttCouponGoodsService.getAll(getTenantInfo(),couponId); | |||||
| } | |||||
| } | |||||
| @@ -1,189 +0,0 @@ | |||||
| package com.iformall.controller.market; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.annotation.TenantIgnore; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.WxCoupon; | |||||
| import com.iformall.domain.po.base.BaseEntity; | |||||
| import com.iformall.domain.vo.TtCouponChannelVo; | |||||
| import com.iformall.domain.vo.TtCouponVo; | |||||
| import com.iformall.douyin.web.bean.GoodsTemplateGet; | |||||
| import com.iformall.enums.*; | |||||
| import com.iformall.service.*; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import me.chanjar.weixin.common.error.WxErrorException; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| @RestController | |||||
| @RequestMapping("ttgoods") | |||||
| @Api(description = "抖音商品库") | |||||
| public class TtCouponGoodsController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxCouponService wxCouponService; | |||||
| @Autowired | |||||
| private TtCouponGoodsService ttCouponGoodsService; | |||||
| @Autowired | |||||
| private TtMerchantPoiService ttMerchantPoiService; | |||||
| @Autowired | |||||
| private TtGoodsCategoryService ttGoodsCategoryService; | |||||
| // @ApiOperation("分页列表接口") | |||||
| // @GetMapping("couponList") | |||||
| // @ApiImplicitParams({ | |||||
| // @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| // @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| // @SystemControllerLog(description = "-列表") | |||||
| // public ResultData couponList(@ModelAttribute TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { | |||||
| // logger.debug("[" + getIpAddr() + "] WxCouponController::couponList"); | |||||
| // if (ttCouponVo == null) ttCouponVo = new TtCouponVo(); | |||||
| // ttCouponVo.updateTenantInfo(getTenantInfo()); | |||||
| // ttCouponVo.setType(EnumCouponType.COUPON_DOUYIN.getCode()); | |||||
| // if(StringUtils.isNotBlank(ttCouponVo.getSortColumn())){ | |||||
| // String coryColumn = "c."+ttCouponVo.getSortColumns(); | |||||
| // ttCouponVo.setSortColumns(coryColumn); | |||||
| // ttCouponVo.setSortColumn(null); | |||||
| // }else{ | |||||
| // ttCouponVo.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); | |||||
| // } | |||||
| // if (ttCouponVo.getStatus() != null && ttCouponVo.getStatus() == -1) | |||||
| // ttCouponVo.setStatus(null); | |||||
| // return ttCouponGoodsService.couponList(ttCouponVo, pageNum, pageSize); | |||||
| // } | |||||
| // | |||||
| // @ApiOperation("分页列表接口") | |||||
| // @GetMapping("channelList") | |||||
| // @ApiImplicitParams({ | |||||
| // @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| // @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| // @SystemControllerLog(description = "-列表") | |||||
| // public ResultData channelList(@ModelAttribute TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { | |||||
| // logger.debug("[" + getIpAddr() + "] WxCouponController::channelList"); | |||||
| // if (ttChannelVo == null) ttChannelVo = new TtCouponChannelVo(); | |||||
| // ttChannelVo.updateTenantInfo(getTenantInfo()); | |||||
| // ttChannelVo.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); | |||||
| // if(null == ttChannelVo.getSourceType()){ | |||||
| // ttChannelVo.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| // } | |||||
| // | |||||
| // if(StringUtils.isNotBlank(ttChannelVo.getSortColumn())){ | |||||
| // String coryColumn = "cc."+ttChannelVo.getSortColumns(); | |||||
| // ttChannelVo.setSortColumns(coryColumn); | |||||
| // ttChannelVo.setSortColumn(null); | |||||
| // }else{ | |||||
| // ttChannelVo.setSortColumns(BaseEntity.SortField.CCUpdateDate_DESC); | |||||
| // } | |||||
| // | |||||
| // return ttCouponGoodsService.channelList(ttChannelVo, pageNum, pageSize); | |||||
| // } | |||||
| @ApiOperation("根据类目获取商品模板") | |||||
| @GetMapping("getTemplate") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "根据类目获取商品模板") | |||||
| public ResultData getGoodsTemplate(Long couponId,Integer categoryId,Integer productType) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::getGoodsTemplate"); | |||||
| if(productType == null){ | |||||
| productType = 1; | |||||
| } | |||||
| if(couponId == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| WxCoupon coupon = wxCouponService.getAttrsById(couponId, getTenantInfo().getTenantId()); | |||||
| if(coupon == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| try { | |||||
| GoodsTemplateGet goodsTemplateGet = ttMerchantPoiService.getTtWebService(getTenantInfo()).getGoodsService().templateGet(categoryId, productType); | |||||
| ttGoodsCategoryService.adminIsShow(goodsTemplateGet); | |||||
| ttGoodsCategoryService.handTemplate(goodsTemplateGet,coupon); | |||||
| return new ResultData(goodsTemplateGet); | |||||
| } catch (WxErrorException e) { | |||||
| e.printStackTrace(); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("提交审核") | |||||
| @PostMapping("product/save") | |||||
| @SystemControllerLog(description = "提交审核") | |||||
| public ResultData productSave(@RequestBody WxCoupon wxCoupon) { | |||||
| if (wxCoupon.getId() == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| WxCoupon coupon = wxCouponService.getById(wxCoupon.getId(), getTenantInfo().getTenantId()); | |||||
| if(coupon == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||||
| } | |||||
| if(coupon.getSalePrice() == null || coupon.getSalePrice().intValue() == 0){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"免费券无需提审"); | |||||
| } | |||||
| try { | |||||
| return ttCouponGoodsService.productSave(coupon); | |||||
| } catch (Exception e) { | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); | |||||
| } | |||||
| } | |||||
| @ApiOperation("实时查询审核状态") | |||||
| @GetMapping("product/draft") | |||||
| @SystemControllerLog(description = "实时查询审核状态") | |||||
| public ResultData productDraft(Long id) { | |||||
| if (id == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| return ttCouponGoodsService.productDraftGet(getTenantInfo(),id); | |||||
| } | |||||
| @ApiOperation("实时查询线上商品状态") | |||||
| @GetMapping("product/online") | |||||
| @SystemControllerLog(description = "实时查询审核状态") | |||||
| public ResultData productOnline(Long id) { | |||||
| if (id == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| return ttCouponGoodsService.productOnlineGet(getTenantInfo(),id); | |||||
| } | |||||
| @ApiOperation("实时同步上下架状态") | |||||
| @GetMapping("product/operate") | |||||
| @SystemControllerLog(description = "实时同步上下架状态") | |||||
| public ResultData productOperate(Long id) { | |||||
| if (id == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| return ttCouponGoodsService.productOperate(getTenantInfo(),id); | |||||
| } | |||||
| @ApiOperation("实时同步库存") | |||||
| @GetMapping("product/stock/sync") | |||||
| @SystemControllerLog(description = "实时同步库存") | |||||
| public ResultData productStockSync(Long id) { | |||||
| if (id == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| return ttCouponGoodsService.productStockSync(getTenantInfo(),id); | |||||
| } | |||||
| } | |||||
| @@ -1,216 +0,0 @@ | |||||
| package com.iformall.controller.market; | |||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.alibaba.fastjson.JSONArray; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.base.BaseEntity; | |||||
| import com.iformall.domain.po.WxCampaign; | |||||
| import com.iformall.domain.po.WxCoupon; | |||||
| import com.iformall.domain.po.WxCouponChannel; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.domain.vo.WxCouponChannelVo; | |||||
| import com.iformall.enums.*; | |||||
| import com.iformall.service.WxCampaignService; | |||||
| import com.iformall.service.WxCouponChannelService; | |||||
| import com.iformall.service.WxCouponService; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| @RestController | |||||
| @RequestMapping("wxCampaign") | |||||
| @Api(description = "促销和banner接口") | |||||
| public class WxCampaignController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxCampaignService wxCampaignService; | |||||
| @Autowired | |||||
| WxCouponService wxCouponService; | |||||
| @Autowired | |||||
| private WxCouponChannelService wxCouponChannelService; | |||||
| @ApiOperation("分页列表接口") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "宣传页-列表") | |||||
| public ResultData list(@ModelAttribute WxCampaign wxCampaign, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCampaignController::list"); | |||||
| if (null == wxCampaign) wxCampaign = new WxCampaign(); | |||||
| if (wxCampaign.getStatus() != null && wxCampaign.getStatus() == -1) { | |||||
| wxCampaign.setStatus(null); | |||||
| } | |||||
| if(wxCampaign.getPlat() == null){ | |||||
| wxCampaign.setPlat(EnumAppPlat.WX.getCode()); | |||||
| } | |||||
| wxCampaign.updateTenantInfo(getTenantInfo()); | |||||
| wxCampaign.setSortColumns(BaseEntity.SortField.CreateTime_DESC,BaseEntity.SortField.Id_DESC); | |||||
| final PageInfo<WxCampaign> page = wxCampaignService.listAsPage(wxCampaign, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("新增接口") | |||||
| @PostMapping("add") | |||||
| @SystemControllerLog(description = "宣传页-新增") | |||||
| public ResultData add(@RequestBody WxCampaign wxCampaign) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCampaignController::add"); | |||||
| if (StringUtils.isNotBlank(wxCampaign.getCouponIds())) { | |||||
| String[] arys = wxCampaign.getCouponIds().split(","); | |||||
| wxCampaign.setCouponIds(JSON.toJSONString(arys)); | |||||
| } else { | |||||
| wxCampaign.setCouponIds(JSONArray.toJSONString(new String[0])); | |||||
| } | |||||
| wxCampaign.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); | |||||
| wxCampaign.updateTenantInfo(getTenantInfo()); | |||||
| if(wxCampaign.getPlat() == null){ | |||||
| wxCampaign.setPlat(EnumAppPlat.WX.getCode()); | |||||
| } | |||||
| return wxCampaignService.saveOrUpdate(wxCampaign); | |||||
| } | |||||
| @ApiOperation(value = "新增接口-小程序路径", notes = "produceType,produceId,pagePath,pageScene必填") | |||||
| @PostMapping("addByPath") | |||||
| @SystemControllerLog(description = "宣传页-新增") | |||||
| public ResultData addByPath(@RequestBody WxCampaign wxCampaign) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCampaignController::addByPath"); | |||||
| wxCampaign.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); | |||||
| wxCampaign.updateTenantInfo(getTenantInfo()); | |||||
| if(wxCampaign.getPlat() == null){ | |||||
| wxCampaign.setPlat(EnumAppPlat.WX.getCode()); | |||||
| } | |||||
| return wxCampaignService.addForPath(wxCampaign); | |||||
| } | |||||
| @ApiOperation(value = "新增接口-小程序路径", notes = "produceType,produceId,pagePath,pageScene必填") | |||||
| @PostMapping("addByAPPPath") | |||||
| @SystemControllerLog(description = "宣传页-新增") | |||||
| public ResultData addByAPPPath(@RequestBody WxCampaign wxCampaign) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCampaignController::addByAPPPath"); | |||||
| wxCampaign.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); | |||||
| wxCampaign.updateTenantInfo(getTenantInfo()); | |||||
| if(wxCampaign.getPlat() == null){ | |||||
| wxCampaign.setPlat(EnumAppPlat.WX.getCode()); | |||||
| } | |||||
| return wxCampaignService.addByAPPPath(wxCampaign); | |||||
| } | |||||
| @ApiOperation("根据id更新接口") | |||||
| @PostMapping("update") | |||||
| @SystemControllerLog(description = "宣传页-id更新") | |||||
| public ResultData update(@RequestBody WxCampaign wxCampaign) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCampaignController::update"); | |||||
| if (StringUtils.isNotBlank(wxCampaign.getCouponIds())) { | |||||
| String[] arys = wxCampaign.getCouponIds().split(","); | |||||
| wxCampaign.setCouponIds(JSON.toJSONString(arys)); | |||||
| } else { | |||||
| wxCampaign.setCouponIds(JSONArray.toJSONString(new String[0])); | |||||
| } | |||||
| if(wxCampaign.getPlat() == null){ | |||||
| wxCampaign.setPlat(EnumAppPlat.WX.getCode()); | |||||
| } | |||||
| return wxCampaignService.saveOrUpdate(wxCampaign); | |||||
| } | |||||
| @ApiOperation("根据id更新接口") | |||||
| @PostMapping("updateStatus") | |||||
| @SystemControllerLog(description = "宣传页-更新状态") | |||||
| public ResultData updateStatus(@RequestBody WxCampaign wxCampaign) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCampaignController::updateStatus"); | |||||
| WxCampaign campaign = wxCampaignService.getById(wxCampaign.getId()); | |||||
| // check coupon 状态 | |||||
| if (campaign.getType().equals(EnumCampaignType.STABLE.getCode())) { | |||||
| if (campaign.getStatus().equals(EnumCampaignStatus.STATUS_THROW_IN.getCode()) | |||||
| && !wxCampaign.getStatus().equals(EnumCampaignStatus.STATUS_TAKE_OFFF.getCode())) { | |||||
| // 宣传页 - 下架不检查状态 | |||||
| List<String> ids = JSONArray.parseArray(campaign.getCouponIds(), String.class); | |||||
| for (String couponIdStr : ids) { | |||||
| Long couponId = Long.parseLong(couponIdStr); | |||||
| WxCoupon wxCoupon = wxCouponService.getById(couponId,campaign.getTenantId()); | |||||
| if (wxCoupon == null) { | |||||
| return new ResultData(ErrorCode.COUPON_IS_EMPTY); | |||||
| } | |||||
| if (wxCoupon.getStatus() != EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) { | |||||
| return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); | |||||
| } | |||||
| if (wxCoupon.getValidEndDate() != null && wxCoupon.getValidEndDate().before(new Date())) { | |||||
| return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| wxCampaign.setPlat(campaign.getPlat()); | |||||
| return wxCampaignService.updateStatus(wxCampaign); | |||||
| } | |||||
| @ApiOperation("根据id删除接口") | |||||
| @GetMapping("/del") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "宣传页-删除") | |||||
| public ResultData delete(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCampaignController::delete"); | |||||
| wxCampaignService.deleteById(id); | |||||
| return new ResultData(Result.SUCCESS, "删除成功", null); | |||||
| } | |||||
| @ApiOperation("根据id查询接口") | |||||
| @GetMapping("/findById") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "宣传页-查询") | |||||
| public ResultData findById(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCampaignController::findById"); | |||||
| WxCampaign wxCampaign = wxCampaignService.getById(id); | |||||
| if (wxCampaign != null) { | |||||
| WxCouponChannel wxCouponChannel = new WxCouponChannel(); | |||||
| wxCouponChannel.updateTenantInfo(wxCampaign); | |||||
| wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_CAMPAIN.getCode()); | |||||
| wxCouponChannel.setSubTargetId(wxCampaign.getId()); | |||||
| wxCouponChannel.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); | |||||
| List<WxCouponChannelVo> voList = wxCouponChannelService.newfindListVo(wxCouponChannel); | |||||
| wxCampaign.setCoupons(voList); | |||||
| } | |||||
| return new ResultData(Result.SUCCESS, "查询成功", wxCampaign); | |||||
| } | |||||
| @ApiOperation("调整顺序") | |||||
| @GetMapping("/move") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "sourceId", value = "", dataType = "Long", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "targetId", value = "", dataType = "Long", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "宣传页-调整顺序") | |||||
| public ResultData move(Long sourceId, Long targetId) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCampaignController::move"); | |||||
| WxCampaign source = wxCampaignService.getById(sourceId); | |||||
| WxCampaign target = wxCampaignService.getById(targetId); | |||||
| if (source == null || target == null) { | |||||
| return new ResultData(Result.ERROR, "调整顺序失败", null); | |||||
| } | |||||
| int temp = source.getSortNum(); | |||||
| source.setSortNum(target.getSortNum()); | |||||
| target.setSortNum(temp); | |||||
| wxCampaignService.saveOrUpdate(source); | |||||
| wxCampaignService.saveOrUpdate(target); | |||||
| return new ResultData(Result.SUCCESS, "调整顺序成功", null); | |||||
| } | |||||
| } | |||||
| @@ -1,275 +0,0 @@ | |||||
| package com.iformall.controller.market; | |||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.annotation.TenantIgnore; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.dto.WxCouponChannelDto; | |||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.vo.WxCouponChannelVo; | |||||
| import com.iformall.enums.EnumCouponSourceType; | |||||
| import com.iformall.domain.po.base.BaseEntity; | |||||
| import com.iformall.enums.EnumCouponStatus; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.service.WxCouponChannelService; | |||||
| import com.iformall.service.WxCouponService; | |||||
| import com.iformall.service.util.CouponCacheUtils; | |||||
| import com.iformall.utils.RedisLock; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.beans.factory.annotation.Qualifier; | |||||
| import org.springframework.data.redis.core.RedisTemplate; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| @RestController | |||||
| @RequestMapping("wxCouponChannel") | |||||
| @Api(description = "优惠券投放接口") | |||||
| public class WxCouponChannelController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxCouponChannelService wxCouponChannelService; | |||||
| @Autowired | |||||
| RedisLock redisLock; | |||||
| @Autowired | |||||
| private WxCouponService wxCouponService; | |||||
| @Autowired | |||||
| @Qualifier("objectCommonRedisTemplate") | |||||
| RedisTemplate<String, Object> redisTemplate; | |||||
| @ApiOperation("分页列表接口") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "券投放-列表") | |||||
| public ResultData list(@ModelAttribute WxCouponChannel wxCouponChannel, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponChannelController::list"); | |||||
| if (null == wxCouponChannel) wxCouponChannel = new WxCouponChannel(); | |||||
| if (wxCouponChannel.getStatus() != null && wxCouponChannel.getStatus() == -1) { | |||||
| wxCouponChannel.setStatus(null); | |||||
| } | |||||
| wxCouponChannel.updateTenantInfo(getTenantInfo()); | |||||
| if(null == wxCouponChannel.getSourceType()){ | |||||
| wxCouponChannel.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| } | |||||
| if(StringUtils.isNotBlank(wxCouponChannel.getSortColumn())){ | |||||
| // | |||||
| }else{ | |||||
| wxCouponChannel.setSortColumns(BaseEntity.SortField.CCUpdateDate_DESC); | |||||
| } | |||||
| final PageInfo<WxCouponChannelVo> page = wxCouponChannelService.newListPageVo(wxCouponChannel, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("根据id更新接口") | |||||
| @PostMapping("update") | |||||
| @SystemControllerLog(description = "券投放-更新") | |||||
| public ResultData update(@RequestBody WxCouponChannel wxCouponChannel) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponChannelController::update"); | |||||
| wxCouponChannel.updateTenantInfo(getTenantInfo()); | |||||
| ResultData resultData = wxCouponChannelService.saveOrUpdate(wxCouponChannel); | |||||
| WxCouponChannel couponChannel = (WxCouponChannel)resultData.data; | |||||
| //生成二维码 | |||||
| if(couponChannel!=null){ | |||||
| wxCouponChannelService.updateQrCode(couponChannel,couponChannel.getId(),couponChannel.getType()); | |||||
| } | |||||
| CouponCacheUtils.removeCouponChannelCache(redisTemplate, wxCouponChannel.getId()); | |||||
| CouponCacheUtils.removeDouyinLivePageCache(redisTemplate, wxCouponChannel.getTenantId(), null, null); | |||||
| return resultData; | |||||
| } | |||||
| @ApiOperation("预审核上架") | |||||
| @PostMapping("updateOnline") | |||||
| @SystemControllerLog(description = "预审核上架") | |||||
| public ResultData updateOnline(@RequestBody WxCouponChannel wxCouponChannel) { | |||||
| wxCouponChannel.updateTenantInfo(getTenantInfo()); | |||||
| if (wxCouponChannel.getId() == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| ResultData resultData = wxCouponChannelService.updateOnline(wxCouponChannel); | |||||
| if(resultData.code == 200){ | |||||
| CouponCacheUtils.removeCouponChannelCache(redisTemplate, wxCouponChannel.getId()); | |||||
| CouponCacheUtils.removeDouyinLivePageCache(redisTemplate, wxCouponChannel.getTenantId(), null, null); | |||||
| } | |||||
| return resultData; | |||||
| } | |||||
| @ApiOperation("根据id查询接口") | |||||
| @GetMapping("/findById") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "券投放-查询") | |||||
| public ResultData findById(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponChannelController::findById"); | |||||
| return new ResultData(Result.SUCCESS, "查询成功", wxCouponChannelService.getById(id,getTenantInfo().getTenantId())); | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("批量新增") | |||||
| @PostMapping("/addbatch") | |||||
| @SystemControllerLog(description = "券投放-批量新增") | |||||
| public ResultData addbatch(@RequestBody WxCouponChannelDto wxCouponChannelDto) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponChannelController::addbatch"); | |||||
| String[] ids = wxCouponChannelDto.getCouponIds().split(","); | |||||
| String[] channelId = wxCouponChannelDto.getChannelId().split(","); | |||||
| ResultData resultData = wxCouponChannelService.addBatch(wxCouponChannelDto.getType(),ids, channelId, getTenantInfo(), | |||||
| wxCouponChannelDto.getShowBeginTime(), wxCouponChannelDto.getBeginTime(), wxCouponChannelDto.getEndTime(),wxCouponChannelDto.getChannelPrice(),wxCouponChannelDto.getChannelStock()); | |||||
| if (null != channelId && channelId.length > 0 ) { | |||||
| for (String chId: channelId) { | |||||
| if (!StringUtils.isBlank(chId)) { | |||||
| CouponCacheUtils.removeCouponChannelCache(redisTemplate, Long.parseLong(chId)); | |||||
| } | |||||
| } | |||||
| } | |||||
| CouponCacheUtils.removeDouyinLivePageCache(redisTemplate, this.getTenantInfo().getTenantId(), null, null); | |||||
| return resultData; | |||||
| } | |||||
| @ApiOperation("根据id查询接口") | |||||
| @GetMapping("/findChannelByCouponId") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "券投放-查询") | |||||
| public ResultData findChannelByCouponId(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponChannelController::findChannelByCouponId"); | |||||
| List<Integer> channellist = new ArrayList<>(); | |||||
| WxCouponChannel wxCouponChannel = new WxCouponChannel(); | |||||
| wxCouponChannel.updateTenantInfo(getTenantInfo()); | |||||
| wxCouponChannel.setStatus(0); | |||||
| wxCouponChannel.setCouponId(id); | |||||
| List<WxCouponChannel> list = wxCouponChannelService.listAsPage(wxCouponChannel, 1, 5).getList(); | |||||
| if (list.isEmpty()) { | |||||
| return new ResultData(Result.SUCCESS, "查询成功", ""); | |||||
| } | |||||
| for (WxCouponChannel temp : list) { | |||||
| channellist.add(temp.getTargetAd()); | |||||
| } | |||||
| return new ResultData(Result.SUCCESS, "查询成功", JSON.toJSONString(channellist)); | |||||
| } | |||||
| @ApiOperation("设置库存") | |||||
| @PostMapping("/setChannelStock") | |||||
| @SystemControllerLog(description = "设置渠道库存") | |||||
| public ResultData setChannelStock(@RequestBody WxCouponChannel wxCouponChannel) { | |||||
| if (null == wxCouponChannel.getChannelStock() || wxCouponChannel.getChannelStock() <= 0) { | |||||
| return new ResultData(Result.ERROR, "库存未设置或者库存小于0, 如不需要可点击解除锁定库存."); | |||||
| } | |||||
| wxCouponChannel.updateTenantInfo(getTenantInfo()); | |||||
| WxCoupon coupon = wxCouponService.getById(wxCouponChannel.getCouponId(), wxCouponChannel.getTenantId()); | |||||
| if (coupon.getRemainInventory().intValue() < wxCouponChannel.getChannelStock().intValue()) { | |||||
| return new ResultData(Result.ERROR, "渠道库存不能大于券剩余总库存."); | |||||
| } | |||||
| try { | |||||
| wxCouponChannelService.setChannelStock(wxCouponChannel, wxCouponChannel.getChannelStock()); | |||||
| redisLock.setCouponStock(wxCouponChannel.getCouponId(), coupon.getRemainInventory()); | |||||
| redisLock.setCouponChannelStock(wxCouponChannel.getId(), wxCouponChannel.getChannelStock()); | |||||
| CouponCacheUtils.removeCouponChannelCache(redisTemplate, wxCouponChannel.getId()); | |||||
| return new ResultData(Result.SUCCESS, "设置成功", ""); | |||||
| }catch(MallinkException e) { | |||||
| logger.error("setChannelStock error.",e); | |||||
| return new ResultData(e.getErrorCode(),e.getMessage()); | |||||
| }catch(Exception e){ | |||||
| return new ResultData(Result.ERROR,e.getMessage()); | |||||
| } | |||||
| } | |||||
| @ApiOperation("解除锁定库存") | |||||
| @PostMapping("/releaseChannelStock") | |||||
| @SystemControllerLog(description = "释放渠道锁定库存") | |||||
| public ResultData releaseChannelStock(@RequestBody WxCouponChannel wxCouponChannel) { | |||||
| wxCouponChannel.updateTenantInfo(getTenantInfo()); | |||||
| try { | |||||
| wxCouponChannelService.releaseChannelStock(wxCouponChannel); | |||||
| redisLock.removeCouponStock(wxCouponChannel.getCouponId()); | |||||
| redisLock.removeCouponChannelStock(wxCouponChannel.getId()); | |||||
| CouponCacheUtils.removeCouponChannelCache(redisTemplate, wxCouponChannel.getId()); | |||||
| return new ResultData(Result.SUCCESS, "设置成功", ""); | |||||
| }catch(MallinkException e) { | |||||
| logger.error("releaseChannelStock error.",e); | |||||
| return new ResultData(e.getErrorCode(),e.getMessage()); | |||||
| }catch(Exception e){ | |||||
| return new ResultData(Result.ERROR,e.getMessage()); | |||||
| } | |||||
| } | |||||
| @ApiOperation("设置价格") | |||||
| @PostMapping("/setChannelPrice") | |||||
| @SystemControllerLog(description = "设置渠道价格") | |||||
| public ResultData setChannelPrice(@RequestBody WxCouponChannel wxCouponChannel) { | |||||
| if (null == wxCouponChannel.getChannelPrice() || wxCouponChannel.getChannelPrice() < 0) { | |||||
| return new ResultData(Result.ERROR, "价格未设置或者价格小于0, 如不需要可点击解除价格设置."); | |||||
| } | |||||
| wxCouponChannel.updateTenantInfo(getTenantInfo()); | |||||
| //免费券不能设置有价 | |||||
| WxCouponChannel cc = wxCouponChannelService.getById(wxCouponChannel.getId(), wxCouponChannel.getTenantId()); | |||||
| if (null == cc ) { | |||||
| return new ResultData(Result.ERROR, "id无效."); | |||||
| } | |||||
| WxCoupon coupon = wxCouponService.getById(cc.getCouponId(), wxCouponChannel.getTenantId()); | |||||
| if (null == coupon ) { | |||||
| return new ResultData(Result.ERROR, "优惠券不存在."); | |||||
| } | |||||
| if (coupon.getSalePrice() <= 0) { | |||||
| return new ResultData(Result.ERROR, "免费券不能设置渠道价格."); | |||||
| } | |||||
| try { | |||||
| wxCouponChannelService.setChannelPrice(wxCouponChannel); | |||||
| CouponCacheUtils.removeCouponChannelCache(redisTemplate, wxCouponChannel.getId()); | |||||
| return new ResultData(Result.SUCCESS, "设置成功", ""); | |||||
| }catch(MallinkException e) { | |||||
| logger.error("setChannelPrice error.",e); | |||||
| return new ResultData(e.getErrorCode(),e.getMessage()); | |||||
| }catch(Exception e){ | |||||
| return new ResultData(Result.ERROR,e.getMessage()); | |||||
| } | |||||
| } | |||||
| @ApiOperation("解除价格设置") | |||||
| @PostMapping("/releaseSetChannelPrice") | |||||
| @SystemControllerLog(description = "设置渠道价格") | |||||
| public ResultData releaseSetChannelPrice(@RequestBody WxCouponChannel wxCouponChannel) { | |||||
| wxCouponChannel.setChannelPrice(null); | |||||
| wxCouponChannel.updateTenantInfo(getTenantInfo()); | |||||
| try { | |||||
| wxCouponChannelService.setChannelPrice(wxCouponChannel); | |||||
| CouponCacheUtils.removeCouponChannelCache(redisTemplate, wxCouponChannel.getId()); | |||||
| return new ResultData(Result.SUCCESS, "设置成功", ""); | |||||
| }catch(MallinkException e) { | |||||
| logger.error("releaseSetChannelPrice error.",e); | |||||
| return new ResultData(e.getErrorCode(),e.getMessage()); | |||||
| }catch(Exception e){ | |||||
| return new ResultData(Result.ERROR,e.getMessage()); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,739 +0,0 @@ | |||||
| package com.iformall.controller.market; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.annotation.TenantIgnore; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.domain.vo.TtCouponVo; | |||||
| import com.iformall.domain.vo.WxCouponStatisVo; | |||||
| import com.iformall.douyin.web.bean.GoodsTemplateGet; | |||||
| import com.iformall.enums.*; | |||||
| import com.iformall.mapper.WxCouponChannelMapper; | |||||
| import com.iformall.service.*; | |||||
| import com.iformall.service.util.CouponCacheUtils; | |||||
| import com.iformall.utils.DateUtils; | |||||
| import com.iformall.utils.RedisLock; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import me.chanjar.weixin.common.error.WxErrorException; | |||||
| import org.apache.commons.collections.CollectionUtils; | |||||
| import org.apache.commons.collections.map.HashedMap; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.beans.factory.annotation.Qualifier; | |||||
| import org.springframework.data.redis.core.RedisTemplate; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import javax.servlet.http.HttpServletRequest; | |||||
| import javax.servlet.http.HttpServletResponse; | |||||
| import java.util.*; | |||||
| @RestController | |||||
| @RequestMapping("wxCoupon") | |||||
| @Api(description = "优惠券接口") | |||||
| public class WxCouponController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxCouponService wxCouponService; | |||||
| @Autowired | |||||
| private WxCouponPasswordService couponPasswordService; | |||||
| @Autowired | |||||
| private WxCouponChannelService wxCouponChannelService; | |||||
| @Autowired | |||||
| private WxFlowService wxFlowService; | |||||
| @Autowired | |||||
| private WxMallService wxMallService; | |||||
| @Autowired | |||||
| private WxCouponMallService wxCouponMallService; | |||||
| @Autowired | |||||
| RedisLock redisLock; | |||||
| @Autowired | |||||
| @Qualifier("objectCommonRedisTemplate") | |||||
| RedisTemplate<String, Object> redisTemplate; | |||||
| @ApiOperation("分页列表接口") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| public ResultData list(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize,Boolean isList) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::list"); | |||||
| if (wxCoupon == null) wxCoupon = new WxCoupon(); | |||||
| wxCoupon.updateTenantInfo(getTenantInfo()); | |||||
| return couponList(wxCoupon, pageNum, pageSize, isList); | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("父券分页列表接口") | |||||
| @GetMapping("parentCouponList") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| public ResultData parentCouponList(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize,Boolean isList) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::list"); | |||||
| if (wxCoupon == null) wxCoupon = new WxCoupon(); | |||||
| TenantEntity mallTenantEntity = getTenantInfo(); | |||||
| wxCoupon.setTenantId(mallTenantEntity.getParentTenantId()); | |||||
| wxCoupon.setParentTenantId(null); | |||||
| //平台券 | |||||
| if (EnumCouponType.COUPON_DOUYIN_PLAT.getCode() == wxCoupon.getType()) { | |||||
| //查询已经分配了的parentCouponList | |||||
| WxCouponMall couponMall = new WxCouponMall(); | |||||
| couponMall.updateTenantInfo(wxCoupon); | |||||
| couponMall.setMallTenantId(mallTenantEntity.getTenantId()); | |||||
| List<Long> couponIds = wxCouponMallService.listCouponIds(couponMall); | |||||
| if (null != couponIds && couponIds.size() > 0 ) { | |||||
| wxCoupon.setIds(couponIds); | |||||
| }else { | |||||
| wxCoupon.setId(-1L); | |||||
| } | |||||
| } | |||||
| return couponList(wxCoupon, pageNum, pageSize, isList); | |||||
| } | |||||
| private ResultData couponList(WxCoupon wxCoupon, Integer pageNum, Integer pageSize,Boolean isList) { | |||||
| //默认A端建券 | |||||
| if(null == wxCoupon.getSourceType()){ | |||||
| wxCoupon.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| } | |||||
| //排序处理 | |||||
| if(StringUtils.isNotBlank(wxCoupon.getSortColumn())){ | |||||
| String coryColumn = "c."+wxCoupon.getSortColumns(); | |||||
| wxCoupon.setSortColumns(coryColumn); | |||||
| wxCoupon.setSortColumn(null); | |||||
| } | |||||
| //isList true 查全部 / 否则 只查询主动领取和定向投放的。 | |||||
| if(wxCoupon.getSendType() == null && !(isList == null?false:isList)){ | |||||
| Integer[] sendTypeArray = { | |||||
| EnumCouponSendType.ACTIVE.getCode(), | |||||
| EnumCouponSendType.PASSIVE.getCode(),}; | |||||
| wxCoupon.setSendTypes(Arrays.asList(sendTypeArray)); | |||||
| } | |||||
| return wxCouponService.list(wxCoupon,wxCoupon, pageNum, pageSize); //全列表 | |||||
| } | |||||
| @ApiOperation("分页列表接口") | |||||
| @GetMapping("listWithTypePress") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "券投放-列表") | |||||
| public ResultData listWithTypePress(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::list"); | |||||
| if (wxCoupon == null) wxCoupon = new WxCoupon(); | |||||
| wxCoupon.updateTenantInfo(getTenantInfo()); | |||||
| Integer[] typeArray = { | |||||
| EnumCouponType.COUPON_MANJIAN.getCode(), | |||||
| EnumCouponType.COUPON_DAIJIN.getCode(), | |||||
| // EnumCouponType.COUPON_TUANGOU.getCode(), | |||||
| EnumCouponType.COUPON_LIPIN.getCode(), | |||||
| EnumCouponType.COUPON_TINGCHE.getCode(), | |||||
| EnumCouponType.COUPON_MULTIMCH.getCode(), | |||||
| EnumCouponType.COUPON_DOUYIN.getCode(), | |||||
| EnumCouponType.COUPON_PRESS.getCode(), | |||||
| EnumCouponType.COUPON_PREORDER.getCode()}; | |||||
| wxCoupon.setTypes(Arrays.asList(typeArray)); | |||||
| Integer[] sendTypeArray = { | |||||
| EnumCouponSendType.ACTIVE.getCode(), | |||||
| EnumCouponSendType.PASSIVE.getCode(),}; | |||||
| wxCoupon.setSendTypes(Arrays.asList(sendTypeArray)); | |||||
| if(StringUtils.isNotBlank(wxCoupon.getSortColumn())){ | |||||
| String coryColumn = "c."+wxCoupon.getSortColumns(); | |||||
| wxCoupon.setSortColumns(coryColumn); | |||||
| wxCoupon.setSortColumn(null); | |||||
| } | |||||
| return wxCouponService.list(wxCoupon,wxCoupon, pageNum, pageSize); //全列表 | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("新增接口") | |||||
| @PostMapping("add") | |||||
| @SystemControllerLog(description = "券投放-新增") | |||||
| public ResultData add(@RequestBody WxCoupon wxCoupon) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::add"); | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| wxCoupon.updateTenantInfo(tenantEntity); | |||||
| if(null == wxCoupon.getContentType()){ | |||||
| wxCoupon.setContentType(EnumCouponContentType.NORMAL.getCode()); | |||||
| } | |||||
| if(null == wxCoupon.getSourceType()){ | |||||
| wxCoupon.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| } | |||||
| ResultData resultData = wxCouponService.saveOrUpdate(wxCoupon); | |||||
| if (resultData.code != 200) { | |||||
| return resultData; | |||||
| } | |||||
| redisLock.setCouponStock(wxCoupon.getId(), wxCoupon.getRemainInventory()); | |||||
| //启动投放审批 | |||||
| if(wxCoupon.getFlowParams() !=null && wxCoupon.getFlowParams().size()>0) { | |||||
| wxCoupon.getFlowParams().put("businessId",wxCoupon.getId()); | |||||
| wxFlowService.start(wxCoupon.getFlowParams(), getUserId(), getUser().getName(), tenantEntity); | |||||
| //修改coupon applyStatus状态为审核中 | |||||
| wxCoupon.setPutApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); | |||||
| } | |||||
| return resultData; | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("根据id更新接口") | |||||
| @PostMapping("update") | |||||
| @SystemControllerLog(description = "券投放-更新") | |||||
| public ResultData update(@RequestBody WxCoupon wxCoupon) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::update"); | |||||
| if (wxCoupon.getId() == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| wxCoupon.updateTenantInfo(getTenantInfo()); | |||||
| WxCoupon coupon = wxCouponService.getById(wxCoupon.getId(),wxCoupon.getTenantId()); | |||||
| if (null == coupon) { | |||||
| return new ResultData(ResultData.ERROR, "券未查询到。"+wxCoupon.getId()); | |||||
| } | |||||
| if(EnumDelFlag.YES.getCode().equals(wxCoupon.getIsDel())){ | |||||
| if(!EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode().equals(coupon.getStatus())){ | |||||
| return new ResultData(ResultData.ERROR, "请先作废,再进行删除。"); | |||||
| } | |||||
| wxCouponService.deleteById(wxCoupon.getId(),wxCoupon.getTenantId()); | |||||
| CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); | |||||
| CouponCacheUtils.removeCouponMerchantCache(redisTemplate, wxCoupon.getId()); | |||||
| return new ResultData(); | |||||
| } | |||||
| //启动审批流 | |||||
| if (wxCoupon.getFlowParams() != null && wxCoupon.getFlowParams().size() > 0) { | |||||
| logger.info("------coupon.update().businessType:"+wxCoupon.getFlowParams().get("businessType")); | |||||
| wxCoupon.getFlowParams().put("businessId",wxCoupon.getId()); | |||||
| wxFlowService.start(wxCoupon.getFlowParams(), getUserId(), getUser().getName(), getTenantInfo()); | |||||
| //作废审批 | |||||
| if (EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode().equals(wxCoupon.getStatus())) { | |||||
| wxCoupon.setCancleApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); | |||||
| return new ResultData(wxCoupon); | |||||
| } else { | |||||
| //投放审批 | |||||
| wxCoupon.setPutApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); | |||||
| } | |||||
| } | |||||
| ResultData result = null; | |||||
| if(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode().equals(wxCoupon.getStatus())){ | |||||
| result = wxCouponService.disable(wxCoupon, wxCoupon.getId()); | |||||
| }else{ | |||||
| result = wxCouponService.saveOrUpdate(wxCoupon); | |||||
| if(wxCoupon.getRemainInventory() != null){ | |||||
| redisLock.setCouponStock(wxCoupon.getId(), wxCoupon.getRemainInventory()); | |||||
| } | |||||
| } | |||||
| CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); | |||||
| CouponCacheUtils.removeCouponMerchantCache(redisTemplate, wxCoupon.getId()); | |||||
| return result; | |||||
| } | |||||
| @ApiOperation("根据id更新接口") | |||||
| @PostMapping("continueAdd") | |||||
| @SystemControllerLog(description = "继续添加") | |||||
| public ResultData continueAdd(@RequestBody WxCoupon wxCoupon) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::update"); | |||||
| if (wxCoupon.getId() == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| if(wxCoupon.getProductType() == null || wxCoupon.getCategoryId() == null){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "缺少必要参数"); | |||||
| } | |||||
| wxCoupon.updateTenantInfo(getTenantInfo()); | |||||
| WxCoupon coupon = wxCouponService.getById(wxCoupon.getId(),wxCoupon.getTenantId()); | |||||
| if (null == coupon) { | |||||
| return new ResultData(ResultData.ERROR, "券未查询到。"+wxCoupon.getId()); | |||||
| } | |||||
| coupon.setProductType(wxCoupon.getProductType()); | |||||
| coupon.setCategoryId(wxCoupon.getCategoryId()); | |||||
| coupon.setProductAttrs(wxCoupon.getProductAttrs()); | |||||
| coupon.setSkuAttrs(wxCoupon.getSkuAttrs()); | |||||
| ResultData result = wxCouponService.updateTtProduct(coupon); | |||||
| CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); | |||||
| CouponCacheUtils.removeCouponMerchantCache(redisTemplate, wxCoupon.getId()); | |||||
| return result; | |||||
| } | |||||
| @ApiOperation("根据id更新库存及有效期接口") | |||||
| @PostMapping("updateStokeAndValidDate") | |||||
| @SystemControllerLog(description = "券投放-库存/有效期更新") | |||||
| public ResultData updateStokeAndValidDate(@RequestBody WxCoupon wxCoupon) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::updateStokeAndValidDate"); | |||||
| if (wxCoupon.getId() == null) { | |||||
| logger.error("缺少id"); | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| if (wxCoupon.getType() == null) { | |||||
| logger.error("缺少type"); | |||||
| return new ResultData(ResultData.ERROR, "缺少type"); | |||||
| } | |||||
| if (wxCoupon.getRemainInventory() == null || wxCoupon.getInventory() == null) { | |||||
| logger.error("库存错误1"); | |||||
| return new ResultData(ErrorCode.COUPON_STOCK_ERR); | |||||
| } | |||||
| if (wxCoupon.getRemainInventory() > wxCoupon.getInventory()) { | |||||
| logger.error("库存错误2"); | |||||
| return new ResultData(ErrorCode.COUPON_STOCK_ERR); | |||||
| } | |||||
| if (wxCoupon.getValidType() == null) { | |||||
| logger.error("库存错误3"); | |||||
| return new ResultData(ErrorCode.COUPON_VALID_DATE_ERR); | |||||
| } | |||||
| if (wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { | |||||
| if (wxCoupon.getValidEndDate() == null) { | |||||
| logger.error("有效期错误1"); | |||||
| return new ResultData(ErrorCode.COUPON_VALID_DATE_ERR); | |||||
| } | |||||
| } else { | |||||
| if (wxCoupon.getValidDays() == null) { | |||||
| logger.error("有效期错误2"); | |||||
| return new ResultData(ErrorCode.COUPON_VALID_DATE_ERR); | |||||
| } | |||||
| } | |||||
| if (wxCoupon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode()) || | |||||
| wxCoupon.getType().equals(EnumCouponType.COUPON_CREDIT_PARK.getCode())) { | |||||
| logger.error("券库存有效期不支持停车券"); | |||||
| return new ResultData(ErrorCode.COUPON_STOCK_DATE_NO_CAR); | |||||
| } | |||||
| wxCoupon.updateTenantInfo(getTenantInfo()); | |||||
| WxCoupon coupon = wxCouponService.findById(wxCoupon); | |||||
| if (coupon == null) { | |||||
| return new ResultData(ErrorCode.COUPON_IS_EMPTY); | |||||
| } | |||||
| if(EnumCouponSendType.GIFT.getCode().equals(coupon.getSendType())){ | |||||
| return new ResultData(ErrorCode.COUPON_GIFT_NOTUPD_INVENTORY); | |||||
| } | |||||
| if ((wxCoupon.getValidEndDate() != null && coupon.getValidEndDate() != null && DateUtils.format(wxCoupon.getValidEndDate()).equals(DateUtils.format(coupon.getValidEndDate())) | |||||
| && wxCoupon.getInventory().equals(coupon.getInventory())) | |||||
| || | |||||
| (wxCoupon.getValidDays() != null && coupon.getValidDays() != null && wxCoupon.getInventory().equals(coupon.getInventory()) && | |||||
| wxCoupon.getValidDays().equals(coupon.getValidDays())) | |||||
| ) { | |||||
| return new ResultData(ErrorCode.COUPON_STOCK_VALID_DATE_SETTING_ERR); | |||||
| } | |||||
| if (wxCoupon.getValidEndDate() != null && wxCoupon.getValidEndDate().before(coupon.getValidEndDate())) { | |||||
| return new ResultData(ErrorCode.COUPON_STOCK_ENDTIME_ERR); | |||||
| } | |||||
| if (wxCoupon.getInventory() != null && wxCoupon.getInventory().intValue() < coupon.getInventory().intValue()) { | |||||
| return new ResultData(ErrorCode.COUPON_STOCK_INV_ERR); | |||||
| } | |||||
| if (wxCoupon.getValidDays() != null && coupon.getValidDays() != null && wxCoupon.getValidDays().intValue() < coupon.getValidDays().intValue()) { | |||||
| return new ResultData(ErrorCode.COUPON_STOCK_ENDTIME_ERR); | |||||
| } | |||||
| wxCoupon.setSalePrice(coupon.getSalePrice()); | |||||
| if(!wxCouponService.validCouponDate(wxCoupon)) { | |||||
| return new ResultData(ResultData.ERROR,"券有效结束日期必须在30天以内。"); | |||||
| } | |||||
| wxCoupon.setSalePrice(null); | |||||
| //启动审批流 | |||||
| if (wxCoupon.getFlowParams() != null && wxCoupon.getFlowParams().size() > 0) { | |||||
| List<Map<String, Object>> variables = (List) wxCoupon.getFlowParams().get("variables"); | |||||
| Map<String, Object> map = new HashedMap(); | |||||
| map.put("key", "inventory"); | |||||
| map.put("value", wxCoupon.getInventory()); | |||||
| variables.add(map); | |||||
| map = new HashedMap(); | |||||
| map.put("key", "remainInventory"); | |||||
| map.put("value", wxCoupon.getRemainInventory()); | |||||
| variables.add(map); | |||||
| map = new HashedMap(); | |||||
| map.put("key", "type"); | |||||
| map.put("value", wxCoupon.getType()); | |||||
| variables.add(map); | |||||
| map = new HashedMap(); | |||||
| map.put("key", "validEndDate"); | |||||
| map.put("value", wxCoupon.getValidEndDate()); | |||||
| map = new HashedMap(); | |||||
| map.put("key", "validStartDate"); | |||||
| map.put("value", wxCoupon.getValidStartDate()); | |||||
| map = new HashedMap(); | |||||
| map.put("key", "validType"); | |||||
| map.put("value", wxCoupon.getValidType()); | |||||
| variables.add(map); | |||||
| map = new HashedMap(); | |||||
| map.put("key", "validDays"); | |||||
| map.put("value", wxCoupon.getValidDays()); | |||||
| variables.add(map); | |||||
| wxCoupon.getFlowParams().put("businessId",wxCoupon.getId()); | |||||
| wxFlowService.start(wxCoupon.getFlowParams(), getUserId(), getUser().getName(), wxCoupon); | |||||
| //更新状态 | |||||
| WxCoupon updateCoupon = new WxCoupon(); | |||||
| updateCoupon.updateTenantInfo(wxCoupon); | |||||
| updateCoupon.setId(wxCoupon.getId()); | |||||
| updateCoupon.setStockApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); | |||||
| updateCoupon.setUpdateDate(new Date()); | |||||
| wxCouponService.update(updateCoupon); | |||||
| redisLock.setCouponStock(wxCoupon.getId(), wxCoupon.getRemainInventory()); | |||||
| } else { | |||||
| redisLock.setCouponStock(wxCoupon.getId(), wxCoupon.getRemainInventory()); | |||||
| return wxCouponService.updateCouponStockAndEndTime(wxCoupon); | |||||
| } | |||||
| CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("根据id删除接口") | |||||
| @GetMapping("/del") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "券投放-删除") | |||||
| public ResultData delete(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::delete"); | |||||
| wxCouponService.deleteById(id,getTenantInfo().getTenantId()); | |||||
| CouponCacheUtils.removeCouponCache(redisTemplate, id); | |||||
| CouponCacheUtils.removeCouponMerchantCache(redisTemplate, id); | |||||
| return new ResultData(Result.SUCCESS, "删除成功", null); | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("根据id查询接口") | |||||
| @GetMapping("/findById") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "券投放-查询") | |||||
| public ResultData findById(@RequestParam Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::findById"); | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| return new ResultData(wxCouponService.getVoById(id,tenantEntity.getTenantId(),tenantEntity)); | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("根据id查询接口") | |||||
| @GetMapping("/findParentCouponById") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "券投放-查询") | |||||
| public ResultData findParentCouponById(@RequestParam Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::findById"); | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| return new ResultData(wxCouponService.getVoById(id,getTenantInfo().getParentTenantId(),tenantEntity)); | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("卡营销列表接口") | |||||
| @GetMapping("findCardCountList") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "券投放-卡营销列表") | |||||
| public ResultData findCardCountList(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { | |||||
| //默认时间本月第一天,截止到当天 | |||||
| Map<String, Object> result = new HashedMap(); | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| List<TenantEntity> tenantEntitys = wxMallService.getTenantEntitys(tenantEntity); | |||||
| if (wxCoupon.getStartdate() == null) { | |||||
| wxCoupon.setStartdate(DateUtils.getFirstDayForCurrMonth()); | |||||
| } | |||||
| if (wxCoupon.getEnddate() == null) { | |||||
| wxCoupon.setEnddate(DateUtils.stringToDate(DateUtils.getSystemTime("yyyy-MM-dd") + " 23:59:59")); | |||||
| } | |||||
| wxCoupon.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| PageInfo<WxCouponStatisVo> pageInfo = wxCouponService.findCountData(wxCoupon,tenantEntitys, pageNum, pageSize); | |||||
| for (WxCouponStatisVo coupon : pageInfo.getList()) { | |||||
| if (coupon.getSaleAmount() == null) { | |||||
| coupon.setSaleAmount(0); | |||||
| } | |||||
| if (coupon.getSumPayment() == null) { | |||||
| coupon.setSumPayment(0); | |||||
| } | |||||
| if (coupon.getSumSubsidy() == null) { | |||||
| coupon.setSumSubsidy(0); | |||||
| } | |||||
| } | |||||
| result.put("list", pageInfo); | |||||
| return new ResultData(result); | |||||
| } | |||||
| @ApiOperation("卡营销列表记录导出") | |||||
| @GetMapping("/cardCountExportData") | |||||
| @SystemControllerLog(description = "营销统计-卡营销数据导出") | |||||
| public void cardCountExportData(@ModelAttribute WxCoupon wxCoupon, HttpServletRequest request, HttpServletResponse response) { | |||||
| //默认时间本月第一天,截止到当天 | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| List<TenantEntity> tenantEntitys = wxMallService.getTenantEntitys(tenantEntity); | |||||
| if (wxCoupon.getStartdate() == null) { | |||||
| wxCoupon.setStartdate(DateUtils.getFirstDayForCurrMonth()); | |||||
| } | |||||
| if (wxCoupon.getEnddate() == null) { | |||||
| wxCoupon.setEnddate(DateUtils.stringToDate(DateUtils.getSystemTime("yyyy-MM-dd") + " 23:59:59")); | |||||
| } | |||||
| wxCoupon.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| wxCouponService.exportCardData(wxCoupon,tenantEntitys, request, response); | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("券营销列表接口") | |||||
| @GetMapping("findCouponCountList") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "券投放-券营销列表") | |||||
| public ResultData findCouponCountList(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { | |||||
| //默认时间本月第一天,截止到当天 | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| List<TenantEntity> tenantEntitys = wxMallService.getTenantEntitys(tenantEntity); | |||||
| Map<String, Object> result = new HashedMap(); | |||||
| if (wxCoupon.getStartdate() == null) { | |||||
| wxCoupon.setStartdate(DateUtils.getFirstDayForCurrMonth()); | |||||
| } | |||||
| if (wxCoupon.getEnddate() == null) { | |||||
| wxCoupon.setEnddate(DateUtils.stringToDate(DateUtils.getSystemTime("yyyy-MM-dd") + " 23:59:59")); | |||||
| } | |||||
| wxCoupon.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| PageInfo<WxCouponStatisVo> pageInfo = wxCouponService.findCouponData(wxCoupon, tenantEntitys, pageNum, pageSize); | |||||
| for (WxCouponStatisVo coupon : pageInfo.getList()) { | |||||
| if (coupon.getSumSubsidy() == null) { | |||||
| coupon.setSumSubsidy(0); | |||||
| } | |||||
| if (coupon.getSumSubsidy() == null) { | |||||
| coupon.setSumSubsidy(0); | |||||
| } | |||||
| } | |||||
| return new ResultData(pageInfo); | |||||
| } | |||||
| @ApiOperation("券营销列表记录导出") | |||||
| @GetMapping("/couponCountExportData") | |||||
| @SystemControllerLog(description = "营销统计-券营销数据导出") | |||||
| public void couponCountExportData(@ModelAttribute WxCoupon wxCoupon, HttpServletRequest request, HttpServletResponse response) { | |||||
| //默认时间本月第一天,截止到当天 | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| List<TenantEntity> tenantEntitys = wxMallService.getTenantEntitys(tenantEntity); | |||||
| if (wxCoupon.getStartdate() == null) { | |||||
| wxCoupon.setStartdate(DateUtils.getFirstDayForCurrMonth()); | |||||
| } | |||||
| if (wxCoupon.getEnddate() == null) { | |||||
| wxCoupon.setEnddate(DateUtils.stringToDate(DateUtils.getSystemTime("yyyy-MM-dd") + " 23:59:59")); | |||||
| } | |||||
| wxCoupon.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| wxCouponService.exportCouponData(wxCoupon,tenantEntitys, request, response); | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("砍价营销列表接口") | |||||
| @GetMapping("findPressCountList") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "券投放-砍价营销列表") | |||||
| public ResultData findPressCountList(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| List<TenantEntity> tenantEntitys = wxMallService.getTenantEntitys(tenantEntity); | |||||
| wxCoupon.updateTenantInfo(tenantEntity); | |||||
| wxCoupon.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| PageInfo<WxCouponStatisVo> pages = wxCouponService.findPressData(wxCoupon,tenantEntitys,pageNum,pageSize); | |||||
| return new ResultData(pages); | |||||
| } | |||||
| @ApiOperation("砍价营销列表记录导出") | |||||
| @GetMapping("/pressCountExportData") | |||||
| @SystemControllerLog(description = "营销统计-券营销数据导出") | |||||
| public void pressCountExportData(@ModelAttribute WxCoupon wxCoupon, HttpServletRequest request, HttpServletResponse response) { | |||||
| //默认时间本月第一天,截止到当天 | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| List<TenantEntity> tenantEntitys = wxMallService.getTenantEntitys(tenantEntity); | |||||
| wxCoupon.updateTenantInfo(tenantEntity); | |||||
| wxCoupon.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); | |||||
| wxCouponService.exportPressData(wxCoupon,tenantEntitys, request, response); | |||||
| } | |||||
| @GetMapping("exportCouponPassword") | |||||
| @SystemControllerLog(description = "卡券兑换码-导出数据") | |||||
| public void exportCouponPassword(@ModelAttribute WxCouponPassword wxCouponPassword, HttpServletRequest request, HttpServletResponse response) { | |||||
| wxCouponPassword.updateTenantInfo(getTenantInfo()); | |||||
| if (wxCouponPassword.getCouponId() == null) { | |||||
| wxCouponPassword.setCouponId(0L); | |||||
| } | |||||
| couponPasswordService.exportData(request, response, wxCouponPassword); | |||||
| if (null != wxCouponPassword.getCouponId()) { | |||||
| CouponCacheUtils.removeCouponCache(redisTemplate, wxCouponPassword.getCouponId()); | |||||
| } | |||||
| } | |||||
| @ApiOperation("根据id获取富文本接口") | |||||
| @GetMapping("/getHtml") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "券投放-富文本获取") | |||||
| public ResultData getHtml(@RequestParam Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponController::getHtmlById"); | |||||
| return new ResultData(wxCouponService.getHtmlById(id,getTenantInfo().getTenantId())); | |||||
| } | |||||
| @ApiOperation("卡延期") | |||||
| @PostMapping("/cardDefer") | |||||
| @SystemControllerLog(description = "卡延期") | |||||
| public ResultData cardDefer(@RequestBody WxCoupon wxCoupon) { | |||||
| if (wxCoupon.getId() == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少id"); | |||||
| } | |||||
| if (wxCoupon.getValidEndDate() == null) { | |||||
| return new ResultData(ResultData.ERROR, "缺少validEndDate"); | |||||
| } | |||||
| ResultData result = wxCouponService.cardDefer(wxCoupon.getId(),getTenantInfo().getTenantId(),wxCoupon.getValidEndDate()); | |||||
| CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); | |||||
| return result; | |||||
| } | |||||
| @ApiOperation("集团查询:查询平台券商场列表") | |||||
| @GetMapping("/getPlatMallList") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| public ResultData getPlatMallList(@RequestParam Long id) { | |||||
| WxCouponMall wxCouponMall = new WxCouponMall(); | |||||
| wxCouponMall.updateTenantInfo(getTenantInfo()); | |||||
| wxCouponMall.setProductId(id); | |||||
| return new ResultData(wxCouponMallService.list(wxCouponMall,true)); | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("平台券商场列表") | |||||
| @GetMapping("/getCouponMall") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)}) | |||||
| public ResultData getCouponMall(Long id) { | |||||
| //如果是集团查询,则查询所有的,如果是商场查询,则只查询商场的 | |||||
| WxCouponMall wxCouponMall = new WxCouponMall(); | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| if (null == tenantEntity.getParentTenantId()) { | |||||
| wxCouponMall.updateTenantInfo(tenantEntity); | |||||
| wxCouponMall.setProductId(id); | |||||
| }else { | |||||
| wxCouponMall.setTenantId(tenantEntity.getParentTenantId()); | |||||
| //一个商场,每个平台券只有一条记录 | |||||
| wxCouponMall.setMallTenantId(tenantEntity.getTenantId()); | |||||
| wxCouponMall.setProductId(id); | |||||
| } | |||||
| List<WxCouponMall> mallList= wxCouponMallService.list(wxCouponMall,false); | |||||
| if (null != mallList && mallList.size() > 0 ) { | |||||
| boolean isComplete = true; | |||||
| for (int i = 0 ; i < mallList.size(); i ++) { | |||||
| WxCouponMall cm = mallList.get(i); | |||||
| if (EnumCouponMallStatus.UNFINISED.getCode() == cm.getStatus()) { | |||||
| isComplete = false; | |||||
| break; | |||||
| } | |||||
| } | |||||
| if (isComplete) { | |||||
| return new ResultData("{\"isCompleted\":1}"); | |||||
| }else { | |||||
| return new ResultData("{\"isCompleted\":0}"); | |||||
| } | |||||
| }else { | |||||
| return new ResultData("{\"isCompleted\":0}"); | |||||
| } | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("商场设置平台券商户") | |||||
| @PostMapping("/setParentCouponMerchants") | |||||
| public ResultData setMallMerchants(@RequestBody WxCoupon wxCoupon) { | |||||
| try { | |||||
| wxCouponService.setParentCouponMallMerchants(getTenantInfo(),wxCoupon); | |||||
| } catch (Exception e) { | |||||
| return new ResultData(Result.ERROR,e.getMessage()); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("自己券商户是否自动分账") | |||||
| @PostMapping("/couponMerchantAutoShare") | |||||
| public ResultData couponMerchantAutoShare(@RequestBody WxCoupon wxCoupon) { | |||||
| wxCoupon.updateTenantInfo(getTenantInfo()); | |||||
| try { | |||||
| Map<Long, Boolean> map = wxCouponService.couponMerchantAutoShare(wxCoupon,wxCoupon); | |||||
| return new ResultData(map); | |||||
| } catch (Exception e) { | |||||
| return new ResultData(Result.ERROR,e.getMessage()); | |||||
| } | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("父券商户是否自动分账") | |||||
| @PostMapping("/parentCouponMerchantAutoShare") | |||||
| public ResultData parentCouponMerchantAutoShare(@RequestBody WxCoupon wxCoupon) { | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| wxCoupon.setTenantId(tenantEntity.getParentTenantId()); | |||||
| wxCoupon.setParentTenantId(null); | |||||
| try { | |||||
| Map<Long, Boolean> map = wxCouponService.couponMerchantAutoShare(tenantEntity,wxCoupon); | |||||
| return new ResultData(map); | |||||
| } catch (Exception e) { | |||||
| return new ResultData(Result.ERROR,e.getMessage()); | |||||
| } | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("商场设置平台券已完成") | |||||
| @PostMapping("/setPlatCouponFinished") | |||||
| public ResultData setPlatCouponFinished(@RequestBody WxCoupon wxCoupon) { | |||||
| try { | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| String mallTenantId = tenantEntity.getTenantId(); | |||||
| String tenantId = tenantEntity.getTenantId(); | |||||
| if (null != tenantEntity.getParentTenantId()) { | |||||
| tenantId = tenantEntity.getParentTenantId(); | |||||
| } | |||||
| wxCouponMallService.finised(tenantId, wxCoupon.getId(), mallTenantId); | |||||
| return new ResultData(); | |||||
| } catch (Exception e) { | |||||
| return new ResultData(Result.ERROR,e.getMessage()); | |||||
| } | |||||
| } | |||||
| @TenantIgnore | |||||
| @ApiOperation("商场设置平台券未完成") | |||||
| @PostMapping("/setPlatCouponUnFinished") | |||||
| public ResultData setPlatCouponUnFinished(@RequestBody WxCoupon wxCoupon) { | |||||
| try { | |||||
| if (null == wxCoupon.getType()) { | |||||
| return new ResultData(Result.ERROR,"缺少参数"); | |||||
| } | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| String mallTenantId = tenantEntity.getTenantId(); | |||||
| String tenantId = tenantEntity.getTenantId(); | |||||
| if (null != tenantEntity.getParentTenantId()) { | |||||
| tenantId = tenantEntity.getParentTenantId(); | |||||
| } | |||||
| wxCouponMallService.unfinised(tenantId, wxCoupon.getId(),wxCoupon.getType(), mallTenantId); | |||||
| return new ResultData(); | |||||
| } catch (Exception e) { | |||||
| return new ResultData(Result.ERROR,e.getMessage()); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,175 +0,0 @@ | |||||
| package com.iformall.controller.market; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.WxCoupon; | |||||
| import com.iformall.domain.po.WxCouponSend; | |||||
| import com.iformall.domain.vo.WxCouponSendVo; | |||||
| import com.iformall.enums.EnumCouponSendSendType; | |||||
| import com.iformall.enums.EnumCouponSendType; | |||||
| import com.iformall.enums.EnumCouponStatus; | |||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.service.WxCouponActionLogService; | |||||
| import com.iformall.service.WxCouponSendService; | |||||
| import com.iformall.service.WxCouponService; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import java.util.Date; | |||||
| import java.util.Objects; | |||||
| @RestController | |||||
| @RequestMapping("wxCouponSend") | |||||
| @Api(description = "注劵接口") | |||||
| public class WxCouponSendController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxCouponSendService wxCouponSendService; | |||||
| @Autowired | |||||
| private WxCouponService wxCouponService; | |||||
| @Autowired | |||||
| private WxCouponActionLogService wxCouponActionLogService; | |||||
| @ApiOperation("分页列表接口") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "merchantName", value = "商户名,模糊查询", dataType = "String", paramType = "query"), | |||||
| @ApiImplicitParam(name = "merchantId", value = "商户Id", dataType = "String", paramType = "query"), | |||||
| }) | |||||
| @SystemControllerLog(description = "注券-列表") | |||||
| public ResultData list(@ModelAttribute WxCouponSend wxCouponSend, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponSendController::list"); | |||||
| if (null == wxCouponSend) wxCouponSend = new WxCouponSend(); | |||||
| wxCouponSend.updateTenantInfo(getTenantInfo()); | |||||
| // if (Objects.equals(EnumCouponSendSendType.MERCHANT.getCode(), wxCouponSend.getSendType())) { | |||||
| // if (Objects.nonNull(wxCouponSend.getStatus())) { | |||||
| // valid = wxCouponSend.getStatus(); | |||||
| // } else { | |||||
| // wxCouponSend.setStatus(null); | |||||
| // } | |||||
| // } | |||||
| PageInfo<WxCouponSendVo> page = wxCouponSendService.listAsPage(wxCouponSend, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("注券-添加配置") | |||||
| @GetMapping("config/add") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "beforeDays", value = "提前n天发券", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "sendType", value = "注券类型(生日券=8)", dataType = "int", paramType = "query", required = true), | |||||
| }) | |||||
| @SystemControllerLog(description = "注券-添加或更新配置") | |||||
| public ResultData addConfig(Integer beforeDays, Integer sendType) { | |||||
| if (!Objects.equals(sendType, EnumCouponSendSendType.BIRTHDAY.getCode())) { | |||||
| return new ResultData(ErrorCode.COUPON_VALID_NOT_SUPPORTED); | |||||
| } | |||||
| try { | |||||
| wxCouponSendService.saveOrUpdateConfig(beforeDays, sendType, getTenantInfo()); | |||||
| } catch (MallinkException e) { | |||||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||||
| } catch (Exception e) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, e.getMessage()); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("注券-获取配置") | |||||
| @GetMapping("config/get") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "sendType", value = "注券类型(生日券=8)", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "注券-获取配置") | |||||
| public ResultData getConfig(Integer sendType) { | |||||
| WxCouponSend wxCouponSend = wxCouponSendService.getConfig(sendType, getTenantInfo()); | |||||
| return new ResultData(Objects.isNull(wxCouponSend) ? null : wxCouponSend.getConditions()); | |||||
| } | |||||
| @ApiOperation("新增接口") | |||||
| @PostMapping("add") | |||||
| @SystemControllerLog(description = "注券-新增") | |||||
| public ResultData add(@RequestBody WxCouponSend wxCouponSend) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponSendController::add"); | |||||
| if (null == wxCouponSend) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); | |||||
| } | |||||
| WxCoupon wxCoupon = wxCouponService.getById(wxCouponSend.getCouponId(),getTenantInfo().getTenantId()); | |||||
| if (!EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode().equals(wxCoupon.getStatus())) { | |||||
| return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); | |||||
| } | |||||
| if (!EnumCouponSendType.PASSIVE.getCode().equals(wxCoupon.getSendType())) { | |||||
| return new ResultData(ErrorCode.COUPON_TYPE_IS_NOT_PASSIVE); | |||||
| } | |||||
| wxCouponSend.updateTenantInfo(wxCoupon); | |||||
| wxCouponSend.setTitle(wxCoupon.getTitle()); | |||||
| wxCouponSend.setCreateDate(new Date()); | |||||
| wxCouponSend.setUpdateDate(new Date()); | |||||
| try { | |||||
| wxCouponSend.setOperatorId(getUserId()); | |||||
| wxCouponSendService.saveOrUpdate(wxCouponSend); | |||||
| } catch (MallinkException e) { | |||||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | |||||
| // @ApiOperation("根据id更新接口") | |||||
| // @PostMapping("update") | |||||
| // @SystemControllerLog(description = "注券-更新") | |||||
| // public ResultData update(@RequestBody WxCouponSend wxCouponSend) { | |||||
| // logger.debug("[" + getIpAddr() + "] WxCouponSendController::update"); | |||||
| // wxCouponSend.updateTenantInfo(getTenantInfo()); | |||||
| // wxCouponSendService.saveOrUpdate(wxCouponSend); | |||||
| // return new ResultData(); | |||||
| // } | |||||
| @ApiOperation("根据id删除接口") | |||||
| @GetMapping("/del") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "sendType", value = "注券类型(会员生日券时必传)", dataType = "int", paramType = "query") | |||||
| }) | |||||
| @SystemControllerLog(description = "注券-删除") | |||||
| public ResultData delete(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponSendController::delete"); | |||||
| WxCouponSend wxCouponSend = wxCouponSendService.getById(id,getTenantInfo().getTenantId()); | |||||
| if (wxCouponSend == null) { | |||||
| return new ResultData(ErrorCode.COUPON_SEND_IS_INVALID); | |||||
| } | |||||
| try { | |||||
| wxCouponSendService.updateInvalid(wxCouponSend); | |||||
| } catch (MallinkException e) { | |||||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("根据id查询接口") | |||||
| @GetMapping("/findById") | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "注券-查询") | |||||
| public ResultData findById(Long id) { | |||||
| logger.debug("[" + getIpAddr() + "] WxCouponSendController::findById"); | |||||
| return new ResultData(Result.SUCCESS, "查询成功", wxCouponSendService.getById(id,getTenantInfo().getTenantId())); | |||||
| } | |||||
| } | |||||
| @@ -1,276 +0,0 @@ | |||||
| package com.iformall.controller.market; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.WxCoupon; | |||||
| import com.iformall.domain.po.WxCouponChannel; | |||||
| import com.iformall.domain.po.WxPressBatch; | |||||
| import com.iformall.domain.po.WxPressBatchItem; | |||||
| import com.iformall.domain.po.base.BaseEntity; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.enums.EnumCouponChannelStatus; | |||||
| import com.iformall.enums.EnumCouponChannelType; | |||||
| import com.iformall.enums.EnumCouponContentType; | |||||
| import com.iformall.enums.EnumCouponSourceType; | |||||
| import com.iformall.enums.EnumCouponType; | |||||
| import com.iformall.service.WxCouponChannelService; | |||||
| import com.iformall.service.WxCouponService; | |||||
| import com.iformall.service.WxPressBatchService; | |||||
| import com.iformall.utils.Constant; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.GetMapping; | |||||
| import org.springframework.web.bind.annotation.ModelAttribute; | |||||
| 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.RestController; | |||||
| import javax.servlet.http.HttpServletRequest; | |||||
| import javax.servlet.http.HttpServletResponse; | |||||
| import java.util.ArrayList; | |||||
| import java.util.HashMap; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| @RestController | |||||
| @RequestMapping("pressBatch") | |||||
| public class WxPressBatchController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| WxPressBatchService wxPressBatchService; | |||||
| @Autowired | |||||
| WxCouponService wxCouponService; | |||||
| @Autowired | |||||
| WxCouponChannelService wxCouponChannelService; | |||||
| @ApiOperation("分页列表接口") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true),}) | |||||
| public ResultData list(@ModelAttribute WxPressBatch record, Integer pageNum, Integer pageSize) { | |||||
| if (null == record) { | |||||
| record = new WxPressBatch(); | |||||
| } | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||||
| final PageInfo<WxPressBatch> page = wxPressBatchService.listAsPage(record, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("新增&修改接口") | |||||
| @PostMapping("saveOrUpdate") | |||||
| public ResultData saveOrUpdate(@RequestBody WxPressBatch record) { | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| record.updateTenantInfo(tenantEntity); | |||||
| wxPressBatchService.saveOrUpdate(record); | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("详情接口") | |||||
| @GetMapping("detail") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)}) | |||||
| public ResultData detail(Long id) { | |||||
| if (null == id) { | |||||
| return new ResultData(Result.ERROR,"参数错误"); | |||||
| } | |||||
| WxPressBatch order = wxPressBatchService.getById(id, getTenantInfo().getTenantId()); | |||||
| return new ResultData(order); | |||||
| } | |||||
| @ApiOperation("砍价券接口") | |||||
| @GetMapping("itemList") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| public ResultData itemList(Long id, Integer pageNum, Integer pageSize) { | |||||
| if (null == id) { | |||||
| return new ResultData(Result.ERROR,"参数错误"); | |||||
| } | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| PageInfo<WxPressBatchItem> itemPage = wxPressBatchService.getItemPage(id, tenantEntity.getTenantId(),pageNum,pageSize); | |||||
| List<WxPressBatchItem> items = itemPage.getList(); | |||||
| if (null != items && items.size() > 0 ) { | |||||
| List<Long> couponIdList = wxPressBatchService.getItemCouponIdList(id, tenantEntity.getTenantId()); | |||||
| WxCoupon record = new WxCoupon(); | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| if (null != couponIdList && couponIdList.size() > 0 ) { | |||||
| record.setIds(couponIdList); | |||||
| }else { | |||||
| record.setId(0L); | |||||
| } | |||||
| List<WxCoupon> list = wxCouponService.list(record); | |||||
| Map<Long,WxCoupon> couponMap = new HashMap<Long,WxCoupon>(); | |||||
| if (null != list && list.size() > 0 ) { | |||||
| for (WxCoupon c : list) { | |||||
| couponMap.put(c.getId(), c); | |||||
| } | |||||
| } | |||||
| for (WxPressBatchItem pbi : items) { | |||||
| WxCoupon coupon = couponMap.get(pbi.getCouponId()); | |||||
| pbi.setCoupon(coupon); | |||||
| } | |||||
| } | |||||
| return new ResultData(itemPage); | |||||
| } | |||||
| @ApiOperation("删除接口") | |||||
| @PostMapping("delete") | |||||
| public ResultData delete(@RequestBody WxPressBatch record) { | |||||
| if (null == record.getId()) { | |||||
| return new ResultData(Result.ERROR,"参数错误"); | |||||
| } | |||||
| wxPressBatchService.deleteBatch(record.getId(), getTenantInfo().getTenantId()); | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("已投放砍价券列表接口") | |||||
| @GetMapping("couponList") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true),}) | |||||
| public ResultData couponList(@ModelAttribute WxCoupon record, Integer pageNum, Integer pageSize) { | |||||
| WxCouponChannel couponChannelQ = new WxCouponChannel(); | |||||
| couponChannelQ.updateTenantInfo(getTenantInfo()); | |||||
| couponChannelQ.setType(EnumCouponType.COUPON_PRESS.getCode()); | |||||
| couponChannelQ.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_PRESS.getCode()); | |||||
| couponChannelQ.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); | |||||
| List<Long> couponIds = wxCouponChannelService.findCouponIdList(couponChannelQ); | |||||
| if (null == record) { | |||||
| record = new WxCoupon(); | |||||
| } | |||||
| record.updateTenantInfo(couponChannelQ); | |||||
| if (null != couponIds && couponIds.size() > 0 ) { | |||||
| record.setIds(couponIds); | |||||
| }else { | |||||
| record.setId(0L); | |||||
| } | |||||
| PageInfo<WxCoupon> page = wxCouponService.simplelistAsPage(record, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("新增items") | |||||
| @PostMapping("addItems") | |||||
| public ResultData addItems(@RequestBody WxPressBatch record) { | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| record.updateTenantInfo(tenantEntity); | |||||
| if (null == record.getId()) { | |||||
| return new ResultData(Result.ERROR,"参数错误"); | |||||
| } | |||||
| String cidstr = record.getCouponIds(); | |||||
| if (StringUtils.isBlank(cidstr)) { | |||||
| return new ResultData(Result.ERROR,"参数错误"); | |||||
| } | |||||
| String[] cids = cidstr.split(","); | |||||
| if (null == cids || cids.length <= 0 ) { | |||||
| return new ResultData(Result.ERROR,"请选择砍价券"); | |||||
| } | |||||
| List<Long> rcids = new ArrayList<Long>(); | |||||
| for (String cid: cids) { | |||||
| rcids.add(Long.parseLong(cid)); | |||||
| } | |||||
| //已经存在了的不能再加入 | |||||
| List<Long> arrayCouponIds = wxPressBatchService.getCouponIds(tenantEntity.getTenantId()); | |||||
| if (null != arrayCouponIds && arrayCouponIds.size() > 0 ) { | |||||
| if (arrayCouponIds.containsAll(rcids)) { | |||||
| return new ResultData(Result.ERROR,"所选择的券已经加入了一个批次,不能再加"); | |||||
| } | |||||
| List<Long> extraCouponIds = new ArrayList<Long>(); | |||||
| extraCouponIds.addAll(rcids); | |||||
| extraCouponIds.removeAll(arrayCouponIds); | |||||
| List<Long> sameCouponIds = new ArrayList<Long>(); | |||||
| sameCouponIds.addAll(rcids); | |||||
| sameCouponIds.removeAll(extraCouponIds); | |||||
| if (sameCouponIds.size() > 0) { | |||||
| WxCoupon couponQ = new WxCoupon(); | |||||
| couponQ.updateTenantInfo(tenantEntity); | |||||
| couponQ.setIds(sameCouponIds); | |||||
| List<WxCoupon> couponList = wxCouponService.list(couponQ); | |||||
| if (null == couponList || couponList.size() <= 0 ) { | |||||
| return new ResultData(Result.ERROR,"未查询到这些券"); | |||||
| } | |||||
| Map<Long,String> couponNameMap = new HashMap<Long,String>(); | |||||
| for (WxCoupon c: couponList) { | |||||
| couponNameMap.put(c.getId(),c.getTitle()); | |||||
| } | |||||
| StringBuffer sb = new StringBuffer("已经存在一个批次的券:"); | |||||
| for (Long _cid: sameCouponIds) { | |||||
| sb.append(couponNameMap.get(_cid)).append(","); | |||||
| } | |||||
| return new ResultData(Result.ERROR,sb.toString()); | |||||
| } | |||||
| } | |||||
| List<Long> batchCids = wxPressBatchService.getItemCouponIdList(record.getId(), tenantEntity.getTenantId()); | |||||
| if (null != cids && cids.length > 0 ) { | |||||
| if (null != batchCids && batchCids.size() > 0 ) { | |||||
| rcids.removeAll(batchCids); | |||||
| } | |||||
| WxPressBatch order = wxPressBatchService.getById(record.getId(), tenantEntity.getTenantId()); | |||||
| wxPressBatchService.saveItems(order, rcids); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("详情接口") | |||||
| @PostMapping("deleteItem") | |||||
| public ResultData deleteItem(@RequestBody WxPressBatchItem record) { | |||||
| if (null == record.getId()) { | |||||
| return new ResultData(Result.ERROR,"参数错误"); | |||||
| } | |||||
| wxPressBatchService.deleteItemById(record.getId(), getTenantInfo().getTenantId()); | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("详情接口") | |||||
| @PostMapping("updateStatus") | |||||
| public ResultData updateStatus(@RequestBody WxPressBatch record) { | |||||
| if (null == record.getId() || null == record.getStatus()) { | |||||
| return new ResultData(Result.ERROR,"参数错误"); | |||||
| } | |||||
| record.updateTenantInfo(getTenantInfo()); | |||||
| wxPressBatchService.updateStatus(record); | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("详情接口") | |||||
| @PostMapping("setRules") | |||||
| public ResultData setRules(@RequestBody WxPressBatch record) { | |||||
| if (null == record.getId()) { | |||||
| return new ResultData(Result.ERROR,"参数错误"); | |||||
| } | |||||
| WxPressBatch record1 = wxPressBatchService.getById(record.getId(), getTenantInfo().getTenantId()); | |||||
| record1.setPromoterLimitRule(record.getPromoterLimitRule()); | |||||
| record1.setPromoterAllowCount(record.getPromoterAllowCount()); | |||||
| record1.setBargainerAllowCount(record.getBargainerAllowCount()); | |||||
| record1.setBargainerAllowSame(record.getBargainerAllowSame()); | |||||
| wxPressBatchService.saveOrUpdate(record1); | |||||
| return new ResultData(); | |||||
| } | |||||
| } | |||||
| @@ -1,192 +0,0 @@ | |||||
| package com.iformall.controller.mem; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.base.BaseEntity; | |||||
| import com.iformall.domain.vo.WxCouponChannelVo; | |||||
| import com.iformall.enums.EnumCouponChannelStatus; | |||||
| import com.iformall.enums.EnumCouponChannelType; | |||||
| import com.iformall.service.*; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| @RestController | |||||
| @RequestMapping("memCoupon") | |||||
| @Api(description = "会员券相关接口") | |||||
| public class MemCouponController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxCouponChannelService couponChannelService; | |||||
| @Autowired | |||||
| private MemCouponFromDspService memCouponFromDspService; | |||||
| @Autowired | |||||
| private WxCouponService couponService; | |||||
| @ApiOperation("已投放券列表接口") | |||||
| @GetMapping("couponChannelList") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "会员券管理-已投放列表") | |||||
| public ResultData couponChannelList(Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] MemCouponController::list"); | |||||
| WxCouponChannel wxCouponChannel = new WxCouponChannel(); | |||||
| if (null == wxCouponChannel) { | |||||
| wxCouponChannel = new WxCouponChannel(); | |||||
| } | |||||
| wxCouponChannel.updateTenantInfo(getTenantInfo()); | |||||
| wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_H5.getCode()); | |||||
| wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); | |||||
| if(StringUtils.isNotBlank(wxCouponChannel.getSortColumn())){ | |||||
| // String coryColumn = "c."+wxCouponChannel.getSortColumns(); | |||||
| // wxCouponChannel.setSortColumns(coryColumn); | |||||
| // wxCouponChannel.setSortColumn(null); | |||||
| }else{ | |||||
| wxCouponChannel.setSortColumns(BaseEntity.SortField.CCUpdateDate_DESC); | |||||
| } | |||||
| final PageInfo<WxCouponChannelVo> page = couponChannelService.newListPageVo(wxCouponChannel, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("已发放券列表接口") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||||
| @SystemControllerLog(description = "会员券管理-列表") | |||||
| public ResultData list(@ModelAttribute MemCouponFromDsp memCouponFromDsp, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] MemCouponController::list"); | |||||
| if (null == memCouponFromDsp) { | |||||
| memCouponFromDsp = new MemCouponFromDsp(); | |||||
| } else { | |||||
| if (StringUtils.isBlank(memCouponFromDsp.getPhone())) { | |||||
| memCouponFromDsp.setPhone(null); | |||||
| } | |||||
| } | |||||
| memCouponFromDsp.updateTenantInfo(getTenantInfo()); | |||||
| memCouponFromDsp.setSortColumns(BaseEntity.SortField.CreateDate_DESC); | |||||
| PageInfo<MemCouponFromDsp> page = memCouponFromDspService.listAsPage(memCouponFromDsp, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| @ApiOperation("检查用户购买券是否可用") | |||||
| @PostMapping("checkMemCoupon") | |||||
| @SystemControllerLog(description = "会员券管理-检查") | |||||
| public ResultData checkMemCoupon(@RequestBody MemCouponFromDsp memCouponFromDsp) { | |||||
| logger.debug("[" + getIpAddr() + "] MemCouponController::add"); | |||||
| if (StringUtils.isBlank(memCouponFromDsp.getPhone())) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "phone必填"); | |||||
| } | |||||
| if (memCouponFromDsp.getCouponChannelId() == null) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId必填"); | |||||
| } | |||||
| memCouponFromDsp.updateTenantInfo(getTenantInfo()); | |||||
| WxCouponChannel couponChannel = couponChannelService.getById(memCouponFromDsp.getCouponChannelId(),getTenantInfo().getTenantId()); | |||||
| if (memCouponFromDsp.getCouponId() == null) { | |||||
| memCouponFromDsp.setCouponId(couponChannel.getCouponId()); | |||||
| } | |||||
| // 1. 检查券是否已超限, 无剩余库存 | |||||
| WxCoupon coupon = couponService.getById(memCouponFromDsp.getCouponId(),memCouponFromDsp.getTenantId()); | |||||
| if (coupon == null) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "券不存在:" + memCouponFromDsp.getCouponId()); | |||||
| } | |||||
| MemCouponFromDsp couponQ = new MemCouponFromDsp(); | |||||
| couponQ.updateTenantInfo(memCouponFromDsp); | |||||
| couponQ.setCouponId(memCouponFromDsp.getCouponId()); | |||||
| couponQ.setStatus(0); | |||||
| Integer couponCount = memCouponFromDspService.countByInfo(couponQ); | |||||
| if (coupon.getRemainInventory() <= couponCount) { | |||||
| return new ResultData(ErrorCode.REMAIN_IS_EMPTY); | |||||
| } | |||||
| // 2. 检查此会员是否已超限, 达到券购买限制 | |||||
| couponQ = new MemCouponFromDsp(); | |||||
| couponQ.updateTenantInfo(memCouponFromDsp); | |||||
| couponQ.setPhone(memCouponFromDsp.getPhone()); | |||||
| couponQ.setCouponId(memCouponFromDsp.getCouponId()); | |||||
| couponCount = memCouponFromDspService.countByInfo(couponQ); | |||||
| if (coupon.getUseLimitQuantity() <= couponCount) { | |||||
| return new ResultData(ErrorCode.ORDER_IS_LIMITED); | |||||
| } | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("根据id更新接口") | |||||
| @PostMapping("add") | |||||
| @SystemControllerLog(description = "会员券管理-添加") | |||||
| public ResultData add(@RequestBody MemCouponFromDsp memCouponFromDsp) { | |||||
| logger.debug("[" + getIpAddr() + "] MemCouponController::add"); | |||||
| if (StringUtils.isBlank(memCouponFromDsp.getPhone())) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "phone必填"); | |||||
| } | |||||
| if (memCouponFromDsp.getCouponChannelId() == null) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId必填"); | |||||
| } | |||||
| memCouponFromDsp.updateTenantInfo(getTenantInfo()); | |||||
| WxCouponChannel couponChannel = couponChannelService.getById(memCouponFromDsp.getCouponChannelId(),getTenantInfo().getTenantId()); | |||||
| if (memCouponFromDsp.getCouponId() == null) { | |||||
| memCouponFromDsp.setCouponId(couponChannel.getCouponId()); | |||||
| } | |||||
| // 1. 检查券是否已超限, 无剩余库存 | |||||
| WxCoupon coupon = couponService.getById(memCouponFromDsp.getCouponId(),couponChannel.getTenantId()); | |||||
| if (coupon == null) { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "券不存在:" + memCouponFromDsp.getCouponId()); | |||||
| } | |||||
| MemCouponFromDsp couponQ = new MemCouponFromDsp(); | |||||
| couponQ.updateTenantInfo(memCouponFromDsp); | |||||
| couponQ.setCouponId(memCouponFromDsp.getCouponId()); | |||||
| couponQ.setStatus(0); | |||||
| Integer couponCount = memCouponFromDspService.countByInfo(couponQ); | |||||
| if (coupon.getRemainInventory() <= couponCount) { | |||||
| return new ResultData(ErrorCode.REMAIN_IS_EMPTY); | |||||
| } | |||||
| // 2. 检查此会员是否已超限, 达到券购买限制 | |||||
| couponQ = new MemCouponFromDsp(); | |||||
| couponQ.updateTenantInfo(memCouponFromDsp); | |||||
| couponQ.setPhone(memCouponFromDsp.getPhone()); | |||||
| couponQ.setCouponId(memCouponFromDsp.getCouponId()); | |||||
| couponCount = memCouponFromDspService.countByInfo(couponQ); | |||||
| if (coupon.getUseLimitQuantity() <= couponCount) { | |||||
| return new ResultData(ErrorCode.ORDER_IS_LIMITED); | |||||
| } | |||||
| // 3. 保存 | |||||
| memCouponFromDsp.setStatus(0); | |||||
| memCouponFromDspService.saveOrUpdate(memCouponFromDsp); | |||||
| return new ResultData(); | |||||
| } | |||||
| @ApiOperation("根据手机号查询接口") | |||||
| @GetMapping("/findByPhone") | |||||
| @ApiImplicitParam(name = "phone", value = "phone", dataType = "String", paramType = "query", required = true) | |||||
| @SystemControllerLog(description = "会员券管理-根据手机号查询接口") | |||||
| public ResultData findByPhone(String phone) { | |||||
| logger.debug("[" + getIpAddr() + "] MemCouponController::findByPhone"); | |||||
| if (StringUtils.isEmpty(phone)) { | |||||
| return new ResultData(new ArrayList<MemCouponFromDsp>()); | |||||
| } | |||||
| MemCouponFromDsp memQ = new MemCouponFromDsp(); | |||||
| memQ.updateTenantInfo(getTenantInfo()); | |||||
| memQ.setPhone(phone); | |||||
| List<MemCouponFromDsp> memCouponFromDsps = memCouponFromDspService.getList(memQ); | |||||
| return new ResultData(memCouponFromDsps); | |||||
| } | |||||
| } | |||||
| @@ -24,7 +24,6 @@ import com.iformall.enums.yqzj.EnumYqzjLunboType; | |||||
| import com.iformall.enums.yqzj.EnumYqzjNewsType; | import com.iformall.enums.yqzj.EnumYqzjNewsType; | ||||
| import com.iformall.enums.yqzj.EnumYqzjVideoType; | import com.iformall.enums.yqzj.EnumYqzjVideoType; | ||||
| import com.iformall.service.TtCouponGoodsService; | import com.iformall.service.TtCouponGoodsService; | ||||
| import com.iformall.service.WxCouponService; | |||||
| import com.iformall.service.YqzjService; | import com.iformall.service.YqzjService; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| @@ -24,7 +24,6 @@ import com.iformall.enums.yqzj.EnumYqzjLunboType; | |||||
| import com.iformall.enums.yqzj.EnumYqzjNewsType; | import com.iformall.enums.yqzj.EnumYqzjNewsType; | ||||
| import com.iformall.enums.yqzj.EnumYqzjVideoType; | import com.iformall.enums.yqzj.EnumYqzjVideoType; | ||||
| import com.iformall.service.TtCouponGoodsService; | import com.iformall.service.TtCouponGoodsService; | ||||
| import com.iformall.service.WxCouponService; | |||||
| import com.iformall.service.YqzjService; | import com.iformall.service.YqzjService; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| @@ -24,7 +24,6 @@ import com.iformall.enums.yqzj.EnumYqzjLunboType; | |||||
| import com.iformall.enums.yqzj.EnumYqzjNewsType; | import com.iformall.enums.yqzj.EnumYqzjNewsType; | ||||
| import com.iformall.enums.yqzj.EnumYqzjVideoType; | import com.iformall.enums.yqzj.EnumYqzjVideoType; | ||||
| import com.iformall.service.TtCouponGoodsService; | import com.iformall.service.TtCouponGoodsService; | ||||
| import com.iformall.service.WxCouponService; | |||||
| import com.iformall.service.YqzjService; | import com.iformall.service.YqzjService; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| @@ -24,7 +24,6 @@ import com.iformall.enums.yqzj.EnumYqzjLunboType; | |||||
| import com.iformall.enums.yqzj.EnumYqzjNewsType; | import com.iformall.enums.yqzj.EnumYqzjNewsType; | ||||
| import com.iformall.enums.yqzj.EnumYqzjPageNewsType; | import com.iformall.enums.yqzj.EnumYqzjPageNewsType; | ||||
| import com.iformall.service.TtCouponGoodsService; | import com.iformall.service.TtCouponGoodsService; | ||||
| import com.iformall.service.WxCouponService; | |||||
| import com.iformall.service.YqzjService; | import com.iformall.service.YqzjService; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| @@ -24,7 +24,6 @@ import com.iformall.enums.yqzj.EnumYqzjLunboType; | |||||
| import com.iformall.enums.yqzj.EnumYqzjNewsType; | import com.iformall.enums.yqzj.EnumYqzjNewsType; | ||||
| import com.iformall.enums.yqzj.EnumYqzjVideoType; | import com.iformall.enums.yqzj.EnumYqzjVideoType; | ||||
| import com.iformall.service.TtCouponGoodsService; | import com.iformall.service.TtCouponGoodsService; | ||||
| import com.iformall.service.WxCouponService; | |||||
| import com.iformall.service.YqzjService; | import com.iformall.service.YqzjService; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| @@ -1,304 +0,0 @@ | |||||
| package com.iformall.service; | |||||
| import java.util.*; | |||||
| import javax.servlet.http.HttpServletRequest; | |||||
| import javax.servlet.http.HttpServletResponse; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.TtCouponChannelPoi; | |||||
| import com.iformall.domain.po.WxAppinfo; | |||||
| import com.iformall.domain.po.WxCoupon; | |||||
| import com.iformall.domain.po.WxMall; | |||||
| import com.iformall.domain.po.WxMerchant; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.domain.vo.TtCouponVo; | |||||
| import com.iformall.domain.vo.WxCouponCVo; | |||||
| import com.iformall.domain.vo.WxCouponStatisVo; | |||||
| import com.iformall.domain.vo.WxMerchantVo; | |||||
| public interface WxCouponService { | |||||
| ResultData list(TenantEntity tenantEntity,WxCoupon wxCoupon, Integer pageNum, Integer pageSize); | |||||
| List<WxCoupon> list(WxCoupon wxCoupon); | |||||
| /** | |||||
| * 根据实体查询分页列表 | |||||
| * | |||||
| * @param record | |||||
| * @param pageIndex | |||||
| * @param pageSize | |||||
| * @return | |||||
| */ | |||||
| PageInfo<WxCoupon> listAsPage(WxCoupon record, Integer pageIndex, Integer pageSize); | |||||
| PageInfo<WxCoupon> simplelistAsPage(WxCoupon record, Integer pageIndex, Integer pageSize); | |||||
| /** | |||||
| * 卡类列表,包括统计 | |||||
| * @param record | |||||
| * @param tenantEntitys | |||||
| * @return | |||||
| */ | |||||
| PageInfo<WxCouponStatisVo> findCountData(WxCoupon record, List<TenantEntity> tenantEntitys, Integer pageNum, Integer pageSize); | |||||
| void exportCardData(WxCoupon record, List<TenantEntity> tenantEntitys, HttpServletRequest request, HttpServletResponse response); | |||||
| /** | |||||
| * 券列表,包括统计 | |||||
| * @param record | |||||
| * @param tenantEntitys | |||||
| * @return | |||||
| */ | |||||
| PageInfo<WxCouponStatisVo> findCouponData(WxCoupon record, List<TenantEntity> tenantEntitys, Integer pageNum, Integer pageSize); | |||||
| void exportCouponData(WxCoupon record, List<TenantEntity> tenantEntitys, HttpServletRequest request, HttpServletResponse response); | |||||
| /** | |||||
| * 砍价列表,包括统计 | |||||
| * @param record | |||||
| * @param tenantEntitys | |||||
| * @param pageNum | |||||
| * @param pageSize | |||||
| * @return | |||||
| */ | |||||
| PageInfo<WxCouponStatisVo> findPressData(WxCoupon record, List<TenantEntity> tenantEntitys, Integer pageNum, Integer pageSize); | |||||
| void exportPressData(WxCoupon record, List<TenantEntity> tenantEntitys, HttpServletRequest request, HttpServletResponse response); | |||||
| /** | |||||
| * 根据Id获得实体 | |||||
| * | |||||
| * @param id | |||||
| * @return | |||||
| */ | |||||
| WxCoupon getById(Long id,String tenantId); | |||||
| WxCoupon getPriceAndStock(Long id,String tenantId); | |||||
| List<WxCoupon> getPriceAndStock(List<Long> id,String tenantId); | |||||
| WxCoupon getHtmlById(Long id,String tenantId); | |||||
| WxCouponCVo getVoById(Long id,String couponTenantId,TenantEntity mallTenantEntity); | |||||
| WxCouponCVo getVoStatusById(Long id,String tenantId); | |||||
| WxCoupon getAttrsById(Long couponId, String tenantId); | |||||
| /** | |||||
| * 保存或更新实体 | |||||
| * | |||||
| * @param record | |||||
| */ | |||||
| ResultData saveOrUpdate(WxCoupon record); | |||||
| ResultData updateTtProduct(WxCoupon wxCoupon); | |||||
| /** | |||||
| * 更新实体 | |||||
| * | |||||
| * @param record | |||||
| */ | |||||
| void update(WxCoupon record); | |||||
| /** | |||||
| * 根据Id删除实体 | |||||
| * | |||||
| * @param id | |||||
| */ | |||||
| void deleteById(Long id,String tenantId); | |||||
| /** | |||||
| * 查询时间段内销售金额 | |||||
| * | |||||
| * @param tenantEntitys | |||||
| * @param wxCoupon | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> findSaleMoneyByDate(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 查询时间段内核销金额 | |||||
| * | |||||
| * @param tenantEntitys | |||||
| * @param wxCoupon | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> findPaymentByDate(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 查询售出卡数量 | |||||
| * @return | |||||
| */ | |||||
| Long findSaleCardCount(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 查询转增数量 | |||||
| * @return | |||||
| */ | |||||
| Long findTranCardCount(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 查询补贴金额 | |||||
| * @return | |||||
| */ | |||||
| String findSubsidyMoney(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| //----------------券-------------- | |||||
| /** | |||||
| * 券发放数量 | |||||
| * @return | |||||
| */ | |||||
| //List<WxCoupon> findCouponSendCount(WxCoupon wxCoupon); | |||||
| /** | |||||
| * 券购买数量 | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> findCouponOrderCount(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 券领取数量 | |||||
| * @return | |||||
| */ | |||||
| //List<WxCoupon> findCouponGetCount(WxCoupon wxCoupon); | |||||
| /** | |||||
| * 券核销数量 | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> findCouponPaymentCount(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 有价券销售数量 | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> priceCouponSaleCount(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 有价券核销数量 | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> priceCouponPaymentCount(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 有价券退款数量 | |||||
| * @return | |||||
| */ | |||||
| Long priceCouponCancelCount(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 有价券销售总额 | |||||
| * | |||||
| * @param tenantEntitys | |||||
| * @param wxCoupon | |||||
| * @return | |||||
| */ | |||||
| String findSumPriceSaleMoney(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| String findSumPricePayMent(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| String findSumSubsidyMoney(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 砍价发起次数走势 | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> pressSendHistory(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 砍价成功次数走势 | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> pressSuccHistory(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 砍价核销数量走势 | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> pressPaymentHistory(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 砍价转化率 | |||||
| * @return | |||||
| */ | |||||
| String pressSuccRate(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 砍价参与人数 | |||||
| * @return | |||||
| */ | |||||
| Long sumJoin(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 查询售出卡数量历史 | |||||
| * @return | |||||
| */ | |||||
| List<WxCouponStatisVo> findSaleCardCountHistory(List<TenantEntity> tenantEntitys, WxCoupon wxCoupon); | |||||
| /** | |||||
| * 增加库存及修改有效时间 | |||||
| */ | |||||
| ResultData updateCouponStockAndEndTime(WxCoupon wxCoupon); | |||||
| WxCoupon findById(WxCoupon wxCoupon); | |||||
| /** | |||||
| * 库存减少 | |||||
| * | |||||
| * @param id 券ID | |||||
| * @param number 减少数量 | |||||
| * @param remainInventory 当前库存 | |||||
| */ | |||||
| void reduceRemainInventory(TenantEntity tenantEntity,Long id, Integer number); | |||||
| /** | |||||
| * 库存退回 | |||||
| * | |||||
| * @param id 券ID | |||||
| * @param number 回退数量 | |||||
| * @param remainInventory 当前库存 | |||||
| */ | |||||
| void backRemainInventory(TenantEntity tenantEntity,Long id, Integer number, Integer remainInventory); | |||||
| /** | |||||
| * 卡延期 | |||||
| * @param wxCoupon | |||||
| * @return | |||||
| */ | |||||
| ResultData cardDefer(Long id,String tenantId,Date validEndDate); | |||||
| boolean validCouponDate(WxCoupon wxCoupon); | |||||
| ResultData validGiftCouponDate(WxCoupon wxCoupon); | |||||
| /** | |||||
| * 获取券商户map | |||||
| * | |||||
| */ | |||||
| Map<Long,String> getCouponMerchantMap(List<Long> couponIds,TenantEntity tenantEntity,boolean onlyOneMerchantCoupons); | |||||
| Map<Long, WxCoupon> getCouponMap(List<Long> couponIds, TenantEntity tenantEntity); | |||||
| Map<String,List<WxMerchantVo>> getCouponMerchantList(TenantEntity tenantInfo, Long couponId); | |||||
| /** | |||||
| * 作废卷 | |||||
| * @param tenantInfo | |||||
| * @param couponId | |||||
| * @return | |||||
| */ | |||||
| ResultData disable(TenantEntity tenantInfo, Long couponId); | |||||
| void setParentCouponMallMerchants(TenantEntity mallTenantEntity,WxCoupon wxCoupon) throws Exception; | |||||
| Map<Long,Boolean> couponMerchantAutoShare(TenantEntity tenantEntity,WxCoupon wxCoupon) throws Exception; | |||||
| /** | |||||
| * 判断门店商户是否可用 | |||||
| * @param couponId | |||||
| * @param couponType | |||||
| * @param couponTenantEntity | |||||
| * @return | |||||
| */ | |||||
| boolean isCouponMerchantValid(Long couponId,Integer couponType,TenantEntity couponTenantEntity); | |||||
| } | |||||
| @@ -48,9 +48,6 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| @Autowired | @Autowired | ||||
| WxCouponMapper wxCouponMapper; | WxCouponMapper wxCouponMapper; | ||||
| @Autowired | |||||
| WxCouponService wxCouponService; | |||||
| @Autowired | @Autowired | ||||
| WxCouponMerchantMapper wxCouponMerchantMapper; | WxCouponMerchantMapper wxCouponMerchantMapper; | ||||
| @@ -167,16 +164,6 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券状态不允许提交审核"); | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券状态不允许提交审核"); | ||||
| } | } | ||||
| WxCoupon ttattrs = wxCouponService.getAttrsById(coupon.getId(), coupon.getTenantId()); | |||||
| if(ttattrs.getProductType() == null || ttattrs.getCategoryId() == null | |||||
| || ttattrs.getProductAttrKeyValueMap().isEmpty() | |||||
| || ttattrs.getSkuAttrKeyValueMap().isEmpty()){ | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券缺少必要属性"); | |||||
| } | |||||
| if(coupon.getStatus() != EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) { | |||||
| return new ResultData(ErrorCode.COUPON_ORDER_IS_INVALID); | |||||
| } | |||||
| return new ResultData(); | return new ResultData(); | ||||
| @@ -18,7 +18,6 @@ import com.iformall.mapper.WxQuestionOneselfMapper; | |||||
| import com.iformall.service.QrCodeService; | import com.iformall.service.QrCodeService; | ||||
| import com.iformall.service.WxCampaignService; | import com.iformall.service.WxCampaignService; | ||||
| import com.iformall.service.WxCouponChannelService; | import com.iformall.service.WxCouponChannelService; | ||||
| import com.iformall.service.WxCouponService; | |||||
| import com.iformall.utils.Constant; | import com.iformall.utils.Constant; | ||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| @@ -48,8 +47,6 @@ public class WxCampaignServiceImpl implements WxCampaignService { | |||||
| @Autowired | @Autowired | ||||
| WxCouponChannelMapper wxCouponChannelMapper; | WxCouponChannelMapper wxCouponChannelMapper; | ||||
| @Autowired | |||||
| WxCouponService wxCouponService; | |||||
| @Autowired | @Autowired | ||||
| QrCodeService qrCodeService; | QrCodeService qrCodeService; | ||||
| @@ -277,64 +274,7 @@ public class WxCampaignServiceImpl implements WxCampaignService { | |||||
| public void saveOrUpdateCouponChannel(Long couponId, Map<Long, WxCouponChannel> wxCouponChannelsMap, WxCampaign record){ | public void saveOrUpdateCouponChannel(Long couponId, Map<Long, WxCouponChannel> wxCouponChannelsMap, WxCampaign record){ | ||||
| WxCoupon wxCoupon = wxCouponService.getById(couponId,record.getTenantId()); | |||||
| if (wxCoupon == null) { | |||||
| return; | |||||
| } | |||||
| if (wxCoupon.getStatus() != EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) { | |||||
| return; | |||||
| } | |||||
| if (wxCoupon.getValidEndDate() != null && wxCoupon.getValidEndDate().before(new Date())) { | |||||
| return; | |||||
| } | |||||
| Date beginTime = null; | |||||
| Date endTime = null; | |||||
| if(wxCoupon.getType().equals(EnumCouponType.COUPON_PREORDER.getCode())){ | |||||
| beginTime = wxCoupon.getValidStartDate(); | |||||
| }else{ | |||||
| beginTime = new Date(); | |||||
| } | |||||
| endTime = wxCoupon.getValidEndDate(); | |||||
| // 已有的couponChannel, 更新 | |||||
| WxCouponChannel wxCouponChannel = wxCouponChannelsMap.get(couponId); | |||||
| if (wxCouponChannel != null) { | |||||
| wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); | |||||
| wxCouponChannel.setBeginTime(beginTime); | |||||
| wxCouponChannel.setEndTime(endTime); | |||||
| wxCouponChannel.setUpdateDate(new Date()); | |||||
| wxCouponChannelMapper.updateById(wxCouponChannel); | |||||
| wxCouponChannelsMap.remove(couponId); | |||||
| } else { | |||||
| WxCouponChannel wxCouponChannelQ = new WxCouponChannel(); | |||||
| wxCouponChannelQ.updateTenantInfo(wxCoupon); | |||||
| wxCouponChannelQ.setCouponId(couponId); | |||||
| wxCouponChannelQ.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode()); | |||||
| wxCouponChannelQ.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_LIST.getCode()); | |||||
| List<WxCouponChannel> voList = wxCouponChannelMapper.newfindCList(wxCouponChannelQ); | |||||
| // 不存在的, 新增 | |||||
| wxCouponChannel = new WxCouponChannel(); | |||||
| if(voList != null && voList.size() > 0){ | |||||
| wxCouponChannel.setShowBeginTime(voList.get(0).getShowBeginTime()); | |||||
| } | |||||
| wxCouponChannel.setBeginTime(beginTime); | |||||
| wxCouponChannel.setEndTime(endTime); | |||||
| wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); | |||||
| wxCouponChannel.setCouponId(couponId); | |||||
| wxCouponChannel.setMakeMerchantId(wxCoupon.getMakeMerchantId()); | |||||
| wxCouponChannel.setType(wxCoupon.getType()); | |||||
| wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_CAMPAIN.getCode()); | |||||
| wxCouponChannel.updateTenantInfo(wxCoupon); | |||||
| wxCouponChannel.setBusiness(wxCoupon.getBusiness()); | |||||
| wxCouponChannel.setSubBusiness(wxCoupon.getSubBusiness()); | |||||
| wxCouponChannel.setTitle(wxCoupon.getTitle()); | |||||
| wxCouponChannel.setSubTargetId(record.getId()); | |||||
| final IdWorker idWorker = IdWorker.get(); | |||||
| wxCouponChannel.setId(idWorker.nextId()); | |||||
| wxCouponChannelMapper.insert(wxCouponChannel); | |||||
| } | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -89,8 +89,6 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| @Autowired | @Autowired | ||||
| private WxCouponMapper wxCouponMapper; | private WxCouponMapper wxCouponMapper; | ||||
| @Autowired | @Autowired | ||||
| private WxCouponService wxCouponService; | |||||
| @Autowired | |||||
| private WxRentContractMapper wxRentContractMapper; | private WxRentContractMapper wxRentContractMapper; | ||||
| @Autowired | @Autowired | ||||
| private WxBillSettleMapper wxBillSettleMapper; | private WxBillSettleMapper wxBillSettleMapper; | ||||
| @@ -427,7 +425,6 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| wxCoupon.setType(type); | wxCoupon.setType(type); | ||||
| wxCoupon.setValidType(validType); | wxCoupon.setValidType(validType); | ||||
| wxCoupon.updateTenantInfo(wxCoupon); | wxCoupon.updateTenantInfo(wxCoupon); | ||||
| wxCouponService.updateCouponStockAndEndTime(wxCoupon); | |||||
| } | } | ||||
| }else if(EnumCouponAppType.CANCLE.getCode().equals(operateType)){ | }else if(EnumCouponAppType.CANCLE.getCode().equals(operateType)){ | ||||
| wxCoupon.setCancleApplyStatus(applyStatus); | wxCoupon.setCancleApplyStatus(applyStatus); | ||||