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

Commit b32de598 authored by 张国柄's avatar 张国柄

~admin:优先券关联巡演完善;

parent 00282e5b
......@@ -13,6 +13,7 @@ import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRelateAdmin
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRuleAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinPerformancesAdminServiceImpl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.candy.dto.admin.*;
import com.liquidnet.service.candy.entity.CandyCouponRule;
......@@ -32,7 +33,9 @@ import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Api(tags = "我的券包")
@Controller
......@@ -72,12 +75,16 @@ public class CandyMgtCouponAdminController extends BaseController {
if (Arrays.asList(3, 101).contains(listParam.getCouType())) {
String[] couponIdArr = list.stream().map(CandyMgtCouponInfoDto::getCouponId).toArray(String[]::new);
Map<String, String> roadshowNameMap = 101 != listParam.getCouType() ? CollectionUtil.mapStringString() : candyCouponRelateAdminService.queryRelateRoadshowName(Arrays.asList(couponIdArr));
LambdaQueryWrapper<CandyCouponRule> queryWrapper = Wrappers.lambdaQuery(CandyCouponRule.class);
queryWrapper.in(CandyCouponRule::getCouponId, couponIdArr);
queryWrapper.eq(CandyCouponRule::getState, 1);
queryWrapper.select(CandyCouponRule::getCruleId, CandyCouponRule::getCouponId, CandyCouponRule::getBusiName);
List<CandyCouponRule> couponRuleList = candyCouponRuleAdminService.list(queryWrapper);
list.stream().forEach(r -> {
list.forEach(r -> {
r.setRelateRoadshowFlg(null != roadshowNameMap.get(r.getCouponId()));
couponRuleList.forEach(cr -> {
if (r.getCouponId().equals(cr.getCouponId())) {
r.setCouponRuleScopeName(cr.getBusiName());
......@@ -140,7 +147,18 @@ public class CandyMgtCouponAdminController extends BaseController {
}
break;
}
} else {
mmap.put("busiNameChildNode", "全场通用");
}
Map<String, String> roadshowNameMap = candyCouponRelateAdminService.queryRelateRoadshowName(Collections.singletonList(mgtCouponInfoDto.getCouponId()));
String relateRoadshowNames = "";
if (!CollectionUtils.isEmpty(roadshowNameMap)) {
StringBuilder relateRoadshowSB = new StringBuilder();
roadshowNameMap.forEach((k,v) -> relateRoadshowSB.append(v).append(";"));
relateRoadshowNames = relateRoadshowSB.substring(0, relateRoadshowSB.length() - 1);
}
mmap.put("relateRoadshowNames", relateRoadshowNames);
}
return prefix + "/detail" + couType;
}
......
......@@ -117,7 +117,9 @@
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-warning btn-xs ' + viewMgtCouponFlag + '" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.mcouponId + '\')"><i class="fa fa-search"></i>详情</a>');
if (!row.relateRoadshowFlg) {
actions.push('<a class="btn btn-success btn-xs ' + viewMgtRelateFlag + '" href="javascript:void(0)" onclick="relevancyShow(\'' + row.couponId + '\')">关联巡演</a>');
}
// if (row.state === 0) {
// actions.push('<a class="btn btn-danger btn-xs ' + cancelMgtCouponFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.mcouponId + '\')"><i class="fa fa-remove"></i>取消</a>');
// }
......
......@@ -76,6 +76,12 @@
[[${#strings.substring(mgtCouponInfoDto?.eventAt,0,19)}]]
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">关联巡演:</label>
<div class="form-control-static col-sm-9">
[[${relateRoadshowNames}]]
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
......
......@@ -5,6 +5,9 @@ import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponRelateParam;
import com.liquidnet.service.candy.entity.CandyCouponRelate;
import java.util.List;
import java.util.Map;
/**
* <p>
* 券适用关联配置 服务类
......@@ -22,4 +25,12 @@ public interface ICandyCouponRelateAdminService extends IService<CandyCouponRela
* @return boolean
*/
AjaxResult relate(CandyMgtCouponRelateParam couponRelateParam);
/**
* 券适用关联巡演名称查询
*
* @param couponIdList List<String>
* @return Map<String, String>
*/
Map<String, String> queryRelateRoadshowName(List<String> couponIdList);
}
......@@ -7,14 +7,18 @@ 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.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.candy.dto.CandyCouponRelateDto;
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 com.liquidnet.service.kylin.entity.KylinRoadShows;
import com.liquidnet.service.kylin.mapper.KylinRoadShowsMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
......@@ -22,6 +26,8 @@ import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
......@@ -31,8 +37,13 @@ import java.util.List;
* @author liquidnet
* @since 2022-07-19
*/
@Slf4j
@Service
public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRelateMapper, CandyCouponRelate> implements ICandyCouponRelateAdminService {
@Autowired
private CandyCouponRelateMapper candyCouponRelateMapper;
@Autowired
private KylinRoadShowsMapper kylinRoadShowsMapper;
@Autowired
private RedisDataSourceUtil redisDataSourceUtil;
@Autowired
......@@ -40,7 +51,7 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe
@Override
public AjaxResult relate(CandyMgtCouponRelateParam couponRelateParam) {
String couponId = couponRelateParam.getCouponId();
String couponId = couponRelateParam.getCouponId(), redisKey, loginName = ShiroUtils.getLoginName();
LambdaQueryWrapper<CandyCoupon> couponLambdaQueryWrapper = Wrappers.lambdaQuery();
couponLambdaQueryWrapper.eq(CandyCoupon::getCouponId, couponId);
couponLambdaQueryWrapper.eq(CandyCoupon::getState, 1);
......@@ -48,23 +59,27 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe
if (null == coupon) return AjaxResult.warn("券不存在");
if (coupon.getCouType() != 101) return AjaxResult.warn("当前操作只支持优先券类型");
String key;
Integer scope = couponRelateParam.getScope();
switch (scope) {
case 1:
key = KylinRedisConst.COUPON_ROADSHOWS.concat(couponId);
redisKey = KylinRedisConst.COUPON_ROADSHOWS.concat(couponId);
List<String> valList = (List<String>) redisDataSourceUtil.getRedisKylinUtil().get(redisKey);
if (!CollectionUtils.isEmpty(valList)) {
LambdaQueryWrapper<KylinRoadShows> kylinRoadShowsLambdaQueryWrapper = Wrappers.lambdaQuery();
kylinRoadShowsLambdaQueryWrapper.in(KylinRoadShows::getRoadShowsId, valList);
kylinRoadShowsLambdaQueryWrapper.select(KylinRoadShows::getRoadShowsId, KylinRoadShows::getTitle);
List<KylinRoadShows> kylinRoadShowsList = kylinRoadShowsMapper.selectList(kylinRoadShowsLambdaQueryWrapper);
StringBuilder stringBuffer = new StringBuilder();
for (KylinRoadShows kylinRoadShows : kylinRoadShowsList) {
stringBuffer.append(kylinRoadShows.getTitle()).append(";");
}
return AjaxResult.warn(String.format("该券已关联巡演:%s", stringBuffer));
}
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();
......@@ -73,6 +88,7 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe
couponRelate.setCouponId(couponId);
couponRelate.setBusiId(id);
couponRelate.setScope(scope);
couponRelate.setState(1);
couponRelate.setOperator(loginName);
couponRelate.setCreatedAt(now);
......@@ -80,10 +96,24 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe
}
if (this.saveBatch(couponRelateList)) {
redisKylinUtil.set(key, idList);
switch (scope) {
case 1:
redisDataSourceUtil.getRedisKylinUtil().set(redisKey, idList);
break;
}
return AjaxResult.success();
}
return AjaxResult.warn("操作失败");
}
@Override
public Map<String, String> queryRelateRoadshowName(List<String> couponIdList) {
try {
List<CandyCouponRelateDto> list = candyCouponRelateMapper.selectMultiForRoadshowName(couponIdList);
return list.stream().collect(Collectors.toMap(CandyCouponRelateDto::getCouponId, CandyCouponRelateDto::getBusiName));
} catch (Exception e) {
log.error("Ex.券关联巡演查询异常[couponIdList={}]", JsonUtils.toJson(couponIdList), e);
return CollectionUtil.mapStringString();
}
}
}
package com.liquidnet.service.candy.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class CandyCouponRelateDto implements Serializable {
private static final long serialVersionUID = 3408795257680045281L;
private String couponId;
private Integer scope;
private String busiId;
private String busiName;
}
......@@ -52,4 +52,6 @@ public class CandyMgtCouponInfoDto implements Serializable {
// 适用演出名称
private String couponRuleScopeName;
// 关联巡演标识
private boolean relateRoadshowFlg;
}
package com.liquidnet.service.candy.mapper;
import com.liquidnet.service.candy.entity.CandyCouponRelate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.candy.dto.CandyCouponRelateDto;
import com.liquidnet.service.candy.entity.CandyCouponRelate;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
......@@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface CandyCouponRelateMapper extends BaseMapper<CandyCouponRelate> {
List<CandyCouponRelateDto> selectMultiForRoadshowName(@Param("couponIdList") List<String> couponIdList);
}
<?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">
<resultMap id="Rst_CandyCouponRelateDto" type="com.liquidnet.service.candy.dto.CandyCouponRelateDto">
<result column="coupon_id" jdbcType="VARCHAR" property="couponId"/>
<result column="scope" jdbcType="SMALLINT" property="scope"/>
<result column="busi_id" jdbcType="VARCHAR" property="busiId"/>
<result column="title" jdbcType="VARCHAR" property="busiName"/>
</resultMap>
<select id="selectMultiForRoadshowName" resultMap="Rst_CandyCouponRelateDto">
select distinct ccr.coupon_id,ccr.scope,ccr.busi_id,krs.title
from candy_coupon_relate ccr
left join kylin_road_shows krs on ccr.busi_id=krs.road_shows_id and ccr.scope=1
where ccr.coupon_id in
<foreach collection='couponIdList' item='id' open='(' separator=',' close=')'>
#{id}
</foreach>
and ccr.state=1
</select>
</mapper>
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