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

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

券码退回逻辑调整;

parent ab8a0e35
package com.liquidnet.client.admin.web.controller.zhengzai.candy; package com.liquidnet.client.admin.web.controller.zhengzai.candy;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
...@@ -9,9 +8,11 @@ import com.liquidnet.client.admin.common.core.controller.BaseController; ...@@ -9,9 +8,11 @@ import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult; import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo; 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.poi.ExcelUtil; import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.candy.dto.CandyCouponCodeExcelDto; import com.liquidnet.client.admin.zhengzai.candy.dto.CandyCouponCodeExcelDto;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponCodeAdminService; import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponCodeAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyUserCouponAdminService;
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.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
...@@ -21,6 +22,7 @@ import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto; ...@@ -21,6 +22,7 @@ import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.candy.dto.admin.CandyCouponCodeListParam; import com.liquidnet.service.candy.dto.admin.CandyCouponCodeListParam;
import com.liquidnet.service.candy.dto.admin.CandyCouponCodeOptParam; import com.liquidnet.service.candy.dto.admin.CandyCouponCodeOptParam;
import com.liquidnet.service.candy.entity.CandyCouponCode; import com.liquidnet.service.candy.entity.CandyCouponCode;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -42,6 +44,8 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -42,6 +44,8 @@ public class CandyCouponCodeAdminController extends BaseController {
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Autowired @Autowired
private ICandyCouponCodeAdminService candyCouponCodeAdminService; private ICandyCouponCodeAdminService candyCouponCodeAdminService;
@Autowired
private ICandyUserCouponAdminService candyUserCouponAdminService;
@GetMapping() @GetMapping()
public String view(@RequestParam String couponId, ModelMap mmap) { public String view(@RequestParam String couponId, ModelMap mmap) {
...@@ -65,6 +69,7 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -65,6 +69,7 @@ public class CandyCouponCodeAdminController extends BaseController {
.select( .select(
CandyCouponCode::getCcode, CandyCouponCode::getCcode,
CandyCouponCode::getCouponId, CandyCouponCode::getCouponId,
CandyCouponCode::getUcouponId,
CandyCouponCode::getRedeemMobile, CandyCouponCode::getRedeemMobile,
CandyCouponCode::getState CandyCouponCode::getState
); );
...@@ -142,13 +147,13 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -142,13 +147,13 @@ public class CandyCouponCodeAdminController extends BaseController {
return AjaxResult.warn("无效传参"); return AjaxResult.warn("无效传参");
} }
String couponId = optParam.getCouponId(); String couponId = optParam.getCouponId();
List<String> ccodes = optParam.getCcodes(); List<String> ucouponIds = optParam.getUcouponIds();
if (StringUtils.isBlank(couponId) || CollectionUtils.isEmpty(ccodes)) { if (StringUtils.isBlank(couponId) || CollectionUtils.isEmpty(ucouponIds)) {
return AjaxResult.warn("参数无效"); return AjaxResult.warn("参数无效");
} }
LambdaQueryWrapper<CandyCouponCode> couponCodeLambdaQueryWrapper = Wrappers.lambdaQuery(CandyCouponCode.class); LambdaQueryWrapper<CandyCouponCode> couponCodeLambdaQueryWrapper = Wrappers.lambdaQuery(CandyCouponCode.class);
couponCodeLambdaQueryWrapper.in(CandyCouponCode::getCcode, ccodes); couponCodeLambdaQueryWrapper.in(CandyCouponCode::getUcouponId, ucouponIds);
couponCodeLambdaQueryWrapper.eq(CandyCouponCode::getCouponId, couponId); couponCodeLambdaQueryWrapper.eq(CandyCouponCode::getCouponId, couponId);
List<CandyCouponCode> list = candyCouponCodeAdminService.list(couponCodeLambdaQueryWrapper); List<CandyCouponCode> list = candyCouponCodeAdminService.list(couponCodeLambdaQueryWrapper);
...@@ -158,34 +163,39 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -158,34 +163,39 @@ public class CandyCouponCodeAdminController extends BaseController {
List<CandyUserCouponBasicDto> vos = (List<CandyUserCouponBasicDto>) redisUtil.get(uckey); List<CandyUserCouponBasicDto> vos = (List<CandyUserCouponBasicDto>) redisUtil.get(uckey);
if (!CollectionUtils.isEmpty(vos)) { if (!CollectionUtils.isEmpty(vos)) {
CandyUserCouponBasicDto userCouponBasicDto = vos.stream().filter(v -> v.getCouponId().equals(couponId)).findAny().orElse(null); vos.removeIf(rv -> rv.getUcouponId().equals(r.getUcouponId()));
}
if (null != userCouponBasicDto && userCouponBasicDto.getState() == 1) { ccodeUpdateList.add(r.getUcouponId());
String cckey = CandyRedisConst.BASIC_COUPON_CODE.concat(r.getCcode()); });
CandyCouponCodeDto dto = (CandyCouponCodeDto) redisUtil.get(cckey);
if (null != dto && dto.getState() == 1) { if (!CollectionUtils.isEmpty(ccodeUpdateList)) {
dto.setState(5); LocalDateTime now = LocalDateTime.now();
redisUtil.set(cckey, dto); String loginName = ShiroUtils.getLoginName(), comment = "RECOVER";
vos.removeIf(vr -> vr.getCouponId().equals(couponId)); LambdaUpdateWrapper<CandyUserCoupon> userCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyUserCoupon.class);
redisUtil.set(uckey, vos); userCouponLambdaUpdateWrapper.in(CandyUserCoupon::getUcouponId, ccodeUpdateList);
userCouponLambdaUpdateWrapper.eq(CandyUserCoupon::getCouponId, couponId);
ccodeUpdateList.add(dto.getCcode()); userCouponLambdaUpdateWrapper.set(CandyUserCoupon::getState, 2);
} userCouponLambdaUpdateWrapper.set(CandyUserCoupon::getUpdatedAt, now);
} userCouponLambdaUpdateWrapper.set(CandyUserCoupon::getOperator, loginName);
} userCouponLambdaUpdateWrapper.set(CandyUserCoupon::getComment, comment);
}); boolean update = candyUserCouponAdminService.update(userCouponLambdaUpdateWrapper);
logger.info("Recover:coupon.code:[couponId={},updateUserCouponRst={}]", couponId, update);
if (!CollectionUtils.isEmpty(ccodeUpdateList)) {
LambdaUpdateWrapper<CandyCouponCode> couponCodeUpdateWrapper = Wrappers.lambdaUpdate(CandyCouponCode.class); LambdaUpdateWrapper<CandyCouponCode> couponCodeUpdateWrapper = Wrappers.lambdaUpdate(CandyCouponCode.class);
couponCodeUpdateWrapper.in(CandyCouponCode::getCcode, ccodeUpdateList).eq(CandyCouponCode::getCouponId, couponId); couponCodeUpdateWrapper.in(CandyCouponCode::getUcouponId, ccodeUpdateList);
couponCodeUpdateWrapper.eq(CandyCouponCode::getCouponId, couponId);
CandyCouponCode updateCouponCode = new CandyCouponCode(); couponCodeUpdateWrapper.set(CandyCouponCode::getState, 5);
updateCouponCode.setState(5); couponCodeUpdateWrapper.set(CandyCouponCode::getUpdatedAt, now);
updateCouponCode.setUpdatedAt(LocalDateTime.now()); couponCodeUpdateWrapper.set(CandyCouponCode::getOperator, loginName);
couponCodeUpdateWrapper.set(CandyCouponCode::getComment, comment);
update = candyCouponCodeAdminService.update(couponCodeUpdateWrapper);
logger.info("Recover:coupon.code:[couponId={},updateCouponCodeRst={}]", couponId, update);
return toAjax(candyCouponCodeAdminService.update(updateCouponCode, couponCodeUpdateWrapper)); return toAjax(update);
} }
return toAjax(false); return toAjax(false);
} }
......
...@@ -31,12 +31,12 @@ ...@@ -31,12 +31,12 @@
<a class="btn btn-warning multiple disabled" onclick="$.table.exportExcel()" shiro:hasPermission="candy:coupon:code:export"> <a class="btn btn-warning multiple disabled" onclick="$.table.exportExcel()" shiro:hasPermission="candy:coupon:code:export">
<i class="fa fa-download"></i> 导出 <i class="fa fa-download"></i> 导出
</a> </a>
<a class="btn btn-primary multiple disabled selectChangeShowInvalid" style="display: none" onclick="invalidHandler()" shiro:hasPermission="candy:coupon:code:invalid"> <!-- <a class="btn btn-primary multiple disabled selectChangeShowInvalid" style="display: none" onclick="invalidHandler()" shiro:hasPermission="candy:coupon:code:invalid">-->
<i class="fa fa-edit"></i> 批量失效 <!-- <i class="fa fa-edit"></i> 批量失效-->
</a> <!-- </a>-->
<a class="btn btn-danger multiple disabled selectChangeShowRecover" style="display: none" onclick="recoverHandler()" shiro:hasPermission="candy:coupon:code:recover"> <!-- <a class="btn btn-danger multiple disabled selectChangeShowRecover" style="display: none" onclick="recoverHandler()" shiro:hasPermission="candy:coupon:code:recover">-->
<i class="fa fa-remove"></i> 批量退回 <!-- <i class="fa fa-remove"></i> 批量退回-->
</a> <!-- </a>-->
</div> </div>
<div class="col-sm-12 select-table table-striped"> <div class="col-sm-12 select-table table-striped">
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
if (row.state === 0) { if (row.state === 0) {
actions.push('<a class="btn btn-primary btn-xs ' + invalidFlag + '" href="javascript:void(0)" onclick="invalidHandler(\'' + row.ccode + '\')"><i class="fa fa-edit"></i>失效</a> '); actions.push('<a class="btn btn-primary btn-xs ' + invalidFlag + '" href="javascript:void(0)" onclick="invalidHandler(\'' + row.ccode + '\')"><i class="fa fa-edit"></i>失效</a> ');
} else if (row.state === 1) { } else if (row.state === 1) {
actions.push('<a class="btn btn-danger btn-xs ' + recoverFlag + '" href="javascript:void(0)" onclick="recoverHandler(\'' + row.ccode + '\')"><i class="fa fa-remove"></i>退回</a>'); actions.push('<a class="btn btn-danger btn-xs ' + recoverFlag + '" href="javascript:void(0)" onclick="recoverHandler(\'' + row.ccode + '\',' + row.ucouponId + '\')"><i class="fa fa-remove"></i>退回</a>');
} }
return actions.join(''); return actions.join('');
} }
...@@ -120,26 +120,27 @@ ...@@ -120,26 +120,27 @@
} }
} }
function recoverHandler(ccode) { function recoverHandler(ccode, ucouponId) {
if (ccode !== null && ccode !== undefined) { if (ccode !== null && ccode !== undefined) {
var data = {"couponId":couponId,"ccodes": ccode}; var data = {"ucouponId":ucouponId,"couponId":couponId,"ccodes": ccode};
$.operate.submit('code/recover', "post", "json", data); $.operate.submit('code/recover', "post", "json", data);
} else {
$.operate.batchProcessingForCouponCode(couponId, 2);
} }
// else {
// $.operate.batchProcessingForCouponCode(couponId, 2);
// }
} }
function selectChange() { function selectChange() {
let val = $(".selectChange").val(); // let val = $(".selectChange").val();
console.log(typeof val); // console.log(typeof val);
if (val === '0') { // if (val === '0') {
$(".selectChangeShowInvalid").show(); // $(".selectChangeShowInvalid").show();
} else if (val === '1') { // } else if (val === '1') {
// $(".selectChangeShowRecover").show(); // // $(".selectChangeShowRecover").show();
} else { // } else {
$(".selectChangeShowInvalid").hide(); // $(".selectChangeShowInvalid").hide();
$(".selectChangeShowRecover").hide(); // $(".selectChangeShowRecover").hide();
} // }
} }
</script> </script>
</body> </body>
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
// updateUrl: prefix + "/edit/{id}", // updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export", // exportUrl: prefix + "/export",
sortName: "createdAt", sortName: "createdAt",
sortOrder: "desc",
modalName: "代金券", modalName: "代金券",
columns: [ columns: [
{ {
...@@ -145,7 +146,7 @@ ...@@ -145,7 +146,7 @@
/* 查看码列表 */ /* 查看码列表 */
function couponCodeList(couponId) { function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId; var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url); $.modal.openTab("代金码列表", url);
} }
</script> </script>
</body> </body>
......
<!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('满减券')" />
</head> </head>
<body class="gray-bg"> <body class="gray-bg">
<div class="container-div"> <div class="container-div">
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
// updateUrl: prefix + "/edit/{id}", // updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export", // exportUrl: prefix + "/export",
sortName: "createdAt", sortName: "createdAt",
sortOrder: "desc",
modalName: "满减券", modalName: "满减券",
columns: [ columns: [
{ {
...@@ -145,7 +146,7 @@ ...@@ -145,7 +146,7 @@
/* 查看码列表 */ /* 查看码列表 */
function couponCodeList(couponId) { function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId; var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url); $.modal.openTab("满减码列表", url);
} }
</script> </script>
</body> </body>
......
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
// updateUrl: prefix + "/edit/{id}", // updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export", // exportUrl: prefix + "/export",
sortName: "createdAt", sortName: "createdAt",
sortOrder: "desc",
modalName: "兑换券", modalName: "兑换券",
columns: [ columns: [
{ {
...@@ -126,7 +127,7 @@ ...@@ -126,7 +127,7 @@
/* 查看码列表 */ /* 查看码列表 */
function couponCodeList(couponId) { function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId; var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url); $.modal.openTab("兑换码列表", url);
} }
</script> </script>
</body> </body>
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
// updateUrl: prefix + "/edit/{id}", // updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export", // exportUrl: prefix + "/export",
sortName: "createdAt", sortName: "createdAt",
sortOrder: "desc",
modalName: "折扣券", modalName: "折扣券",
columns: [ columns: [
{ {
...@@ -145,7 +146,7 @@ ...@@ -145,7 +146,7 @@
/* 查看码列表 */ /* 查看码列表 */
function couponCodeList(couponId) { function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId; var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url); $.modal.openTab("折扣码列表", url);
} }
</script> </script>
</body> </body>
......
package com.liquidnet.client.admin.zhengzai.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
public interface ICandyUserCouponAdminService extends IService<CandyUserCoupon> {
}
package com.liquidnet.client.admin.zhengzai.candy.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyUserCouponAdminService;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
import com.liquidnet.service.candy.mapper.CandyUserCouponMapper;
import org.springframework.stereotype.Service;
@Service
public class CandyUserCouponAdminServiceImpl extends ServiceImpl<CandyUserCouponMapper, CandyUserCoupon> implements ICandyUserCouponAdminService {
}
...@@ -6,6 +6,10 @@ import java.util.List; ...@@ -6,6 +6,10 @@ import java.util.List;
@Data @Data
public class CandyCouponCodeOptParam { public class CandyCouponCodeOptParam {
/**
* ~candy_user_coupon.ucoupon_id
*/
private List<String> ucouponIds;
/** /**
* ~candy_coupon.coupon_id * ~candy_coupon.coupon_id
*/ */
......
...@@ -114,13 +114,12 @@ ...@@ -114,13 +114,12 @@
cmc.event_limit, cmc.event_limit,
cmc.event_at, cmc.event_at,
cmc.`operator`, cmc.`operator`,
cmc.created_at, cmc.created_at created_at,
cmc.updated_at cmc.updated_at
FROM candy_mgt_coupon cmc, candy_coupon cc FROM candy_mgt_coupon cmc
WHERE cmc.coupon_id = cc.coupon_id LEFT JOIN candy_coupon cc ON cmc.coupon_id = cc.coupon_id
AND cmc.state <![CDATA[<>]]> 2 WHERE cmc.state <![CDATA[<>]]> 2
AND cc.`exclusive` = 0 AND cc.`exclusive` = 0
<if test="mcouponId != null and mcouponId != ''"> <if test="mcouponId != null and mcouponId != ''">
AND cmc.mcoupon_id = #{mcouponId,jdbcType=VARCHAR} AND cmc.mcoupon_id = #{mcouponId,jdbcType=VARCHAR}
</if> </if>
...@@ -136,8 +135,6 @@ ...@@ -136,8 +135,6 @@
<if test="busiType != null"> <if test="busiType != null">
AND cc.busi_type = #{busiType,jdbcType=SMALLINT} AND cc.busi_type = #{busiType,jdbcType=SMALLINT}
</if> </if>
ORDER BY cmc.created_at DESC
</select> </select>
<select id="selectMultiForMgtCouponMemberDto" resultMap="Rst_MgtCouponMemberDto"> <select id="selectMultiForMgtCouponMemberDto" resultMap="Rst_MgtCouponMemberDto">
select cc.coupon_id, select cc.coupon_id,
......
...@@ -13,15 +13,16 @@ public class TestAdam { ...@@ -13,15 +13,16 @@ public class TestAdam {
"adam:blacklist:member:uid", "adam:blacklist:member:uid",
"adam:identity:mobile:13724286255", "adam:identity:mobile:13724286255",
"adam:info:user:270535560903720963807517", "adam:identity:mobile:15529282737",
"adam:info:morder:2104440", "adam:info:user:882883",
"adam:info:morder:2104440", "adam:info:morder:882883",
"adam:info:umember:2104440", "adam:info:umember:882883",
"adam:info:real_name:2104440", "adam:info:real_name:882883",
"adam:info:third_party:2104440", "adam:info:third_party:882883",
"adam:info:enters:2104440", "adam:info:enters:882883",
"adam:info:addresses:2104440", "adam:info:addresses:882883",
"adam:info:member:code:GMRGBUQB30", "adam:info:member:code:GMRGBUQB30",
"adam:info:certification:1141181199209160192",
"adam:identity:mobile:18505123456", "adam:identity:mobile:18505123456",
"adam:identity:sso:245482441472573441815566", "adam:identity:sso:245482441472573441815566",
......
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