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

Commit ebe32ca8 authored by 胡佳晨's avatar 胡佳晨

Merge branch 'hjc_road_coupon' into dev_rc_xuper_op

parents db7afb54 b32de598
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;
}
}
...@@ -18,6 +18,8 @@ public class CandyCouponVo implements Serializable, Cloneable { ...@@ -18,6 +18,8 @@ public class CandyCouponVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4073256621782131606L; private static final long serialVersionUID = 4073256621782131606L;
/* --- --- --- CandyCoupon */ /* --- --- --- CandyCoupon */
@ApiModelProperty(value = "券id",example = "")
private String couponId;
@ApiModelProperty(value = "标题",example = "标题") @ApiModelProperty(value = "标题",example = "标题")
private String title; private String title;
@ApiModelProperty(value = "标注",example = "标注") @ApiModelProperty(value = "标注",example = "标注")
......
package com.liquidnet.service.candy.vo; package com.liquidnet.service.candy.vo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -10,6 +11,7 @@ import java.util.List; ...@@ -10,6 +11,7 @@ import java.util.List;
@Data @Data
@ApiModel @ApiModel
@JsonIgnoreProperties(ignoreUnknown = true)
public class CandyUseResultVo implements Serializable, Cloneable { public class CandyUseResultVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4073256621782131607L; private static final long serialVersionUID = 4073256621782131607L;
...@@ -21,6 +23,8 @@ public class CandyUseResultVo implements Serializable, Cloneable { ...@@ -21,6 +23,8 @@ public class CandyUseResultVo implements Serializable, Cloneable {
private List<String> targetIds; private List<String> targetIds;
@ApiModelProperty(value = "满减金额[满多少]") @ApiModelProperty(value = "满减金额[满多少]")
private BigDecimal fullValue; private BigDecimal fullValue;
@ApiModelProperty(value = "满减金额[满多少]")
private String couponId;
private static final CandyUseResultVo obj = new CandyUseResultVo(); private static final CandyUseResultVo obj = new CandyUseResultVo();
......
...@@ -95,4 +95,10 @@ public class KylinRedisConst { ...@@ -95,4 +95,10 @@ public class KylinRedisConst {
public static final String ACTIVE_TICKET_AR_TICKET = "kylin:active:ar:ticket:";//互动券 public static final String ACTIVE_TICKET_AR_TICKET = "kylin:active:ar:ticket:";//互动券
public static final String ACTIVE_TICKET_AR_USER = "kylin:active:ar:user:";//互动券 绑定的用户 public static final String ACTIVE_TICKET_AR_USER = "kylin:active:ar:user:";//互动券 绑定的用户
/**
* 巡演券
* eg:{kylin:c_rs:${couponId}, List<巡演ID>}
*/
public static final String COUPON_ROADSHOWS = "kylin:c_rs:";
} }
package com.liquidnet.service.kylin.dto.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@ApiModel
@Data
public class KylinCandyParam implements Serializable, Cloneable {
@ApiModelProperty(value = "券id集合")
private List<String> couponList;
@ApiModelProperty(value = "巡演id")
private String roadShowId;
private static final KylinCandyParam obj = new KylinCandyParam();
public static KylinCandyParam getNew() {
try {
return (KylinCandyParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinCandyParam();
}
}
}
package com.liquidnet.service.kylin.dto.vo.mongo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel
@Data
public class KylinCandyVo implements Serializable, Cloneable {
@ApiModelProperty(value = "券id")
private String couponId;
@ApiModelProperty(value = "巡演id")
private String roadShowId;
private static final KylinCandyVo obj = new KylinCandyVo();
public static KylinCandyVo getNew() {
try {
return (KylinCandyVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinCandyVo();
}
}
}
package com.liquidnet.service.kylin.service; package com.liquidnet.service.kylin.service;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo;
import java.util.List;
/** /**
* <p> * <p>
...@@ -24,4 +27,6 @@ public interface IKylinPerformancesService { ...@@ -24,4 +27,6 @@ public interface IKylinPerformancesService {
ResponseDto<String> subscribe(String performancesId, Integer sourceType); ResponseDto<String> subscribe(String performancesId, Integer sourceType);
ResponseDto<Integer> isSubscribe(String performancesId); ResponseDto<Integer> isSubscribe(String performancesId);
ResponseDto<List<KylinCandyVo>> kylinCandy(List<String> data, String roadShowId);
} }
...@@ -20,6 +20,7 @@ public class LocalAdminController extends BaseController ...@@ -20,6 +20,7 @@ public class LocalAdminController extends BaseController
private final String storePrefix = "zhengzai/store"; private final String storePrefix = "zhengzai/store";
private final String smilePrefix = "zhengzai/smile"; private final String smilePrefix = "zhengzai/smile";
private final String activityPrefix = "zhengzai/sweet"; private final String activityPrefix = "zhengzai/sweet";
private final String candyPrefix = "zhengzai/candy";
@Value("${liquidnet.client.admin.platformUrl}") @Value("${liquidnet.client.admin.platformUrl}")
private String platformUrl; private String platformUrl;
...@@ -200,5 +201,10 @@ public class LocalAdminController extends BaseController ...@@ -200,5 +201,10 @@ public class LocalAdminController extends BaseController
{ {
return activityPrefix + "/performanceActivity/ticketList"; return activityPrefix + "/performanceActivity/ticketList";
} }
@GetMapping("/relevancyShow") // 活动关联券部分
public String relevancyShow()
{
return candyPrefix + "/coupon/mgt/relevancyShow";
}
} }
...@@ -9,14 +9,13 @@ import com.liquidnet.client.admin.common.core.page.TableDataInfo; ...@@ -9,14 +9,13 @@ 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.CollectionUtil;
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;
...@@ -34,7 +33,9 @@ import org.springframework.web.bind.annotation.*; ...@@ -34,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
...@@ -53,6 +54,8 @@ public class CandyMgtCouponAdminController extends BaseController { ...@@ -53,6 +54,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()
...@@ -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;
} }
...@@ -379,4 +397,14 @@ public class CandyMgtCouponAdminController extends BaseController { ...@@ -379,4 +397,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);
}
} }
...@@ -54,6 +54,16 @@ public class KylinRoadShowController extends BaseController { ...@@ -54,6 +54,16 @@ public class KylinRoadShowController extends BaseController {
return getDataTable(result.getList()); return getDataTable(result.getList());
} }
@Log(title = "巡演管理", businessType = BusinessType.LIST)
@GetMapping("/getList")
@ResponseBody
public TableDataInfo getlistRoadShow(@RequestParam(value = "title", required = false) String title,
@RequestParam(value = "pageNum") int page,
@RequestParam(value = "pageSize") int size) {
startPage();
PageInfo<RoadShowAdminListDao> result = kylinRoadShowsAdminService.listRoadShow(title, page, size);
return getDataTable(result.getList());
}
/** /**
* 新增巡演 * 新增巡演
*/ */
......
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head> <head>
<th:block th:include="include :: header('兑换券')" /> <th:block th:include="include :: header('优先券')" />
<style>
body .layui-layer-btn {
display: none !important;
}
</style>
</head> </head>
<body class="gray-bg"> <body class="gray-bg">
<div class="container-div"> <div class="container-div">
...@@ -49,8 +54,9 @@ ...@@ -49,8 +54,9 @@
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
<script th:inline="javascript"> <script th:inline="javascript">
var prefix = ctx + "candy/coupon/mgt"; var prefix = ctx + "candy/coupon/mgt";
var prefix2 = ctx + "local";
var viewMgtCouponFlag = [[${@permission.hasPermi('candy:coupon:mgt:detail')}]]; var viewMgtCouponFlag = [[${@permission.hasPermi('candy:coupon:mgt:detail')}]];
var viewMgtRelateFlag = [[${@permission.hasPermi('candy:coupon:mgt:relate')}]];
var cancelMgtCouponFlag = [[${@permission.hasPermi('candy:coupon:mgt:cancel')}]]; var cancelMgtCouponFlag = [[${@permission.hasPermi('candy:coupon:mgt:cancel')}]];
var couType = [[${couType}]]; var couType = [[${couType}]];
...@@ -111,6 +117,9 @@ ...@@ -111,6 +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>');
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>');
// } // }
...@@ -129,6 +138,15 @@ ...@@ -129,6 +138,15 @@
var url = 'candy/coupon/code?couponId=' + couponId; var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url); $.modal.openTab("查看码列表", url);
} }
// 导出数据
function relevancyShow(couponId) {
// console.log(userIds.toString(), 'dataParam')
$.modal.open('关联巡演', prefix2 + "/relevancyShow?couponId="+couponId, 500, 350, cancel)
}
function cancel () {
console.log('确定按钮?')
}
</script> </script>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -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" />
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('创建活动')" />
<th:block th:include="include :: bootstrap-fileinput-css" />
<style>
.create_activity_box {
padding: 20px;
}
.items {
/* border: 1px dashed #ccc; */
border-radius: 10px;
padding: 12px;
margin-bottom: 10px;
display: flex;
align-items: center;
}
.items .title {
width: 80px;
}
label {
width: 80px;
text-align: right;
}
input {
width: 200px;
height: 30px;
}
.footer_btn {
position: absolute;
margin-top: 20px;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
bottom: 20px;
left: 50%;
margin-left: -20px;
}
select {
height: 30px;
width: 200px;
}
</style>
</head>
<body>
<div class="create_activity_box">
<div class="items">
<div class="title">关联循演:</div>
<div class="input-group">
<input id="goodsName" type="text" class="form-control storeList" placeholder="搜索商品名称">
<div class="input-group-btn">
<ul class="dropdown-menu dropdown-menu-right" role="menu">
</ul>
</div>
</div>
</div>
<div class="footer_btn">
<button type="button" class="btn btn-success" onclick="save()">保存</button>
</div>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: bootstrap-fileinput-js" />
<th:block th:include="include :: bootstrap-suggest-js" />
<script th:inline="javascript">
var prefix2 = ctx + "local";
var platformUrl = [[${platformUrl}]];
let couponId = '';
let showId = '';
let showName = '';
$(function () {
couponId = getUrlParms('couponId')
function getUrlParms(name){
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null)
return unescape(r[2]);
return null;
}
console.log(couponId, 'dasdasdasd')
$(".storeList").bsSuggest({
idField: 'roadShowId', // data.value 的第几个数据,作为input输入框的内容
keyField: 'title', // data.value 的第几个数据,作为input输入框的内容
allowNoKeyword: false, //是否允许无关键字时请求数据
showBtn:false,
multiWord: true, //以分隔符号分割的多关键字支持
hideOnSelect: true,
getDataMethod: "url", //获取数据的方式,总是从 URL 获取
effectiveFields: ['title'],
url: '/kylin/performances/roadShow/getList?pageSize=10&pageNum=1&title=',
/*如果从 url 获取数据,并且需要跨域,则该参数必须设置*/
processData: function (json) { // url 获取数据时,对数据的处理,作为 getData 的回调函数
console.log(json, '?????')
//字符串转化为 js 对象
let data = {};
data.value = json.rows
return data
}
}).on('onDataRequestSuccess', function (e, result) {
}).on('onSetSelectValue', function (e, selectedData,selectedRawData ) { // 当前行的所有值都能拿到
console.log(e, selectedData,selectedRawData, 'dsadasdas')
showId = selectedData.id;
showName = selectedData.key;
}).on('onUnsetSelectValue', function (e) {
});;
})
function save () {
let data = {
"couponId": couponId,
"idList": [
showId
],
"scope": 1
}
promiseMethods('/candy/coupon/mgt/relate', 'post', JSON.stringify(data), 'application/json').then((res) => {
layer.msg("关联成功!")
$.operate.successCallback(res);
}).catch(() => {
layer.msg("关联失败,请重试!")
$.operate.successCallback(res);
})
}
function promiseMethods(url,type,data,contentType) {
return new Promise((resolve,reject)=>{
$.ajax({
url,
type,
data,
contentType,
success:function(res) {
resolve(res);
}
})
})
}
</script>
</body>
</html>
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;
import java.util.List;
import java.util.Map;
/**
* <p>
* 券适用关联配置 服务类
* </p>
*
* @author liquidnet
* @since 2022-07-19
*/
public interface ICandyCouponRelateAdminService extends IService<CandyCouponRelate> {
/**
* 券适用关联配置
*
* @param couponRelateParam CandyMgtCouponRelateParam
* @return boolean
*/
AjaxResult relate(CandyMgtCouponRelateParam couponRelateParam);
/**
* 券适用关联巡演名称查询
*
* @param couponIdList List<String>
* @return Map<String, String>
*/
Map<String, String> queryRelateRoadshowName(List<String> couponIdList);
}
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.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 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;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
* 券适用关联配置 服务实现类
* </p>
*
* @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
private ICandyCouponAdminService candyCouponAdminService;
@Override
public AjaxResult relate(CandyMgtCouponRelateParam couponRelateParam) {
String couponId = couponRelateParam.getCouponId(), redisKey, loginName = ShiroUtils.getLoginName();
LambdaQueryWrapper<CandyCoupon> couponLambdaQueryWrapper = Wrappers.lambdaQuery();
couponLambdaQueryWrapper.eq(CandyCoupon::getCouponId, couponId);
couponLambdaQueryWrapper.eq(CandyCoupon::getState, 1);
CandyCoupon coupon = candyCouponAdminService.getOne(couponLambdaQueryWrapper);
if (null == coupon) return AjaxResult.warn("券不存在");
if (coupon.getCouType() != 101) return AjaxResult.warn("当前操作只支持优先券类型");
Integer scope = couponRelateParam.getScope();
switch (scope) {
case 1:
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("适用范围无效");
}
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.setState(1);
couponRelate.setOperator(loginName);
couponRelate.setCreatedAt(now);
couponRelateList.add(couponRelate);
}
if (this.saveBatch(couponRelateList)) {
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 { ...@@ -52,4 +52,6 @@ public class CandyMgtCouponInfoDto implements Serializable {
// 适用演出名称 // 适用演出名称
private String couponRuleScopeName; private String couponRuleScopeName;
// 关联巡演标识
private boolean relateRoadshowFlg;
} }
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.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>
* 券适用关联配置 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2022-07-19
*/
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>
...@@ -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
...@@ -54,7 +54,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -54,7 +54,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
CandyMyCouponListVo vo = CandyMyCouponListVo.getNew(); CandyMyCouponListVo vo = CandyMyCouponListVo.getNew();
...@@ -96,7 +96,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -96,7 +96,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
if (!CollectionUtil.isEmpty(dtoList)) { if (!CollectionUtil.isEmpty(dtoList)) {
...@@ -116,7 +116,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -116,7 +116,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
List<CandyCouponVo> memberCoupon = ObjectUtil.getCandyCouponVoArrayList(); List<CandyCouponVo> memberCoupon = ObjectUtil.getCandyCouponVoArrayList();
...@@ -145,7 +145,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -145,7 +145,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
CandyMyCouponListVo vo = CandyMyCouponListVo.getNew(); CandyMyCouponListVo vo = CandyMyCouponListVo.getNew();
...@@ -188,7 +188,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -188,7 +188,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
int canUse = 0; int canUse = 0;
...@@ -213,7 +213,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -213,7 +213,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
CandyMyCouponListVo vo = CandyMyCouponListVo.getNew(); CandyMyCouponListVo vo = CandyMyCouponListVo.getNew();
...@@ -255,7 +255,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -255,7 +255,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
int canUse = 0; int canUse = 0;
...@@ -281,7 +281,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -281,7 +281,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
List<CandyCouponVo> advanceCoupon = ObjectUtil.getCandyCouponVoArrayList(); List<CandyCouponVo> advanceCoupon = ObjectUtil.getCandyCouponVoArrayList();
...@@ -307,7 +307,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -307,7 +307,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid, userCreateTime), uCouponId); CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid, userCreateTime), uCouponId);
if (dto == null) { if (dto == null) {
...@@ -322,7 +322,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -322,7 +322,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
CandyUseResultVo vo = CandyUseResultVo.getNew(); CandyUseResultVo vo = CandyUseResultVo.getNew();
List<String> targetIds = CollectionUtil.linkedListString(); List<String> targetIds = CollectionUtil.linkedListString();
...@@ -331,6 +331,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -331,6 +331,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
if (dtoList == null) { if (dtoList == null) {
vo.setCouType(-1); vo.setCouType(-1);
vo.setValue(BigDecimal.ZERO); vo.setValue(BigDecimal.ZERO);
vo.setCouponId("");
} else { } else {
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid, userCreateTime), uCouponId); CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid, userCreateTime), uCouponId);
if (dto.getBusiType().equals(3)) { if (dto.getBusiType().equals(3)) {
...@@ -339,6 +340,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -339,6 +340,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
dto.setCouType(dto.getCouType()); dto.setCouType(dto.getCouType());
} }
vo.setCouType(dto.getCouType()); vo.setCouType(dto.getCouType());
vo.setCouponId(dto.getCouponId());
switch (dto.getCouType()) {//券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券] switch (dto.getCouType()) {//券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]
case 1: case 1:
vo.setValue(dto.getValFace()); vo.setValue(dto.getValFace());
...@@ -477,7 +479,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -477,7 +479,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
String mobile = (String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE); String mobile = (String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE);
...@@ -548,7 +550,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -548,7 +550,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
try { try {
userCreateTime = getCreatedAt(uid); userCreateTime = getCreatedAt(uid);
} catch (Exception e) { } catch (Exception e) {
userCreateTime = LocalDateTime.of(2222,1,1,0,0,0); userCreateTime = LocalDateTime.of(2222, 1, 1, 0, 0, 0);
} }
ArrayList<String> uCouponIdList = new ArrayList(Arrays.asList(uCouponIds.split(","))); ArrayList<String> uCouponIdList = new ArrayList(Arrays.asList(uCouponIds.split(",")));
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
...@@ -569,12 +571,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -569,12 +571,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
} }
private LocalDateTime getCreatedAt(String uid){ private LocalDateTime getCreatedAt(String uid) {
MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString(); MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString();
params.add("uid", uid); params.add("uid", uid);
MultiValueMap<String, String> headers = CollectionUtil.linkedMultiValueMapStringString(); MultiValueMap<String, String> headers = CollectionUtil.linkedMultiValueMapStringString();
headers.add("Accept", "application/json;charset=UTF-8"); headers.add("Accept", "application/json;charset=UTF-8");
String returnData = HttpUtil.post(adamUrl.concat("/adam/rsc/inquire/createdAt"), params, headers); String returnData = HttpUtil.post(adamUrl.concat("/adam/rsc/inquire/createdAt"), params, headers);
return JsonUtils.fromJson(returnData, new TypeReference<ResponseDto<LocalDateTime>>() {}).getData(); return JsonUtils.fromJson(returnData, new TypeReference<ResponseDto<LocalDateTime>>() {
}).getData();
} }
} }
...@@ -79,6 +79,7 @@ public class CouponBaseUtil { ...@@ -79,6 +79,7 @@ public class CouponBaseUtil {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
CandyCouponVo vo = CandyCouponVo.getNew(); CandyCouponVo vo = CandyCouponVo.getNew();
List<CandyCouponRulesVo> rulesVoList = ObjectUtil.getCandyCouponRulesVos(); List<CandyCouponRulesVo> rulesVoList = ObjectUtil.getCandyCouponRulesVos();
vo.setCouponId(dtoItem.getCouponId());
vo.setTitle(dtoItem.getTitle()); vo.setTitle(dtoItem.getTitle());
vo.setExpireAt(DateUtil.format(dtoItem.getDuedAt(), DateUtil.Formatter.yyyy_MM_dd)); vo.setExpireAt(DateUtil.format(dtoItem.getDuedAt(), DateUtil.Formatter.yyyy_MM_dd));
vo.setValFace(dtoItem.getValFace()); vo.setValFace(dtoItem.getValFace());
......
...@@ -4,6 +4,8 @@ package com.liquidnet.service.kylin.controller; ...@@ -4,6 +4,8 @@ package com.liquidnet.service.kylin.controller;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.KylinCandyParam;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayDetailVo; import com.liquidnet.service.kylin.dto.vo.returns.PayDetailVo;
import com.liquidnet.service.kylin.service.IKylinLackRegistersService; import com.liquidnet.service.kylin.service.IKylinLackRegistersService;
...@@ -262,4 +264,10 @@ public class KylinPerformancesController { ...@@ -262,4 +264,10 @@ public class KylinPerformancesController {
return iKylinPerformancesService.getPerformanceIdByInfo(useScope, busiId); return iKylinPerformancesService.getPerformanceIdByInfo(useScope, busiId);
} }
@PostMapping("kylinCandy")
@ApiOperation("根据券id集合获取数据")
public ResponseDto<List<KylinCandyVo>> kylinCandy(@RequestBody KylinCandyParam param) {
return iKylinPerformancesService.kylinCandy(param.getCouponList(), param.getRoadShowId());
}
} }
...@@ -12,6 +12,7 @@ import com.liquidnet.service.kylin.constant.KylinPerformanceStatusEnum; ...@@ -12,6 +12,7 @@ import com.liquidnet.service.kylin.constant.KylinPerformanceStatusEnum;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketExpressModuleVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketExpressModuleVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
...@@ -741,4 +742,20 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService { ...@@ -741,4 +742,20 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
Integer subscribe = dataUtils.getSubscribe(uid, performancesId); Integer subscribe = dataUtils.getSubscribe(uid, performancesId);
return ResponseDto.success(subscribe); return ResponseDto.success(subscribe);
} }
@Override
public ResponseDto<List<KylinCandyVo>> kylinCandy(List<String> data, String roadShowId) {
List<KylinCandyVo> voList = ObjectUtil.kylinCandyVos();
for (String couponId : data) {
List<String> roadShowIds = dataUtils.getCouponRoad(couponId);
if (roadShowIds.size() == 0 || roadShowIds.contains(roadShowId)) {
KylinCandyVo vo = KylinCandyVo.getNew();
vo.setCouponId(couponId);
vo.setRoadShowId(roadShowIds.contains(roadShowId) ? roadShowId : "");
voList.add(vo);
}
}
return ResponseDto.success(voList);
}
} }
...@@ -906,41 +906,43 @@ public class DataUtils { ...@@ -906,41 +906,43 @@ public class DataUtils {
} }
//万青补偿id 获取 //万青补偿id 获取
public Integer getWqOrderId(String orderId){ public Integer getWqOrderId(String orderId) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_FIX.concat(orderId); String rdk = KylinRedisConst.REDIS_WQ_ORDER_FIX.concat(orderId);
Object obj = redisUtil.get(rdk); Object obj = redisUtil.get(rdk);
if(obj==null){ if (obj == null) {
return 0; return 0;
}else{ } else {
return 1; return 1;
} }
} }
//万青补偿id 添加 //万青补偿id 添加
public void setWqOrderId(String orderId){ public void setWqOrderId(String orderId) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_FIX.concat(orderId); String rdk = KylinRedisConst.REDIS_WQ_ORDER_FIX.concat(orderId);
redisUtil.set(rdk,orderId); redisUtil.set(rdk, orderId);
} }
//万青补偿id 删除 //万青补偿id 删除
public void delWqOrderId(String orderId){ public void delWqOrderId(String orderId) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_FIX.concat(orderId); String rdk = KylinRedisConst.REDIS_WQ_ORDER_FIX.concat(orderId);
redisUtil.del(rdk,orderId); redisUtil.del(rdk, orderId);
} }
// 万青补偿vo覆盖 // 万青补偿vo覆盖
public void setWqOrderVo(WqTempVo vo){ public void setWqOrderVo(WqTempVo vo) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_EXPRESS.concat(vo.getOrderId()); String rdk = KylinRedisConst.REDIS_WQ_ORDER_EXPRESS.concat(vo.getOrderId());
redisUtil.set(rdk,vo); redisUtil.set(rdk, vo);
} }
// 万青补偿vo获取 // 万青补偿vo获取
public WqTempVo getWqOrderVo(String orderId){ public WqTempVo getWqOrderVo(String orderId) {
String rdk = KylinRedisConst.REDIS_WQ_ORDER_EXPRESS.concat(orderId); String rdk = KylinRedisConst.REDIS_WQ_ORDER_EXPRESS.concat(orderId);
Object obj = redisUtil.get(rdk); Object obj = redisUtil.get(rdk);
if(obj==null){ if (obj == null) {
WqTempVo vo = WqTempVo.getNew(); WqTempVo vo = WqTempVo.getNew();
vo.setIsTemp(getWqOrderId(orderId)); vo.setIsTemp(getWqOrderId(orderId));
return vo; return vo;
}else{ } else {
WqTempVo vo = (WqTempVo) obj; WqTempVo vo = (WqTempVo) obj;
vo.setIsTemp(getWqOrderId(orderId)); vo.setIsTemp(getWqOrderId(orderId));
return vo; return vo;
...@@ -949,20 +951,34 @@ public class DataUtils { ...@@ -949,20 +951,34 @@ public class DataUtils {
// 获取用户状态 // 获取用户状态
public String getUserStatus(String userId) { public String getUserStatus(String userId) {
return (String) redisUtil.get(KylinRedisConst.ACTIVE_TICKET_AR_USER+ userId); return (String) redisUtil.get(KylinRedisConst.ACTIVE_TICKET_AR_USER + userId);
} }
//获得 ar券 //获得 ar券
public KylinTicketActive getArTicket(String code){ public KylinTicketActive getArTicket(String code) {
return (KylinTicketActive) redisUtil.get(KylinRedisConst.ACTIVE_TICKET_AR_TICKET+code); return (KylinTicketActive) redisUtil.get(KylinRedisConst.ACTIVE_TICKET_AR_TICKET + code);
} }
//设置 tikcet //设置 tikcet
public void setArTicket(KylinTicketActive kylinTicketActive){ public void setArTicket(KylinTicketActive kylinTicketActive) {
redisUtil.set(KylinRedisConst.ACTIVE_TICKET_AR_TICKET+kylinTicketActive.getCode(),kylinTicketActive); redisUtil.set(KylinRedisConst.ACTIVE_TICKET_AR_TICKET + kylinTicketActive.getCode(), kylinTicketActive);
} }
//设置用户状态。 //设置用户状态。
public void setUser(String userId,String value){ public void setUser(String userId, String value) {
redisUtil.set(KylinRedisConst.ACTIVE_TICKET_AR_USER+userId,value); redisUtil.set(KylinRedisConst.ACTIVE_TICKET_AR_USER + userId, value);
}
//根据 券id 获取 可用巡演id数组
public List<String> getCouponRoad(String couponId) {
String rdk = KylinRedisConst.COUPON_ROADSHOWS.concat(couponId);
Object obj = redisUtil.get(rdk);
if (obj == null) {
return CollectionUtil.arrayListString();
} else {
return (List<String>) obj;
}
} }
} }
...@@ -6,6 +6,7 @@ import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo; ...@@ -6,6 +6,7 @@ import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage; import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.*; import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.entity.KylinBanners; import com.liquidnet.service.kylin.entity.KylinBanners;
...@@ -32,7 +33,11 @@ public class ObjectUtil { ...@@ -32,7 +33,11 @@ public class ObjectUtil {
private static final ArrayList<OrderRefundPoundage> orderRefundPoundageArrayList = new ArrayList<>(); private static final ArrayList<OrderRefundPoundage> orderRefundPoundageArrayList = new ArrayList<>();
private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>(); private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>();
private static final ArrayList<KylinApiCameraDevicesVo> kylinApiCameraDevicesVoArrayList = new ArrayList<>(); private static final ArrayList<KylinApiCameraDevicesVo> kylinApiCameraDevicesVoArrayList = new ArrayList<>();
private static final ArrayList<KylinCandyVo> kylinCandyVos = new ArrayList<>();
public static ArrayList<KylinCandyVo> kylinCandyVos() {
return (ArrayList<KylinCandyVo>) kylinCandyVos.clone();
}
public static ArrayList<KylinStationPerformanceVo> getKylinStationPerformanceVoArrayList() { public static ArrayList<KylinStationPerformanceVo> getKylinStationPerformanceVoArrayList() {
return (ArrayList<KylinStationPerformanceVo>) kylinStationPerformanceVoArrayList.clone(); return (ArrayList<KylinStationPerformanceVo>) kylinStationPerformanceVoArrayList.clone();
......
...@@ -253,6 +253,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -253,6 +253,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
return ResponseDto.failure("优先券不可用"); return ResponseDto.failure("优先券不可用");
} }
Integer typeVoucher = (Integer) advanceMap.get("type"); Integer typeVoucher = (Integer) advanceMap.get("type");
// String couponId = (String) advanceMap.get("couponId");
// if (typeVoucher.equals(-1) || orderUtils.judgeRoadShowCanUse(couponId, performanceData.getRoadShowId())) {
// return ResponseDto.failure("优先券不可用");
// }
if (typeVoucher.equals(-1)) { if (typeVoucher.equals(-1)) {
return ResponseDto.failure("优先券不可用"); return ResponseDto.failure("优先券不可用");
} }
......
package com.liquidnet.service.order.utils; package com.liquidnet.service.order.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IPUtil; import com.liquidnet.commons.lang.util.IPUtil;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
...@@ -326,4 +327,15 @@ public class DataUtils { ...@@ -326,4 +327,15 @@ public class DataUtils {
return (String) obj; return (String) obj;
} }
} }
//根据 券id 获取 可用巡演id数组
public List<String> getCouponRoad(String couponId) {
String rdk = KylinRedisConst.COUPON_ROADSHOWS.concat(couponId);
Object obj = redisUtil.get(rdk);
if (obj == null) {
return CollectionUtil.arrayListString();
} else {
return (List<String>) obj;
}
}
} }
...@@ -15,6 +15,7 @@ import com.liquidnet.service.kylin.constant.KylinRedisConst; ...@@ -15,6 +15,7 @@ import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.KylinFreightChargeDao; import com.liquidnet.service.kylin.dao.KylinFreightChargeDao;
import com.liquidnet.service.kylin.dto.vo.KylinAgentVo; import com.liquidnet.service.kylin.dto.vo.KylinAgentVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.returns.InnerReturnVo; import com.liquidnet.service.kylin.dto.vo.returns.InnerReturnVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
...@@ -238,6 +239,7 @@ public class OrderUtils { ...@@ -238,6 +239,7 @@ public class OrderUtils {
}); });
CandyUseResultVo candyUseResultVo = innerReturnVo.getData(); CandyUseResultVo candyUseResultVo = innerReturnVo.getData();
Integer type = candyUseResultVo.getCouType(); Integer type = candyUseResultVo.getCouType();
String couponId = candyUseResultVo.getCouponId();
BigDecimal value = candyUseResultVo.getValue(); BigDecimal value = candyUseResultVo.getValue();
BigDecimal voucher = BigDecimal.ZERO; BigDecimal voucher = BigDecimal.ZERO;
switch (type) { switch (type) {
...@@ -260,6 +262,7 @@ public class OrderUtils { ...@@ -260,6 +262,7 @@ public class OrderUtils {
voucher = BigDecimal.ZERO; voucher = BigDecimal.ZERO;
break; break;
} }
hashMap.put("couponId", couponId);
hashMap.put("type", type); hashMap.put("type", type);
hashMap.put("voucher", voucher.setScale(2, BigDecimal.ROUND_HALF_UP)); hashMap.put("voucher", voucher.setScale(2, BigDecimal.ROUND_HALF_UP));
return hashMap; return hashMap;
...@@ -272,6 +275,15 @@ public class OrderUtils { ...@@ -272,6 +275,15 @@ public class OrderUtils {
} }
} }
//判断是不是适用于巡演
public boolean judgeRoadShowCanUse(String couponId, String roadShowId) {
List<String> roadShowIds = dataUtils.getCouponRoad(couponId);
if (roadShowIds.size() == 0 || roadShowIds.contains(roadShowId)) {
return true;
}
return false;
}
public void backAdvanceCoupon(String advanceCode, String uid) { public void backAdvanceCoupon(String advanceCode, String uid) {
if (advanceCode != null) { if (advanceCode != null) {
backCoupon(advanceCode, uid); backCoupon(advanceCode, uid);
......
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