记得上下班打卡 | git大法好,push需谨慎

Commit 81620bed authored by 张国柄's avatar 张国柄

+admin.api:巡演券关联配置接口+实现;

parent 898ca840
package com.liquidnet.service.candy.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
@ApiModel(value = "CandyMgtCouponRelateParam", description = "券关联配置")
public class CandyMgtCouponRelateParam {
@NotBlank(message = "券ID不能为空")
@ApiModelProperty(required = true, value = "券ID", example = "123456789")
private String couponId;
@NotNull(message = "适用范围不能为空")
@ApiModelProperty(required = true, value = "适用范围[1-巡演]", allowableValues = "1")
private Integer scope;
@NotNull(message = "业务ID列表不能为空")
@Size(min = 1, message = "业务ID列表最少选择一个")
@ApiModelProperty(required = true, value = "业务ID", dataType = "List", example = "[\"IDIDIDIDIDIDID1\",\"IDIDIDIDIDIDID2\"]")
private List<@NotBlank(message = "业务ID值不能为空") String> idList;
public String getCouponId() {
return couponId;
}
public void setCouponId(String couponId) {
this.couponId = couponId;
}
public Integer getScope() {
return scope;
}
public void setScope(Integer scope) {
this.scope = scope;
}
public List<String> getIdList() {
return idList;
}
public void setIdList(List<String> idList) {
this.idList = idList;
}
}
...@@ -9,14 +9,12 @@ import com.liquidnet.client.admin.common.core.page.TableDataInfo; ...@@ -9,14 +9,12 @@ import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType; import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.ShiroUtils; import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService; import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRelateAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRuleAdminService; import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRuleAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService; import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinPerformancesAdminServiceImpl; import com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinPerformancesAdminServiceImpl;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.candy.dto.admin.CandyCouponRuleBuildParam; import com.liquidnet.service.candy.dto.admin.*;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponBuildParam;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponListParam;
import com.liquidnet.service.candy.entity.CandyCouponRule; import com.liquidnet.service.candy.entity.CandyCouponRule;
import com.liquidnet.service.kylin.dao.PerformanceSimpleAllDao; import com.liquidnet.service.kylin.dao.PerformanceSimpleAllDao;
import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService; import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
...@@ -53,6 +51,8 @@ public class CandyMgtCouponAdminController extends BaseController { ...@@ -53,6 +51,8 @@ public class CandyMgtCouponAdminController extends BaseController {
private ICandyCouponRuleAdminService candyCouponRuleAdminService; private ICandyCouponRuleAdminService candyCouponRuleAdminService;
@Autowired @Autowired
private IKylinPerformancesAdminService kylinPerformancesAdminService; private IKylinPerformancesAdminService kylinPerformancesAdminService;
@Autowired
private ICandyCouponRelateAdminService candyCouponRelateAdminService;
@RequiresPermissions("candy:coupon:mgt:view") @RequiresPermissions("candy:coupon:mgt:view")
@GetMapping() @GetMapping()
...@@ -379,4 +379,14 @@ public class CandyMgtCouponAdminController extends BaseController { ...@@ -379,4 +379,14 @@ public class CandyMgtCouponAdminController extends BaseController {
//// candyCouponRuleAdminService.update(couponRuleLambdaUpdateWrapper); //// candyCouponRuleAdminService.update(couponRuleLambdaUpdateWrapper);
// return toAjax(updateMgtCouponFlg); // return toAjax(updateMgtCouponFlg);
// } // }
@ApiOperation(value = "关联配置")
@Log(title = "我的券包:关联配置", businessType = BusinessType.INSERT)
@RequiresPermissions("candy:coupon:mgt:relate")
@PostMapping("relate")
@ResponseBody
public AjaxResult relate(@RequestBody @Validated CandyMgtCouponRelateParam relateParam) {
logger.info("我的券包:关联配置:operator:{},relateParam:{}", ShiroUtils.getLoginName(), JsonUtils.toJson(relateParam));
return candyCouponRelateAdminService.relate(relateParam);
}
} }
package com.liquidnet.client.admin.zhengzai.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponRelateParam;
import com.liquidnet.service.candy.entity.CandyCouponRelate;
/**
* <p>
* 券适用关联配置 服务类
* </p>
*
* @author liquidnet
* @since 2022-07-19
*/
public interface ICandyCouponRelateAdminService extends IService<CandyCouponRelate> {
/**
* 券适用关联配置
*
* @param couponRelateParam CandyMgtCouponRelateParam
* @return boolean
*/
AjaxResult relate(CandyMgtCouponRelateParam couponRelateParam);
}
package com.liquidnet.client.admin.zhengzai.candy.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRelateAdminService;
import com.liquidnet.common.cache.redis.util.AbstractRedisUtil;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponRelateParam;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyCouponRelate;
import com.liquidnet.service.candy.mapper.CandyCouponRelateMapper;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import org.apache.commons.lang3.RandomUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 券适用关联配置 服务实现类
* </p>
*
* @author liquidnet
* @since 2022-07-19
*/
@Service
public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRelateMapper, CandyCouponRelate> implements ICandyCouponRelateAdminService {
@Autowired
private RedisDataSourceUtil redisDataSourceUtil;
@Autowired
private ICandyCouponAdminService candyCouponAdminService;
@Override
public AjaxResult relate(CandyMgtCouponRelateParam couponRelateParam) {
String couponId = couponRelateParam.getCouponId();
LambdaQueryWrapper<CandyCoupon> couponLambdaQueryWrapper = Wrappers.lambdaQuery();
couponLambdaQueryWrapper.eq(CandyCoupon::getCouponId, couponId);
couponLambdaQueryWrapper.eq(CandyCoupon::getState, 1);
CandyCoupon coupon = candyCouponAdminService.getOne(couponLambdaQueryWrapper);
if (coupon.getCouType() != 101) {
return AjaxResult.warn("当前操作只支持优先券类型");
}
String key;
Integer scope = couponRelateParam.getScope();
switch (scope) {
case 1:
key = KylinRedisConst.COUPON_ROADSHOWS.concat(couponId);
break;
default:
return AjaxResult.warn("适用范围无效");
}
AbstractRedisUtil redisKylinUtil = redisDataSourceUtil.getRedisKylinUtil();
List<String> valList = (List<String>) redisKylinUtil.get(key);
if (!CollectionUtils.isEmpty(valList)) {
return AjaxResult.warn("该券已存在关联配置");
}
String loginName = ShiroUtils.getLoginName();
LocalDateTime now = LocalDateTime.now();
List<CandyCouponRelate> couponRelateList = new ArrayList<>();
List<String> idList = couponRelateParam.getIdList();
for (String id : idList) {
CandyCouponRelate couponRelate = new CandyCouponRelate();
couponRelate.setCouponId(couponId);
couponRelate.setBusiId(id);
couponRelate.setScope(scope);
couponRelate.setOperator(loginName);
couponRelate.setCreatedAt(now);
couponRelateList.add(couponRelate);
}
if (this.saveBatch(couponRelateList)) {
redisKylinUtil.set(key, idList);
return AjaxResult.success();
}
return AjaxResult.warn("操作失败");
}
}
package com.liquidnet.service.candy.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 券适用关联配置
* </p>
*
* @author liquidnet
* @since 2022-07-19
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class CandyCouponRelate implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* ~candy_coupon.coupon_id
*/
private String couponId;
/**
* 适用ID
*/
private String busiId;
/**
* 适用范围[1-巡演]
*/
private Integer scope;
/**
* [0-INIT|1-NORMAL|2-INVALID]
*/
private Integer state;
/**
* 操作人
*/
private String operator;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private String comment;
}
package com.liquidnet.service.candy.mapper;
import com.liquidnet.service.candy.entity.CandyCouponRelate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 券适用关联配置 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2022-07-19
*/
public interface CandyCouponRelateMapper extends BaseMapper<CandyCouponRelate> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.candy.mapper.CandyCouponRelateMapper">
</mapper>
...@@ -164,7 +164,23 @@ alter table candy_common_coupon add exclusive smallint null comment '专享标 ...@@ -164,7 +164,23 @@ alter table candy_common_coupon add exclusive smallint null comment '专享标
-- >>------------------------------------------------------------------------------------|20211208券发放任务表+区分后台人为创建与系统创建标识字段 -- >>------------------------------------------------------------------------------------|20211208券发放任务表+区分后台人为创建与系统创建标识字段
alter table candy_mgt_coupon add event_driven tinyint default 0 null comment '任务驱动[0-系统自动,1-人为创建]' after event_at; alter table candy_mgt_coupon add event_driven tinyint default 0 null comment '任务驱动[0-系统自动,1-人为创建]' after event_at;
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------|20220719券关联巡演
drop table if exists candy_coupon_relate;
create table candy_coupon_relate
(
mid bigint unsigned auto_increment primary key,
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
busi_id varchar(64) comment '适用ID',
scope smallint comment '适用范围[1-巡演]',
state tinyint comment '[0-INIT|1-NORMAL|2-INVALID]',
operator varchar(64) not null comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment text
) engine InnoDB comment '券适用关联配置';
create index idx_ccr_coupon_id on candy_coupon_relate (coupon_id);
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment