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

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

~API:会员权益券编辑逻辑调整(原创建改为选择);

parent a1ce192d
......@@ -31,6 +31,8 @@ public class AdamMemberRightsCouponVo implements java.io.Serializable, Cloneable
private BigDecimal valOver;
@ApiModelProperty(position = 10, value = "满减~减")
private BigDecimal valMinus;
@ApiModelProperty(position = 11, value = "折扣[8折即0.8]")
private BigDecimal discount;
/* com.liquidnet.service.adam.dto.vo.AdamMemberRightsCouponRuleVo */
private List<AdamMemberRightsCouponRuleVo> useRules;
......
......@@ -15,18 +15,19 @@ public class CandyMemberCouponMatchParam {
@ApiModelProperty(required = true, value = "会员类型ID[64]", example = "1")
@NotBlank(message = "会员类型ID不能为空")
private String memberId;
@ApiModelProperty(required = true, value = "权益ID[64]")
@ApiModelProperty(required = true, value = "权益ID[64]", example = "21269184646476")
@NotBlank(message = "会员权益ID不能为空")
private String mrightsId;
@ApiModelProperty(required = true, value = "券ID", example = "券ID")
@NotBlank(message = "权益券ID不能为空")
@ApiModelProperty(required = true, value = "券ID", example = "20211111161557612")
private String couponId;
@NotNull(message = "券类别不能为空")
@ApiModelProperty(required = true, value = "业务类别[0-全场|1-演出|2-商品|3-优先购]", allowableValues = "0,1,2,3")
private Integer busiType;
@NotNull(message = "券类型不能为空")
// @ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]", allowableValues = "1,2,3,4,101")
@ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|4-折扣券|101-优先券]", allowableValues = "1,2,4,101")
// @ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券101-优先券]", allowableValues = "1,2,3,4,101")
@ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|4-折扣券101-优先券]", allowableValues = "1,2,4,101")
private Integer couType;
@NotNull(message = "券发放量不能为空")
......@@ -34,4 +35,10 @@ public class CandyMemberCouponMatchParam {
@Min(value = 1, message = "发放量不满足1~100范围")
@ApiModelProperty(required = true, value = "发放量", example = "1")
private Integer eventAmt;
@ApiModelProperty(required = true, value = "权益券操作类型[1-添加|2-删除|3-编辑]")
@NotNull(message = "操作类型不能为空")
private Integer oper;
@ApiModelProperty(required = false, value = "券ID(仅`state=3-编辑`时必填`)")
private String operCouponId;
}
......@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.client.admin.common.annotation.Log;
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.entity.SysUser;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberAdminService;
......@@ -19,11 +18,10 @@ import com.liquidnet.service.adam.dto.admin.AdamMemberRightsBuildParam;
import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.entity.AdamMemberRights;
import com.liquidnet.service.candy.dto.admin.CandyCouponRuleBuildParam;
import com.liquidnet.service.candy.dto.admin.CandyMemberCouponBuildParam;
import com.liquidnet.service.candy.dto.admin.CandyMemberCouponMatchParam;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponMemberDto;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyMgtCoupon;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
......@@ -36,9 +34,6 @@ import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
......@@ -253,32 +248,74 @@ public class AdamMemberAdminController extends BaseController {
@PostMapping("edit_coupon")
@ResponseBody
public AjaxResult editCoupon(@RequestBody @Validated CandyMemberCouponMatchParam parameter) {
LambdaQueryWrapper<AdamMemberRights> memberRightsLambdaQueryWrapper = Wrappers.lambdaQuery();
memberRightsLambdaQueryWrapper.eq(AdamMemberRights::getMrightsId, parameter.getMrightsId());
memberRightsLambdaQueryWrapper.eq(AdamMemberRights::getState, 1);
AdamMemberRights memberRights = adamMemberRightsAdminService.getOne(memberRightsLambdaQueryWrapper);
if (null == memberRights) {
logger.warn("会员权益[{}]不存在", parameter.getMrightsId());
return this.error(AjaxResult.Type.WARN, String.format("会员权益【%s】不存在", parameter.getMrightsId()));
}
if (!memberRights.getMemberId().equals(parameter.getMemberId())) {
logger.warn("会员权益[{}]所属卡[{}]与所选卡[{}]不一致", parameter.getMrightsId(), memberRights.getMemberId(), parameter.getMemberId());
return this.error(AjaxResult.Type.WARN, "权益配置不匹配");
}
LambdaQueryWrapper<CandyCoupon> couponLambdaQueryWrapper = Wrappers.lambdaQuery();
couponLambdaQueryWrapper.eq(CandyCoupon::getCouponId, parameter.getCouponId());
couponLambdaQueryWrapper.eq(CandyCoupon::getState, 1);
CandyCoupon coupon = candyCouponAdminService.getOne(couponLambdaQueryWrapper);
if (null == coupon) {
logger.warn("券[{}]不存在", parameter.getCouponId());
logger.warn("会员权益券[{}]不存在", parameter.getCouponId());
return this.error(AjaxResult.Type.WARN, String.format("券【%s】不存在", parameter.getCouponId()));
}
if (!coupon.getBusiType().equals(parameter.getBusiType())) {
logger.warn("券[{}]类别[{}]与所选类别不一致", parameter.getCouponId(), parameter.getBusiType());
logger.warn("会员权益券[{}]类别[{}]与所选类别[{}]不一致", parameter.getCouponId(), coupon.getBusiType(), parameter.getBusiType());
return this.error(AjaxResult.Type.WARN, "券信息不匹配");
}
if (!coupon.getCouType().equals(parameter.getCouType())) {
logger.warn("券[{}]类型[{}]与所选类型不一致", parameter.getCouponId(), parameter.getCouType());
logger.warn("会员权益券[{}]类型[{}]与所选类型[{}]不一致", parameter.getCouponId(), coupon.getCouType(), parameter.getCouType());
return this.error(AjaxResult.Type.WARN, "券信息不匹配");
}
// TODO: 2021/11/24 zhanggb
return this.toAjax(true);
// if (StringUtils.isEmpty(parameter.getCouponId())) {
// // 新增券
// return this.toAjax(candyMgtCouponAdminService.saveMgtCouponForMemberRights(parameter));
// } else {
// // 编辑券
// return this.toAjax(candyMgtCouponAdminService.editMgtCouponForMemberRights(parameter));
// }
LambdaQueryWrapper<CandyMgtCoupon> mgtCouponLambdaQueryWrapper = Wrappers.lambdaQuery();
mgtCouponLambdaQueryWrapper.eq(CandyMgtCoupon::getMcouponId, parameter.getMrightsId());
mgtCouponLambdaQueryWrapper.in(CandyMgtCoupon::getCouponId, parameter.getCouponId(), parameter.getOperCouponId());
mgtCouponLambdaQueryWrapper.eq(CandyMgtCoupon::getState, 10);
List<CandyMgtCoupon> mgtCouponList = candyMgtCouponAdminService.list(mgtCouponLambdaQueryWrapper);
switch (parameter.getOper()) {
case 1:// 添加
if (!CollectionUtils.isEmpty(mgtCouponList)) {
logger.warn("会员权益[{}]已配置该券[{}]", parameter.getMrightsId(), parameter.getCouponId());
return this.error(AjaxResult.Type.WARN, "该权益已配置当前券,请选择其它券");
}
break;
case 2:// 删除
if (CollectionUtils.isEmpty(mgtCouponList)) {
logger.warn("会员权益[{}]中不存在该券[{}]", parameter.getMrightsId(), parameter.getCouponId());
return this.error(AjaxResult.Type.WARN, "该权益未配置当前券,请核实确认");
}
break;
case 3:// 编辑
if (StringUtils.isBlank(parameter.getOperCouponId())) {
logger.warn("会员权益券[{}]编辑未指定券ID[{},{}]", parameter.getMrightsId(), parameter.getOperCouponId(), parameter.getCouponId());
return this.error(AjaxResult.Type.WARN, "编辑未指定券ID【operCouponId】");
}
if (CollectionUtils.isEmpty(mgtCouponList)) {
logger.warn("会员权益[{}]编辑指定券[{}]无效", parameter.getMrightsId(), parameter.getCouponId());
return this.error(AjaxResult.Type.WARN, String.format("编辑指定券【%s】无效", parameter.getOperCouponId()));
}
break;
default:
logger.warn("Invalid operation[parameter.oper={}]", parameter.getOper());
return this.error(AjaxResult.Type.WARN, "无效操作");
}
try {
return this.toAjax(candyMgtCouponAdminService.saveUpdateMgtCouponForMemberRights(parameter, coupon));
} catch (Exception e) {
logger.error("会员管理:会员卡编辑:权益券配置异常", e);
return this.toAjax(false);
}
}
}
......@@ -10,9 +10,11 @@ import java.util.List;
public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> {
boolean saveMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter);
// boolean saveMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter);
boolean editMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter);
// boolean editMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter);
boolean saveUpdateMgtCouponForMemberRights(CandyMemberCouponMatchParam parameter, CandyCoupon coupon);
boolean saveMgtCouponForCouponBuild(CandyMgtCouponBuildParam parameter);
......@@ -20,7 +22,7 @@ public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> {
boolean saveMgtCouponInfo(CandyCoupon initCoupon, CandyMgtCoupon initMgtCoupon, List<CandyCouponRule> initCouponRuleList);
boolean updateMgtCouponInfo(CandyCoupon updateCoupon, CandyMgtCoupon updateMgtCoupon, List<CandyCouponRule> initCouponRuleList);
// boolean updateMgtCouponInfo(CandyCoupon updateCoupon, CandyMgtCoupon updateMgtCoupon, List<CandyCouponRule> initCouponRuleList);
List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam);
......
......@@ -10,13 +10,13 @@ import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberPriceAdminSer
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRuleAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.common.cache.redis.util.AbstractRedisUtil;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamMemberRightsCouponRuleVo;
import com.liquidnet.service.adam.dto.vo.AdamMemberRightsCouponVo;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.candy.dto.admin.*;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyCouponRule;
......@@ -55,148 +55,300 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
@Autowired
private IAdamMemberPriceAdminService adamMemberPriceAdminService;
// @Override
// public boolean saveMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter) {
// String memberId = parameter.getMemberId(), operator = ShiroUtils.getLoginName();
// LocalDateTime nowTime = LocalDateTime.now();
//
// LambdaQueryWrapper<AdamMemberPrice> memberPriceLambdaQueryWrapper = Wrappers.lambdaQuery(AdamMemberPrice.class)
// .eq(AdamMemberPrice::getMemberId, memberId).eq(AdamMemberPrice::getState, 1);
// AdamMemberPrice memberPrice = adamMemberPriceAdminService.getOne(memberPriceLambdaQueryWrapper);
//
// CandyCoupon initCoupon = new CandyCoupon();
// initCoupon.setCouponId(IDGenerator.nextMilliId());
// initCoupon.setState(1);
// initCoupon.setTitle(parameter.getTitle());
// initCoupon.setLabel(parameter.getLabel());
// initCoupon.setNotice("会员权益");
// initCoupon.setExclusive(1);
// initCoupon.setBusiType(parameter.getBusiType());
// initCoupon.setCouType(parameter.getCouType());
// initCoupon.setBindType(1);// 领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换|3-发放需领取]
// //initCoupon.setDiscount();
// initCoupon.setValFace(parameter.getValFace());
// initCoupon.setValOver(parameter.getValOver());
// initCoupon.setValMinus(parameter.getValMinus());
// initCoupon.setOverlay(parameter.getOverlay());
// initCoupon.setValidity(memberPrice.getDays());
// //initCoupon.setRedeemValidity();
// //initCoupon.setRedeemStart();
// //initCoupon.setRedeemStop();
// initCoupon.setEffectAt(nowTime);
// // 会员权益券失效时间duedAt需要同步会员到期时间expiryAt
// //initCoupon.setExpireAt();
// initCoupon.setOperator(operator);
// initCoupon.setCreatedAt(nowTime);
//
//
// List<CandyCouponRuleBuildParam> couponRuleList = parameter.getCouponRuleList();
// List<CandyCouponRule> initCouponRuleList = new ArrayList<>();
// if (!CollectionUtils.isEmpty(couponRuleList)) {
// couponRuleList.forEach(r -> {
// CandyCouponRule initCouponRule = new CandyCouponRule();
// initCouponRule.setCruleId(IDGenerator.nextTimeId2());
// initCouponRule.setCouponId(initCoupon.getCouponId());
// initCouponRule.setUseScope(r.getUseScope());
// initCouponRule.setBusiName(r.getBusiName());
// initCouponRule.setBusiId(r.getBusiId());
// initCouponRule.setState(1);
//
// initCouponRuleList.add(initCouponRule);
// });
// }
//
//
// CandyMgtCoupon initMgtCoupon = new CandyMgtCoupon();
// initMgtCoupon.setMcouponId(parameter.getMrightsId());
// initMgtCoupon.setCouponId(initCoupon.getCouponId());
// initMgtCoupon.setState(10);// 发放状态[0-未发放|1-已发放|2-无效|9-发放中|10-会员礼包初始模版]
//
// initMgtCoupon.setEventAmt(parameter.getEventAmt());
// initMgtCoupon.setEventType(2);
// //initMgtCoupon.setEventLimit();
// //initMgtCoupon.setEventAt();
// initMgtCoupon.setOperator(operator);
// initMgtCoupon.setCreatedAt(nowTime);
//
// return candyMgtCouponAdminService.saveMgtCouponInfo(initCoupon, initMgtCoupon, initCouponRuleList);
// }
//
// @Override
// public boolean editMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter) {
// String couponId = parameter.getCouponId(), operator = ShiroUtils.getLoginName();
// LocalDateTime nowTime = LocalDateTime.now();
//
// LambdaQueryWrapper<CandyCoupon> candyCouponLambdaQueryWrapper = Wrappers.lambdaQuery(CandyCoupon.class)
// .eq(CandyCoupon::getCouponId, couponId)
// .eq(CandyCoupon::getState, 1)
// .eq(CandyCoupon::getExclusive, 1);
// if (candyCouponAdminService.count(candyCouponLambdaQueryWrapper) > 0) {
// CandyCoupon updateCoupon = new CandyCoupon();
// List<CandyCouponRule> initCouponRuleList = new ArrayList<>();
// CandyMgtCoupon updateMgtCoupon = new CandyMgtCoupon();
//
// switch (parameter.getState()) {
// case 1:// 编辑
//// CandyCoupon updateCoupon = new CandyCoupon();
// updateCoupon.setCouponId(couponId);
// updateCoupon.setState(1);
//
// updateCoupon.setTitle(parameter.getTitle());
// updateCoupon.setExclusive(1);
// updateCoupon.setBusiType(parameter.getBusiType());
// updateCoupon.setCouType(parameter.getCouType());
// updateCoupon.setValFace(parameter.getValFace());
// updateCoupon.setValOver(parameter.getValOver());
// updateCoupon.setValMinus(parameter.getValMinus());
// updateCoupon.setOverlay(parameter.getOverlay());
// updateCoupon.setOperator(operator);
// updateCoupon.setEffectAt(nowTime);// 会员权益券失效时间duedAt需要同步会员到期时间expiryAt
// updateCoupon.setUpdatedAt(nowTime);
//
//
// List<CandyCouponRuleBuildParam> couponRuleList = parameter.getCouponRuleList();
//// List<CandyCouponRule> initCouponRuleList = new ArrayList<>();
// if (!CollectionUtils.isEmpty(couponRuleList)) {
// couponRuleList.forEach(r -> {
// CandyCouponRule initCouponRule = new CandyCouponRule();
// initCouponRule.setCruleId(IDGenerator.nextTimeId2());
// initCouponRule.setCouponId(couponId);
// initCouponRule.setUseScope(r.getUseScope());
// initCouponRule.setBusiName(r.getBusiName());
// initCouponRule.setBusiId(r.getBusiId());
// initCouponRule.setState(1);
//
// initCouponRuleList.add(initCouponRule);
// });
// }
//
//// CandyMgtCoupon updateMgtCoupon = new CandyMgtCoupon();
// updateMgtCoupon.setMcouponId(parameter.getMrightsId());
// updateMgtCoupon.setCouponId(couponId);
// updateMgtCoupon.setEventAmt(parameter.getEventAmt());
// updateMgtCoupon.setOperator(operator);
// updateMgtCoupon.setUpdatedAt(nowTime);
// break;
// case 2:// 删除
// updateCoupon.setCouponId(couponId);
// updateCoupon.setOperator(operator);
// updateCoupon.setUpdatedAt(nowTime);
// updateCoupon.setState(2);
// updateCoupon.setExclusive(1);
//
// updateMgtCoupon.setMcouponId(parameter.getMrightsId());
// updateMgtCoupon.setCouponId(couponId);
// updateMgtCoupon.setOperator(operator);
// updateMgtCoupon.setUpdatedAt(nowTime);
// updateMgtCoupon.setState(2);
// break;
// }
//
// return candyMgtCouponAdminService.updateMgtCouponInfo(updateCoupon, updateMgtCoupon, initCouponRuleList);
// }
// return false;
// }
@Override
public boolean saveMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter) {
String memberId = parameter.getMemberId(), operator = ShiroUtils.getLoginName();
@Transactional
public boolean saveUpdateMgtCouponForMemberRights(CandyMemberCouponMatchParam parameter, CandyCoupon coupon) {
String operator = ShiroUtils.getLoginName();
LocalDateTime nowTime = LocalDateTime.now();
LambdaQueryWrapper<AdamMemberPrice> memberPriceLambdaQueryWrapper = Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberId, memberId).eq(AdamMemberPrice::getState, 1);
AdamMemberPrice memberPrice = adamMemberPriceAdminService.getOne(memberPriceLambdaQueryWrapper);
CandyCoupon initCoupon = new CandyCoupon();
initCoupon.setCouponId(IDGenerator.nextMilliId());
initCoupon.setState(1);
initCoupon.setTitle(parameter.getTitle());
initCoupon.setLabel(parameter.getLabel());
initCoupon.setNotice("会员权益");
initCoupon.setExclusive(1);
initCoupon.setBusiType(parameter.getBusiType());
initCoupon.setCouType(parameter.getCouType());
initCoupon.setBindType(1);// 领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换|3-发放需领取]
//initCoupon.setDiscount();
initCoupon.setValFace(parameter.getValFace());
initCoupon.setValOver(parameter.getValOver());
initCoupon.setValMinus(parameter.getValMinus());
initCoupon.setOverlay(parameter.getOverlay());
initCoupon.setValidity(memberPrice.getDays());
//initCoupon.setRedeemValidity();
//initCoupon.setRedeemStart();
//initCoupon.setRedeemStop();
initCoupon.setEffectAt(nowTime);
// 会员权益券失效时间duedAt需要同步会员到期时间expiryAt
//initCoupon.setExpireAt();
initCoupon.setOperator(operator);
initCoupon.setCreatedAt(nowTime);
List<CandyCouponRuleBuildParam> couponRuleList = parameter.getCouponRuleList();
List<CandyCouponRule> initCouponRuleList = new ArrayList<>();
if (!CollectionUtils.isEmpty(couponRuleList)) {
couponRuleList.forEach(r -> {
CandyCouponRule initCouponRule = new CandyCouponRule();
initCouponRule.setCruleId(IDGenerator.nextTimeId2());
initCouponRule.setCouponId(initCoupon.getCouponId());
initCouponRule.setUseScope(r.getUseScope());
initCouponRule.setBusiName(r.getBusiName());
initCouponRule.setBusiId(r.getBusiId());
initCouponRule.setState(1);
initCouponRuleList.add(initCouponRule);
});
LambdaQueryWrapper<CandyCouponRule> couponRuleLambdaQueryWrapper = Wrappers.lambdaQuery();
couponRuleLambdaQueryWrapper.eq(CandyCouponRule::getCouponId, parameter.getCouponId());
couponRuleLambdaQueryWrapper.eq(CandyCouponRule::getState, 1);
LambdaQueryWrapper<CandyMgtCoupon> mgtCouponLambdaQueryWrapper = Wrappers.lambdaQuery();
mgtCouponLambdaQueryWrapper.eq(CandyMgtCoupon::getMcouponId, parameter.getMrightsId());
mgtCouponLambdaQueryWrapper.eq(CandyMgtCoupon::getCouponId, parameter.getCouponId());
mgtCouponLambdaQueryWrapper.eq(CandyMgtCoupon::getState, 10);
AbstractRedisUtil redisAdamUtil = redisDataSourceUtil.getRedisAdamUtil();
List<AdamMemberRightsCouponRuleVo> memberRightsCouponRuleVoList = null;
List<AdamMemberRightsCouponVo> memberRightsCouponVoList = null;
CandyMgtCoupon mgtCouponOper = new CandyMgtCoupon();
switch (parameter.getOper()) {
case 1:// 添加 ===========================================================================================================================
mgtCouponOper.setMcouponId(parameter.getMrightsId());
mgtCouponOper.setCouponId(parameter.getCouponId());
mgtCouponOper.setState(10);// 发放状态[0-未发放|1-已发放|2-无效|9-发放中|10-会员礼包初始模版]
mgtCouponOper.setEventAmt(parameter.getEventAmt());
mgtCouponOper.setEventType(2);
//mgtCouponOper.setEventLimit();
//mgtCouponOper.setEventAt();
mgtCouponOper.setOperator(operator);
mgtCouponOper.setCreatedAt(nowTime);
if (candyMgtCouponMapper.insert(mgtCouponOper) <= 0) {
return false;
}
// 同步REDIS:用户端:购买会员详情页:权益列表:权益详情:专享券信息
memberRightsCouponVoList = (List<AdamMemberRightsCouponVo>) redisAdamUtil.get(
AdamRedisConst.INFO_MEMBER_RIGHTS_COUPON.concat(parameter.getMrightsId())
);
memberRightsCouponRuleVoList = this.copyFromCandyCouponRule(candyCouponRuleAdminService.list(couponRuleLambdaQueryWrapper));
CandyMgtCoupon initMgtCoupon = new CandyMgtCoupon();
initMgtCoupon.setMcouponId(parameter.getMrightsId());
initMgtCoupon.setCouponId(initCoupon.getCouponId());
initMgtCoupon.setState(10);// 发放状态[0-未发放|1-已发放|2-无效|9-发放中|10-会员礼包初始模版]
initMgtCoupon.setEventAmt(parameter.getEventAmt());
initMgtCoupon.setEventType(2);
//initMgtCoupon.setEventLimit();
//initMgtCoupon.setEventAt();
initMgtCoupon.setOperator(operator);
initMgtCoupon.setCreatedAt(nowTime);
return candyMgtCouponAdminService.saveMgtCouponInfo(initCoupon, initMgtCoupon, initCouponRuleList);
if (!CollectionUtils.isEmpty(memberRightsCouponVoList)) {
memberRightsCouponVoList.removeIf(r -> r.getCouponId().equals(parameter.getCouponId()));
} else {
memberRightsCouponVoList = new ArrayList<>();
}
for (int i = 0; i < parameter.getEventAmt(); i++) {
AdamMemberRightsCouponVo memberRightsCouponVo = AdamMemberRightsCouponVo.getNew();
memberRightsCouponVo.setMrightsId(parameter.getMrightsId());
memberRightsCouponVo.setCouponId(parameter.getCouponId());
memberRightsCouponVo.setBusiType(coupon.getBusiType());
memberRightsCouponVo.setCouType(coupon.getCouType());
memberRightsCouponVo.setTitle(coupon.getTitle());
memberRightsCouponVo.setLabel(coupon.getLabel());
memberRightsCouponVo.setNotice(coupon.getNotice());
memberRightsCouponVo.setValFace(coupon.getValFace());
memberRightsCouponVo.setValOver(coupon.getValOver());
memberRightsCouponVo.setValMinus(coupon.getValMinus());
memberRightsCouponVo.setDiscount(coupon.getDiscount());
memberRightsCouponVo.setUseRules(memberRightsCouponRuleVoList);
@Override
public boolean editMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter) {
String couponId = parameter.getCouponId(), operator = ShiroUtils.getLoginName();
LocalDateTime nowTime = LocalDateTime.now();
LambdaQueryWrapper<CandyCoupon> candyCouponLambdaQueryWrapper = Wrappers.lambdaQuery(CandyCoupon.class)
.eq(CandyCoupon::getCouponId, couponId)
.eq(CandyCoupon::getState, 1)
.eq(CandyCoupon::getExclusive, 1);
if (candyCouponAdminService.count(candyCouponLambdaQueryWrapper) > 0) {
CandyCoupon updateCoupon = new CandyCoupon();
List<CandyCouponRule> initCouponRuleList = new ArrayList<>();
CandyMgtCoupon updateMgtCoupon = new CandyMgtCoupon();
switch (parameter.getState()) {
case 1:// 编辑
// CandyCoupon updateCoupon = new CandyCoupon();
updateCoupon.setCouponId(couponId);
updateCoupon.setState(1);
updateCoupon.setTitle(parameter.getTitle());
updateCoupon.setExclusive(1);
updateCoupon.setBusiType(parameter.getBusiType());
updateCoupon.setCouType(parameter.getCouType());
updateCoupon.setValFace(parameter.getValFace());
updateCoupon.setValOver(parameter.getValOver());
updateCoupon.setValMinus(parameter.getValMinus());
updateCoupon.setOverlay(parameter.getOverlay());
updateCoupon.setOperator(operator);
updateCoupon.setEffectAt(nowTime);// 会员权益券失效时间duedAt需要同步会员到期时间expiryAt
updateCoupon.setUpdatedAt(nowTime);
memberRightsCouponVoList.add(memberRightsCouponVo);
}
break;
case 2:// 删除 ===========================================================================================================================
mgtCouponOper.setState(2);
mgtCouponOper.setOperator(operator);
mgtCouponOper.setUpdatedAt(nowTime);
if (!candyMgtCouponAdminService.update(mgtCouponOper, mgtCouponLambdaQueryWrapper)) {
return false;
}
List<CandyCouponRuleBuildParam> couponRuleList = parameter.getCouponRuleList();
// List<CandyCouponRule> initCouponRuleList = new ArrayList<>();
if (!CollectionUtils.isEmpty(couponRuleList)) {
couponRuleList.forEach(r -> {
CandyCouponRule initCouponRule = new CandyCouponRule();
initCouponRule.setCruleId(IDGenerator.nextTimeId2());
initCouponRule.setCouponId(couponId);
initCouponRule.setUseScope(r.getUseScope());
initCouponRule.setBusiName(r.getBusiName());
initCouponRule.setBusiId(r.getBusiId());
initCouponRule.setState(1);
// 同步REDIS:用户端:购买会员详情页:权益列表:权益详情:专享券信息
memberRightsCouponVoList = (List<AdamMemberRightsCouponVo>) redisAdamUtil.get(
AdamRedisConst.INFO_MEMBER_RIGHTS_COUPON.concat(parameter.getMrightsId())
);
if (!CollectionUtils.isEmpty(memberRightsCouponVoList)) {
memberRightsCouponVoList.removeIf(r -> r.getCouponId().equals(parameter.getCouponId()));
}
break;
case 3:// 编辑 ===========================================================================================================================
CandyMgtCoupon existMgtCoupon = candyMgtCouponAdminService.getOne(mgtCouponLambdaQueryWrapper);
if (null == existMgtCoupon) {// 不存在,则为新选更换(删除旧配置,添加新配置)
LambdaUpdateWrapper<CandyMgtCoupon> mgtCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate();
mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getMcouponId, parameter.getMrightsId());
mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getCouponId, parameter.getOperCouponId());
mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getState, 10);
mgtCouponLambdaUpdateWrapper.set(CandyMgtCoupon::getState, 2);
mgtCouponLambdaUpdateWrapper.set(CandyMgtCoupon::getOperator, operator);
mgtCouponLambdaUpdateWrapper.set(CandyMgtCoupon::getUpdatedAt, nowTime);
mgtCouponOper.setMcouponId(parameter.getMrightsId());
mgtCouponOper.setCouponId(parameter.getCouponId());
mgtCouponOper.setState(10);// 发放状态[0-未发放|1-已发放|2-无效|9-发放中|10-会员礼包初始模版]
mgtCouponOper.setEventAmt(parameter.getEventAmt());
mgtCouponOper.setEventType(2);
mgtCouponOper.setOperator(operator);
mgtCouponOper.setCreatedAt(nowTime);
if (!candyMgtCouponAdminService.update(mgtCouponLambdaUpdateWrapper) || candyMgtCouponMapper.insert(mgtCouponOper) <= 0) {
throw new LiquidnetServiceException("500", "编辑券新选更换数据更新失败");
}
} else {// 存在,则更新发放信息
mgtCouponOper.setEventAmt(parameter.getEventAmt());
mgtCouponOper.setOperator(operator);
mgtCouponOper.setUpdatedAt(nowTime);
initCouponRuleList.add(initCouponRule);
});
if (!candyMgtCouponAdminService.update(mgtCouponOper, mgtCouponLambdaQueryWrapper)) {
return false;
}
}
// CandyMgtCoupon updateMgtCoupon = new CandyMgtCoupon();
updateMgtCoupon.setMcouponId(parameter.getMrightsId());
updateMgtCoupon.setCouponId(couponId);
updateMgtCoupon.setEventAmt(parameter.getEventAmt());
updateMgtCoupon.setOperator(operator);
updateMgtCoupon.setUpdatedAt(nowTime);
break;
case 2:// 删除
updateCoupon.setCouponId(couponId);
updateCoupon.setOperator(operator);
updateCoupon.setUpdatedAt(nowTime);
updateCoupon.setState(2);
updateCoupon.setExclusive(1);
updateMgtCoupon.setMcouponId(parameter.getMrightsId());
updateMgtCoupon.setCouponId(couponId);
updateMgtCoupon.setOperator(operator);
updateMgtCoupon.setUpdatedAt(nowTime);
updateMgtCoupon.setState(2);
break;
// 同步REDIS:用户端:购买会员详情页:权益列表:权益详情:专享券信息
memberRightsCouponVoList = (List<AdamMemberRightsCouponVo>) redisAdamUtil.get(
AdamRedisConst.INFO_MEMBER_RIGHTS_COUPON.concat(parameter.getMrightsId())
);
memberRightsCouponRuleVoList = this.copyFromCandyCouponRule(candyCouponRuleAdminService.list(couponRuleLambdaQueryWrapper));
if (!CollectionUtils.isEmpty(memberRightsCouponVoList)) {
memberRightsCouponVoList.removeIf(r -> r.getCouponId().equals(parameter.getOperCouponId()));
} else {
memberRightsCouponVoList = new ArrayList<>();
}
for (int i = 0; i < parameter.getEventAmt(); i++) {
AdamMemberRightsCouponVo memberRightsCouponVo = AdamMemberRightsCouponVo.getNew();
memberRightsCouponVo.setMrightsId(parameter.getMrightsId());
memberRightsCouponVo.setCouponId(parameter.getCouponId());
memberRightsCouponVo.setBusiType(coupon.getBusiType());
memberRightsCouponVo.setCouType(coupon.getCouType());
memberRightsCouponVo.setTitle(coupon.getTitle());
memberRightsCouponVo.setLabel(coupon.getLabel());
memberRightsCouponVo.setNotice(coupon.getNotice());
memberRightsCouponVo.setValFace(coupon.getValFace());
memberRightsCouponVo.setValOver(coupon.getValOver());
memberRightsCouponVo.setValMinus(coupon.getValMinus());
memberRightsCouponVo.setDiscount(coupon.getDiscount());
memberRightsCouponVo.setUseRules(memberRightsCouponRuleVoList);
return candyMgtCouponAdminService.updateMgtCouponInfo(updateCoupon, updateMgtCoupon, initCouponRuleList);
memberRightsCouponVoList.add(memberRightsCouponVo);
}
break;
default:// 无效 ===========================================================================================================================
log.warn("Invalid operation[parameter.oper={}]", parameter.getOper());
return false;
}
return redisAdamUtil.set(AdamRedisConst.INFO_MEMBER_RIGHTS_COUPON.concat(parameter.getMrightsId()), memberRightsCouponVoList);
}
@Override
public boolean saveMgtCouponForCouponBuild(CandyMgtCouponBuildParam parameter) {
......@@ -286,53 +438,53 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
throw new LiquidnetServiceException();
}
switch (initCoupon.getExclusive()) {
case 0:
break;
case 1:
this.syncRdsForMemberRightsCouponProcessing(false, initCoupon, initMgtCoupon, initCouponRuleList);
break;
}
// switch (initCoupon.getExclusive()) {
// case 0:
// break;
// case 1:
// this.syncRdsForMemberRightsCouponProcessing(false, initCoupon, initMgtCoupon, initCouponRuleList);
// break;
// }
return true;
}
@Override
@Transactional
public boolean updateMgtCouponInfo(CandyCoupon updateCoupon, CandyMgtCoupon updateMgtCoupon, List<CandyCouponRule> initCouponRuleList) {
LambdaUpdateWrapper<CandyCoupon> couponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyCoupon.class)
.eq(CandyCoupon::getCouponId, updateCoupon.getCouponId())
.eq(CandyCoupon::getState, 1)
.eq(CandyCoupon::getExclusive, updateCoupon.getExclusive());
int updateCt = candyCouponMapper.update(updateCoupon, couponLambdaUpdateWrapper);
LambdaUpdateWrapper<CandyMgtCoupon> mgtCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyMgtCoupon.class);
mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getMcouponId, updateMgtCoupon.getMcouponId());
mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getCouponId, updateMgtCoupon.getCouponId());
mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getState, updateCoupon.getExclusive() == 1 ? 10 : 0);
updateCt += candyMgtCouponMapper.update(updateMgtCoupon, mgtCouponLambdaUpdateWrapper);
LambdaUpdateWrapper<CandyCouponRule> couponRuleLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyCouponRule.class)
.eq(CandyCouponRule::getCouponId, updateCoupon.getCouponId())
.eq(CandyCouponRule::getState, 1)
.set(CandyCouponRule::getState, 2);
candyCouponRuleAdminService.update(couponRuleLambdaUpdateWrapper);
if (updateCt < 2 || (!CollectionUtils.isEmpty(initCouponRuleList) && !candyCouponRuleAdminService.saveBatch(initCouponRuleList))) {
throw new LiquidnetServiceException();
}
switch (updateCoupon.getExclusive()) {
case 0:
break;
case 1:
this.syncRdsForMemberRightsCouponProcessing(true, updateCoupon, updateMgtCoupon, initCouponRuleList);
break;
}
return true;
}
// @Override
// @Transactional
// public boolean updateMgtCouponInfo(CandyCoupon updateCoupon, CandyMgtCoupon updateMgtCoupon, List<CandyCouponRule> initCouponRuleList) {
// LambdaUpdateWrapper<CandyCoupon> couponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyCoupon.class)
// .eq(CandyCoupon::getCouponId, updateCoupon.getCouponId())
// .eq(CandyCoupon::getState, 1)
// .eq(CandyCoupon::getExclusive, updateCoupon.getExclusive());
// int updateCt = candyCouponMapper.update(updateCoupon, couponLambdaUpdateWrapper);
//
// LambdaUpdateWrapper<CandyMgtCoupon> mgtCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyMgtCoupon.class);
// mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getMcouponId, updateMgtCoupon.getMcouponId());
// mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getCouponId, updateMgtCoupon.getCouponId());
// mgtCouponLambdaUpdateWrapper.eq(CandyMgtCoupon::getState, updateCoupon.getExclusive() == 1 ? 10 : 0);
// updateCt += candyMgtCouponMapper.update(updateMgtCoupon, mgtCouponLambdaUpdateWrapper);
//
//
// LambdaUpdateWrapper<CandyCouponRule> couponRuleLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyCouponRule.class)
// .eq(CandyCouponRule::getCouponId, updateCoupon.getCouponId())
// .eq(CandyCouponRule::getState, 1)
// .set(CandyCouponRule::getState, 2);
// candyCouponRuleAdminService.update(couponRuleLambdaUpdateWrapper);
//
// if (updateCt < 2 || (!CollectionUtils.isEmpty(initCouponRuleList) && !candyCouponRuleAdminService.saveBatch(initCouponRuleList))) {
// throw new LiquidnetServiceException();
// }
//
// switch (updateCoupon.getExclusive()) {
// case 0:
// break;
// case 1:
// this.syncRdsForMemberRightsCouponProcessing(true, updateCoupon, updateMgtCoupon, initCouponRuleList);
// break;
// }
//
// return true;
// }
@Override
public List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam) {
......@@ -348,6 +500,7 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
private List<AdamMemberRightsCouponRuleVo> copyFromCandyCouponRule(List<CandyCouponRule> couponRuleList) {
List<AdamMemberRightsCouponRuleVo> memberRightsCouponRuleVoList = new ArrayList<>();
if (!CollectionUtils.isEmpty(couponRuleList)) {
couponRuleList.forEach(r -> {
AdamMemberRightsCouponRuleVo memberRightsCouponRuleVo = AdamMemberRightsCouponRuleVo.getNew();
memberRightsCouponRuleVo.setBusiId(r.getBusiId());
......@@ -356,50 +509,51 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
memberRightsCouponRuleVoList.add(memberRightsCouponRuleVo);
});
return memberRightsCouponRuleVoList;
}
/**
* 同步REDIS:用户端:购买会员详情页:权益列表:权益详情:专享券信息
*
* @param editing true-编辑|false-新增
* @param updateCoupon CandyCoupon
* @param updateMgtCoupon CandyCoupon
* @param initCouponRuleList List<CandyCouponRule>
*/
private void syncRdsForMemberRightsCouponProcessing(boolean editing, CandyCoupon updateCoupon, CandyMgtCoupon updateMgtCoupon, List<CandyCouponRule> initCouponRuleList) {
List<AdamMemberRightsCouponRuleVo> memberRightsCouponRuleVoList = this.copyFromCandyCouponRule(initCouponRuleList);
List<AdamMemberRightsCouponVo> memberRightsCouponVoList =
(List<AdamMemberRightsCouponVo>) redisDataSourceUtil.getRedisAdamUtil().get(AdamRedisConst.INFO_MEMBER_RIGHTS_COUPON.concat(updateMgtCoupon.getMcouponId()));
if (editing) {// 编辑操作
memberRightsCouponVoList.removeIf(r -> r.getCouponId().equals(updateCoupon.getCouponId()));
} else {// 新增操作
if (CollectionUtils.isEmpty(memberRightsCouponVoList)) {
memberRightsCouponVoList = new ArrayList<>();
}
}
if (updateCoupon.getState() == 1) {
Integer eventAmt = updateMgtCoupon.getEventAmt();
for (int i = 0; i < eventAmt; i++) {
AdamMemberRightsCouponVo memberRightsCouponVo = AdamMemberRightsCouponVo.getNew();
memberRightsCouponVo.setMrightsId(updateMgtCoupon.getMcouponId());
memberRightsCouponVo.setCouponId(updateCoupon.getCouponId());
memberRightsCouponVo.setBusiType(updateCoupon.getBusiType());
memberRightsCouponVo.setCouType(updateCoupon.getCouType());
memberRightsCouponVo.setTitle(updateCoupon.getTitle());
memberRightsCouponVo.setLabel(updateCoupon.getLabel());
memberRightsCouponVo.setNotice(updateCoupon.getNotice());
memberRightsCouponVo.setValFace(updateCoupon.getValFace());
memberRightsCouponVo.setValOver(updateCoupon.getValOver());
memberRightsCouponVo.setValMinus(updateCoupon.getValMinus());
memberRightsCouponVo.setUseRules(memberRightsCouponRuleVoList);
memberRightsCouponVoList.add(memberRightsCouponVo);
}
return memberRightsCouponRuleVoList;
}
redisDataSourceUtil.getRedisAdamUtil().set(AdamRedisConst.INFO_MEMBER_RIGHTS_COUPON.concat(updateMgtCoupon.getMcouponId()), memberRightsCouponVoList);
}
// /**
// * 同步REDIS:用户端:购买会员详情页:权益列表:权益详情:专享券信息
// *
// * @param editing true-编辑|false-新增
// * @param updateCoupon CandyCoupon
// * @param updateMgtCoupon updateMgtCoupon
// * @param initCouponRuleList List<CandyCouponRule>
// */
// private void syncRdsForMemberRightsCouponProcessing(boolean editing, CandyCoupon updateCoupon, CandyMgtCoupon updateMgtCoupon, List<CandyCouponRule> initCouponRuleList) {
// List<AdamMemberRightsCouponRuleVo> memberRightsCouponRuleVoList = this.copyFromCandyCouponRule(initCouponRuleList);
//
// List<AdamMemberRightsCouponVo> memberRightsCouponVoList =
// (List<AdamMemberRightsCouponVo>) redisDataSourceUtil.getRedisAdamUtil().get(AdamRedisConst.INFO_MEMBER_RIGHTS_COUPON.concat(updateMgtCoupon.getMcouponId()));
// if (editing) {// 编辑操作
// memberRightsCouponVoList.removeIf(r -> r.getCouponId().equals(updateCoupon.getCouponId()));
// } else {// 新增操作
// if (CollectionUtils.isEmpty(memberRightsCouponVoList)) {
// memberRightsCouponVoList = new ArrayList<>();
// }
// }
//
// if (updateCoupon.getState() == 1) {
// Integer eventAmt = updateMgtCoupon.getEventAmt();
// for (int i = 0; i < eventAmt; i++) {
// AdamMemberRightsCouponVo memberRightsCouponVo = AdamMemberRightsCouponVo.getNew();
// memberRightsCouponVo.setMrightsId(updateMgtCoupon.getMcouponId());
// memberRightsCouponVo.setCouponId(updateCoupon.getCouponId());
// memberRightsCouponVo.setBusiType(updateCoupon.getBusiType());
// memberRightsCouponVo.setCouType(updateCoupon.getCouType());
// memberRightsCouponVo.setTitle(updateCoupon.getTitle());
// memberRightsCouponVo.setLabel(updateCoupon.getLabel());
// memberRightsCouponVo.setNotice(updateCoupon.getNotice());
// memberRightsCouponVo.setValFace(updateCoupon.getValFace());
// memberRightsCouponVo.setValOver(updateCoupon.getValOver());
// memberRightsCouponVo.setValMinus(updateCoupon.getValMinus());
// memberRightsCouponVo.setUseRules(memberRightsCouponRuleVoList);
//
// memberRightsCouponVoList.add(memberRightsCouponVo);
// }
// }
//
// redisDataSourceUtil.getRedisAdamUtil().set(AdamRedisConst.INFO_MEMBER_RIGHTS_COUPON.concat(updateMgtCoupon.getMcouponId()), memberRightsCouponVoList);
// }
}
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