@@ -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.EnumYqzjVideoType; | |||
import com.iformall.service.TtCouponGoodsService; | |||
import com.iformall.service.WxCouponService; | |||
import com.iformall.service.YqzjService; | |||
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.EnumYqzjVideoType; | |||
import com.iformall.service.TtCouponGoodsService; | |||
import com.iformall.service.WxCouponService; | |||
import com.iformall.service.YqzjService; | |||
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.EnumYqzjVideoType; | |||
import com.iformall.service.TtCouponGoodsService; | |||
import com.iformall.service.WxCouponService; | |||
import com.iformall.service.YqzjService; | |||
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.EnumYqzjPageNewsType; | |||
import com.iformall.service.TtCouponGoodsService; | |||
import com.iformall.service.WxCouponService; | |||
import com.iformall.service.YqzjService; | |||
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.EnumYqzjVideoType; | |||
import com.iformall.service.TtCouponGoodsService; | |||
import com.iformall.service.WxCouponService; | |||
import com.iformall.service.YqzjService; | |||
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 | |||
WxCouponMapper wxCouponMapper; | |||
@Autowired | |||
WxCouponService wxCouponService; | |||
@Autowired | |||
WxCouponMerchantMapper wxCouponMerchantMapper; | |||
@@ -167,16 +164,6 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { | |||
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(); | |||
@@ -18,7 +18,6 @@ import com.iformall.mapper.WxQuestionOneselfMapper; | |||
import com.iformall.service.QrCodeService; | |||
import com.iformall.service.WxCampaignService; | |||
import com.iformall.service.WxCouponChannelService; | |||
import com.iformall.service.WxCouponService; | |||
import com.iformall.utils.Constant; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.slf4j.Logger; | |||
@@ -48,8 +47,6 @@ public class WxCampaignServiceImpl implements WxCampaignService { | |||
@Autowired | |||
WxCouponChannelMapper wxCouponChannelMapper; | |||
@Autowired | |||
WxCouponService wxCouponService; | |||
@Autowired | |||
QrCodeService qrCodeService; | |||
@@ -277,64 +274,7 @@ public class WxCampaignServiceImpl implements WxCampaignService { | |||
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 | |||
@@ -89,8 +89,6 @@ public class WxFlowServiceImpl implements WxFlowService { | |||
@Autowired | |||
private WxCouponMapper wxCouponMapper; | |||
@Autowired | |||
private WxCouponService wxCouponService; | |||
@Autowired | |||
private WxRentContractMapper wxRentContractMapper; | |||
@Autowired | |||
private WxBillSettleMapper wxBillSettleMapper; | |||
@@ -427,7 +425,6 @@ public class WxFlowServiceImpl implements WxFlowService { | |||
wxCoupon.setType(type); | |||
wxCoupon.setValidType(validType); | |||
wxCoupon.updateTenantInfo(wxCoupon); | |||
wxCouponService.updateCouponStockAndEndTime(wxCoupon); | |||
} | |||
}else if(EnumCouponAppType.CANCLE.getCode().equals(operateType)){ | |||
wxCoupon.setCancleApplyStatus(applyStatus); | |||