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

Commit 9666c865 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/hjc_road_coupon' into dev_bd_rm_consumer_od

parents d5727805 b32de598
...@@ -13,6 +13,7 @@ import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRelateAdmin ...@@ -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.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.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.candy.dto.admin.*; import com.liquidnet.service.candy.dto.admin.*;
import com.liquidnet.service.candy.entity.CandyCouponRule; import com.liquidnet.service.candy.entity.CandyCouponRule;
...@@ -32,7 +33,9 @@ import org.springframework.web.bind.annotation.*; ...@@ -32,7 +33,9 @@ import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
@Api(tags = "我的券包") @Api(tags = "我的券包")
@Controller @Controller
...@@ -72,12 +75,16 @@ public class CandyMgtCouponAdminController extends BaseController { ...@@ -72,12 +75,16 @@ public class CandyMgtCouponAdminController extends BaseController {
if (Arrays.asList(3, 101).contains(listParam.getCouType())) { if (Arrays.asList(3, 101).contains(listParam.getCouType())) {
String[] couponIdArr = list.stream().map(CandyMgtCouponInfoDto::getCouponId).toArray(String[]::new); 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); LambdaQueryWrapper<CandyCouponRule> queryWrapper = Wrappers.lambdaQuery(CandyCouponRule.class);
queryWrapper.in(CandyCouponRule::getCouponId, couponIdArr); queryWrapper.in(CandyCouponRule::getCouponId, couponIdArr);
queryWrapper.eq(CandyCouponRule::getState, 1); queryWrapper.eq(CandyCouponRule::getState, 1);
queryWrapper.select(CandyCouponRule::getCruleId, CandyCouponRule::getCouponId, CandyCouponRule::getBusiName); queryWrapper.select(CandyCouponRule::getCruleId, CandyCouponRule::getCouponId, CandyCouponRule::getBusiName);
List<CandyCouponRule> couponRuleList = candyCouponRuleAdminService.list(queryWrapper); List<CandyCouponRule> couponRuleList = candyCouponRuleAdminService.list(queryWrapper);
list.stream().forEach(r -> { list.forEach(r -> {
r.setRelateRoadshowFlg(null != roadshowNameMap.get(r.getCouponId()));
couponRuleList.forEach(cr -> { couponRuleList.forEach(cr -> {
if (r.getCouponId().equals(cr.getCouponId())) { if (r.getCouponId().equals(cr.getCouponId())) {
r.setCouponRuleScopeName(cr.getBusiName()); r.setCouponRuleScopeName(cr.getBusiName());
...@@ -140,7 +147,18 @@ public class CandyMgtCouponAdminController extends BaseController { ...@@ -140,7 +147,18 @@ public class CandyMgtCouponAdminController extends BaseController {
} }
break; 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; return prefix + "/detail" + couType;
} }
......
...@@ -117,7 +117,9 @@ ...@@ -117,7 +117,9 @@
formatter: function(value, row, index) { formatter: function(value, row, index) {
var actions = []; 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>'); 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>');
actions.push('<a class="btn btn-success btn-xs ' + viewMgtRelateFlag + '" href="javascript:void(0)" onclick="relevancyShow(\'' + row.couponId + '\')">关联巡演</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) { // 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>'); // 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 @@ ...@@ -76,6 +76,12 @@
[[${#strings.substring(mgtCouponInfoDto?.eventAt,0,19)}]] [[${#strings.substring(mgtCouponInfoDto?.eventAt,0,19)}]]
</div> </div>
</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> </form>
</div> </div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
......
...@@ -5,6 +5,9 @@ import com.liquidnet.client.admin.common.core.domain.AjaxResult; ...@@ -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.dto.admin.CandyMgtCouponRelateParam;
import com.liquidnet.service.candy.entity.CandyCouponRelate; import com.liquidnet.service.candy.entity.CandyCouponRelate;
import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
* 券适用关联配置 服务类 * 券适用关联配置 服务类
...@@ -22,4 +25,12 @@ public interface ICandyCouponRelateAdminService extends IService<CandyCouponRela ...@@ -22,4 +25,12 @@ public interface ICandyCouponRelateAdminService extends IService<CandyCouponRela
* @return boolean * @return boolean
*/ */
AjaxResult relate(CandyMgtCouponRelateParam couponRelateParam); 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; ...@@ -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.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.ICandyCouponRelateAdminService;
import com.liquidnet.common.cache.redis.util.AbstractRedisUtil;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil; 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.dto.admin.CandyMgtCouponRelateParam;
import com.liquidnet.service.candy.entity.CandyCoupon; import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyCouponRelate; import com.liquidnet.service.candy.entity.CandyCouponRelate;
import com.liquidnet.service.candy.mapper.CandyCouponRelateMapper; import com.liquidnet.service.candy.mapper.CandyCouponRelateMapper;
import com.liquidnet.service.kylin.constant.KylinRedisConst; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -22,6 +26,8 @@ import org.springframework.util.CollectionUtils; ...@@ -22,6 +26,8 @@ import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
...@@ -31,8 +37,13 @@ import java.util.List; ...@@ -31,8 +37,13 @@ import java.util.List;
* @author liquidnet * @author liquidnet
* @since 2022-07-19 * @since 2022-07-19
*/ */
@Slf4j
@Service @Service
public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRelateMapper, CandyCouponRelate> implements ICandyCouponRelateAdminService { public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRelateMapper, CandyCouponRelate> implements ICandyCouponRelateAdminService {
@Autowired
private CandyCouponRelateMapper candyCouponRelateMapper;
@Autowired
private KylinRoadShowsMapper kylinRoadShowsMapper;
@Autowired @Autowired
private RedisDataSourceUtil redisDataSourceUtil; private RedisDataSourceUtil redisDataSourceUtil;
@Autowired @Autowired
...@@ -40,7 +51,7 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe ...@@ -40,7 +51,7 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe
@Override @Override
public AjaxResult relate(CandyMgtCouponRelateParam couponRelateParam) { public AjaxResult relate(CandyMgtCouponRelateParam couponRelateParam) {
String couponId = couponRelateParam.getCouponId(); String couponId = couponRelateParam.getCouponId(), redisKey, loginName = ShiroUtils.getLoginName();
LambdaQueryWrapper<CandyCoupon> couponLambdaQueryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<CandyCoupon> couponLambdaQueryWrapper = Wrappers.lambdaQuery();
couponLambdaQueryWrapper.eq(CandyCoupon::getCouponId, couponId); couponLambdaQueryWrapper.eq(CandyCoupon::getCouponId, couponId);
couponLambdaQueryWrapper.eq(CandyCoupon::getState, 1); couponLambdaQueryWrapper.eq(CandyCoupon::getState, 1);
...@@ -48,23 +59,27 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe ...@@ -48,23 +59,27 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe
if (null == coupon) return AjaxResult.warn("券不存在"); if (null == coupon) return AjaxResult.warn("券不存在");
if (coupon.getCouType() != 101) return AjaxResult.warn("当前操作只支持优先券类型"); if (coupon.getCouType() != 101) return AjaxResult.warn("当前操作只支持优先券类型");
String key;
Integer scope = couponRelateParam.getScope(); Integer scope = couponRelateParam.getScope();
switch (scope) { switch (scope) {
case 1: 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; break;
default: default:
return AjaxResult.warn("适用范围无效"); 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(); LocalDateTime now = LocalDateTime.now();
List<CandyCouponRelate> couponRelateList = new ArrayList<>(); List<CandyCouponRelate> couponRelateList = new ArrayList<>();
List<String> idList = couponRelateParam.getIdList(); List<String> idList = couponRelateParam.getIdList();
...@@ -73,6 +88,7 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe ...@@ -73,6 +88,7 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe
couponRelate.setCouponId(couponId); couponRelate.setCouponId(couponId);
couponRelate.setBusiId(id); couponRelate.setBusiId(id);
couponRelate.setScope(scope); couponRelate.setScope(scope);
couponRelate.setState(1);
couponRelate.setOperator(loginName); couponRelate.setOperator(loginName);
couponRelate.setCreatedAt(now); couponRelate.setCreatedAt(now);
...@@ -80,10 +96,24 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe ...@@ -80,10 +96,24 @@ public class CandyCouponRelateAdminServiceImpl extends ServiceImpl<CandyCouponRe
} }
if (this.saveBatch(couponRelateList)) { if (this.saveBatch(couponRelateList)) {
redisKylinUtil.set(key, idList); switch (scope) {
case 1:
redisDataSourceUtil.getRedisKylinUtil().set(redisKey, idList);
break;
}
return AjaxResult.success(); return AjaxResult.success();
} }
return AjaxResult.warn("操作失败"); 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 { ...@@ -52,4 +52,6 @@ public class CandyMgtCouponInfoDto implements Serializable {
// 适用演出名称 // 适用演出名称
private String couponRuleScopeName; private String couponRuleScopeName;
// 关联巡演标识
private boolean relateRoadshowFlg;
} }
package com.liquidnet.service.candy.mapper; package com.liquidnet.service.candy.mapper;
import com.liquidnet.service.candy.entity.CandyCouponRelate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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> * <p>
...@@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface CandyCouponRelateMapper extends BaseMapper<CandyCouponRelate> { public interface CandyCouponRelateMapper extends BaseMapper<CandyCouponRelate> {
List<CandyCouponRelateDto> selectMultiForRoadshowName(@Param("couponIdList") List<String> couponIdList);
} }
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!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 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> </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