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

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

+会员设置:套餐编辑、权益编辑、会员券编辑、会员码生成|列表|导出;

parent 2207992a
package com.liquidnet.service.adam.dto.param.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@ApiModel(value = "AdamMemberCodeListParam", description = "会员码列表入参")
@Data
public class AdamMemberCodeGenParam implements Serializable {
private static final long serialVersionUID = 7212595876649709617L;
@NotBlank(message = "会员类型ID不能为空")
@ApiModelProperty(required = true, value = "会员类型ID[64]", example = "1")
private String memberId;
@NotBlank(message = "会员价格ID不能为空")
@ApiModelProperty(required = true, value = "会员价格ID[64]", example = "1")
private String memberPriceId;
@NotNull(message = "有效期不能为空")
@ApiModelProperty(required = true, value = "有效期", example = "30")
private Integer validity;
@NotNull(message = "生成数量不能为空")
@Min(1)
@Max(100)
@ApiModelProperty(required = true, value = "生成数量[1-100]", example = "1")
private Integer genNum;
}
package com.liquidnet.service.adam.dto.param.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamMemberCodeListParam", description = "会员码列表入参")
@Data
public class AdamMemberCodeListParam implements Serializable {
private static final long serialVersionUID = -8454342033562304457L;
@ApiModelProperty(required = false, value = "会员类型ID[64]")
private String memberId;
}
package com.liquidnet.service.adam.dto.param.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@ApiModel(value = "AdamMemberPriceBuildParam", description = "编辑价格入参")
@Data
public class AdamMemberPriceBuildParam implements Serializable {
private static final long serialVersionUID = -7331274160877946420L;
@ApiModelProperty(required = true, value = "会员卡ID")
private String memberId;
@ApiModelProperty(required = false, value = "会员价格ID")
private String memberPriceId;
@ApiModelProperty(required = true, value = "原价")
private BigDecimal price;
@ApiModelProperty(required = true, value = "折扣价")
private BigDecimal priceFixed;
@ApiModelProperty(required = true, value = "特价:首次、首年优惠价")
private BigDecimal priceSpecial;
@ApiModelProperty(required = true, value = "有效天数")
private Integer days;
@ApiModelProperty(required = true, value = "双倍积分[1-关闭,2-开启]")
private Integer integralRate;
}
...@@ -12,20 +12,13 @@ import java.util.List; ...@@ -12,20 +12,13 @@ import java.util.List;
@Data @Data
public class AdamMemberRightsBuildParam implements Serializable { public class AdamMemberRightsBuildParam implements Serializable {
private static final long serialVersionUID = -7331274160877946420L; private static final long serialVersionUID = -7331274160877946420L;
@ApiModelProperty(required = true, value = "会员卡ID")
@ApiModelProperty(required = false, value = "会员价格ID") private String memberId;
private String memberPriceId;
@ApiModelProperty(required = true, value = "原价")
private BigDecimal price;
@ApiModelProperty(required = true, value = "折扣价")
private BigDecimal priceFixed;
@ApiModelProperty(required = true, value = "特价:首次、首年优惠价")
private BigDecimal priceSpecial;
@ApiModelProperty(required = true, value = "有效天数")
private Integer days;
@ApiModelProperty(required = false, value = "权益ID[64]") @ApiModelProperty(required = false, value = "权益ID[64]")
private String mrightsId; private String mrightsId;
@ApiModelProperty(required = true, value = "权益状态[]")
private Integer state;
@ApiModelProperty(required = true, value = "权益标题[50]") @ApiModelProperty(required = true, value = "权益标题[50]")
private String title; private String title;
@ApiModelProperty(required = true, value = "权益副标题[200]") @ApiModelProperty(required = true, value = "权益副标题[200]")
......
...@@ -24,26 +24,35 @@ public class AdamMemberCodeVo implements Serializable, Cloneable { ...@@ -24,26 +24,35 @@ public class AdamMemberCodeVo implements Serializable, Cloneable {
private Integer type; private Integer type;
@ApiModelProperty(position = 4, value = "会员编号") @ApiModelProperty(position = 4, value = "会员编号")
private String memberNo; private String memberNo;
@ApiModelProperty(position = 5, value = "状态:0-未使用,1-已使用,2-不可用") @ApiModelProperty(position = 5, value = "状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]")
private Integer state; private Integer state;
@ApiModelProperty(position = 6, value = "购买会员码的订单编号") @ApiModelProperty(position = 6, value = "有效期(单位天)")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private Integer validity;
@ApiModelProperty(position = 7, value = "生效时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime effectAt;
@ApiModelProperty(position = 8, value = "失效时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime expireAt;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime createdAt;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt;
@ApiModelProperty(position = 11, value = "购买会员码的订单编号")
private String buyOrderNo; private String buyOrderNo;
@ApiModelProperty(position = 7, value = "购买会员码的用户id") @ApiModelProperty(position = 12, value = "购买会员码的用户id")
private String buyUid; private String buyUid;
@ApiModelProperty(position = 8, value = "购买时间") @ApiModelProperty(position = 13, value = "购买时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime buyAt; private LocalDateTime buyAt;
@ApiModelProperty(position = 9, value = "使用会员码的订单编号") @ApiModelProperty(position = 14, value = "使用会员码的订单编号")
private String useOrderNo; private String useOrderNo;
@ApiModelProperty(position = 10, value = "使用会员码的用户id") @ApiModelProperty(position = 15, value = "使用会员码的用户id")
private String useUid; private String useUid;
@ApiModelProperty(position = 11, value = "使用时间") @ApiModelProperty(position = 16, value = "使用时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime useAt; private LocalDateTime useAt;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime createdAt;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt;
private static final AdamMemberCodeVo obj = new AdamMemberCodeVo(); private static final AdamMemberCodeVo obj = new AdamMemberCodeVo();
...@@ -63,14 +72,17 @@ public class AdamMemberCodeVo implements Serializable, Cloneable { ...@@ -63,14 +72,17 @@ public class AdamMemberCodeVo implements Serializable, Cloneable {
this.setType(source.getType()); this.setType(source.getType());
this.setMemberNo(source.getMemberNo()); this.setMemberNo(source.getMemberNo());
this.setState(source.getState()); this.setState(source.getState());
this.setValidity(source.getValidity());
this.setEffectAt(source.getEffectAt());
this.setExpireAt(source.getExpireAt());
this.setCreatedAt(source.getCreatedAt());
this.setUpdatedAt(source.getUpdatedAt());
this.setBuyOrderNo(source.getBuyOrderNo()); this.setBuyOrderNo(source.getBuyOrderNo());
this.setBuyUid(source.getBuyUid()); this.setBuyUid(source.getBuyUid());
this.setBuyAt(source.getBuyAt()); this.setBuyAt(source.getBuyAt());
this.setUseOrderNo(source.getUseOrderNo()); this.setUseOrderNo(source.getUseOrderNo());
this.setUseUid(source.getUseUid()); this.setUseUid(source.getUseUid());
this.setUseAt(source.getUseAt()); this.setUseAt(source.getUseAt());
this.setCreatedAt(source.getCreatedAt());
this.setUpdatedAt(source.getUpdatedAt());
return this; return this;
} }
} }
...@@ -12,7 +12,14 @@ import java.util.List; ...@@ -12,7 +12,14 @@ import java.util.List;
@ApiModel(value = "CandyMgtCouponBuildParam", description = "新建券入参") @ApiModel(value = "CandyMgtCouponBuildParam", description = "新建券入参")
@Data @Data
public class CandyMemberCouponBuildParam { public class CandyMemberCouponBuildParam {
//private String couponId; @ApiModelProperty(required = true, value = "会员类型ID[64]")
private String memberId;
@ApiModelProperty(required = true, value = "权益ID[64]")
private String mrightsId;
@NotBlank(message = "券ID不能为空")
@ApiModelProperty(required = false, value = "券ID", example = "券ID")
private String couponId;
//private Integer state; //private Integer state;
@NotBlank(message = "券标题不能为空") @NotBlank(message = "券标题不能为空")
@ApiModelProperty(required = true, value = "券标题", example = "券标题") @ApiModelProperty(required = true, value = "券标题", example = "券标题")
...@@ -72,7 +79,7 @@ public class CandyMemberCouponBuildParam { ...@@ -72,7 +79,7 @@ public class CandyMemberCouponBuildParam {
@ApiModelProperty(required = true, value = "发放量", example = "1") @ApiModelProperty(required = true, value = "发放量", example = "1")
private Integer eventAmt; private Integer eventAmt;
// @NotNull(message = "券发放类型不能为空") // @NotNull(message = "券发放类型不能为空")
// @ApiModelProperty(required = true, value = "发放类型[1-会员|2-手机号|10-全体用户]", allowableValues = "1,2,10") // @ApiModelProperty(required = true, value = "发放类型[1-会员|2-手机号|3-UID|10-全体用户]", allowableValues = "1,2,10")
// private Integer eventType; // private Integer eventType;
// @ApiModelProperty(required = false, value = "`发放类型`为2-手机号时发放手机号以,分隔", example = "17701223310,17701223310") // @ApiModelProperty(required = false, value = "`发放类型`为2-手机号时发放手机号以,分隔", example = "17701223310,17701223310")
// private String eventLimit; // private String eventLimit;
......
...@@ -24,66 +24,66 @@ import javax.validation.constraints.NotBlank; ...@@ -24,66 +24,66 @@ import javax.validation.constraints.NotBlank;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Api(tags = "会员价格") //@Api(tags = "会员价格")
@Slf4j //@Slf4j
@Validated //@Validated
@RestController //@RestController
@RequestMapping("adam/mprice") //@RequestMapping("adam/mprice")
public class AdamMemberPriceAdminController { public class AdamMemberPriceAdminController {
@Autowired // @Autowired
IAdamMemberPriceAdminService adamMemberPriceService; // IAdamMemberPriceAdminService adamMemberPriceService;
//
@Log(title = "会员价格", businessType = BusinessType.LIST) // @Log(title = "会员价格", businessType = BusinessType.LIST)
@RequiresPermissions("adam:mprice:list") // @RequiresPermissions("adam:mprice:list")
@ApiOperation(value = "会员价格列表") // @ApiOperation(value = "会员价格列表")
@ApiImplicitParams({ // @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"), // @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"),
}) // })
@GetMapping("list") // @GetMapping("list")
public ResponseDto<List<AdamMemberPriceVo>> list(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId) { // public ResponseDto<List<AdamMemberPriceVo>> list(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId) {
List<AdamMemberPrice> list = adamMemberPriceService.list( // List<AdamMemberPrice> list = adamMemberPriceService.list(
Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberId, memberId) // Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberId, memberId)
); // );
List<AdamMemberPriceVo> vos = new ArrayList<>(); // List<AdamMemberPriceVo> vos = new ArrayList<>();
list.forEach(r -> { // list.forEach(r -> {
vos.add(AdamMemberPriceVo.getNew().copy(r)); // vos.add(AdamMemberPriceVo.getNew().copy(r));
}); // });
return ResponseDto.success(vos); // return ResponseDto.success(vos);
} // }
//
@Log(title = "会员价格", businessType = BusinessType.DETAIL) // @Log(title = "会员价格", businessType = BusinessType.DETAIL)
@RequiresPermissions("adam:mprice:info") // @RequiresPermissions("adam:mprice:info")
@ApiOperation(value = "会员价格详情") // @ApiOperation(value = "会员价格详情")
@ApiImplicitParams({ // @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"), // @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberPriceId", value = "会员卡价格ID[64]"), // @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberPriceId", value = "会员卡价格ID[64]"),
}) // })
@GetMapping("info") // @GetMapping("info")
public ResponseDto<AdamMemberPriceVo> query(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId, // public ResponseDto<AdamMemberPriceVo> query(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId,
@NotBlank(message = "会员价格ID不能为空") @RequestParam String memberPriceId) { // @NotBlank(message = "会员价格ID不能为空") @RequestParam String memberPriceId) {
AdamMemberPrice one = adamMemberPriceService.getOne( // AdamMemberPrice one = adamMemberPriceService.getOne(
Wrappers.lambdaQuery(AdamMemberPrice.class) // Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberPriceId, memberPriceId) // .eq(AdamMemberPrice::getMemberPriceId, memberPriceId)
.eq(AdamMemberPrice::getMemberId, memberId) // .eq(AdamMemberPrice::getMemberId, memberId)
); // );
return ResponseDto.success(AdamMemberPriceVo.getNew().copy(one)); // return ResponseDto.success(AdamMemberPriceVo.getNew().copy(one));
} // }
//
@Log(title = "会员价格", businessType = BusinessType.INSERT) // @Log(title = "会员价格", businessType = BusinessType.INSERT)
@RequiresPermissions("adam:mprice:add") // @RequiresPermissions("adam:mprice:add")
@ApiOperation(value = "添加会员价格") // @ApiOperation(value = "添加会员价格")
@PostMapping("add") // @PostMapping("add")
public ResponseDto<AdamMemberPriceVo> add(@Valid @RequestBody AdamMemberPriceParam param) { // public ResponseDto<AdamMemberPriceVo> add(@Valid @RequestBody AdamMemberPriceParam param) {
AdamMemberPrice entity = new AdamMemberPrice(); // AdamMemberPrice entity = new AdamMemberPrice();
BeanUtils.copyProperties(param, entity); // BeanUtils.copyProperties(param, entity);
return ResponseDto.success(adamMemberPriceService.add(entity)); // return ResponseDto.success(adamMemberPriceService.add(entity));
} // }
//
@Log(title = "会员价格", businessType = BusinessType.UPDATE) // @Log(title = "会员价格", businessType = BusinessType.UPDATE)
@RequiresPermissions("adam:mprice:edit") // @RequiresPermissions("adam:mprice:edit")
@ApiOperation(value = "编辑会员价格") // @ApiOperation(value = "编辑会员价格")
@PostMapping("edit") // @PostMapping("edit")
public ResponseDto<AdamMemberPriceVo> edit(@Valid @RequestBody AdamMemberPriceParam param) { // public ResponseDto<AdamMemberPriceVo> edit(@Valid @RequestBody AdamMemberPriceParam param) {
return adamMemberPriceService.edit(param) ? ResponseDto.success() : ResponseDto.failure("无效编辑"); // return adamMemberPriceService.edit(param) ? ResponseDto.success() : ResponseDto.failure("无效编辑");
} // }
} }
...@@ -41,8 +41,7 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -41,8 +41,7 @@ public class CandyCouponCodeAdminController extends BaseController {
@RequiresPermissions("candy:coupon:code:view") @RequiresPermissions("candy:coupon:code:view")
@GetMapping() @GetMapping()
public String role(@RequestParam String couponId, ModelMap mmap) public String view(@RequestParam String couponId, ModelMap mmap) {
{
mmap.put("couponId", couponId); mmap.put("couponId", couponId);
return prefix + "/code"; return prefix + "/code";
} }
...@@ -50,10 +49,15 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -50,10 +49,15 @@ public class CandyCouponCodeAdminController extends BaseController {
@RequiresPermissions("candy:coupon:code:list") @RequiresPermissions("candy:coupon:code:list")
@PostMapping("list") @PostMapping("list")
@ResponseBody @ResponseBody
public TableDataInfo list(CandyCouponCodeListParam listParam) public TableDataInfo list(CandyCouponCodeListParam listParam) {
{ startPage();
LambdaQueryWrapper<CandyCouponCode> lambdaQuery = Wrappers.lambdaQuery(CandyCouponCode.class).orderByAsc(CandyCouponCode::getCcode); return getDataTable(listQuery(listParam));
}
private List<CandyCouponCode> listQuery(CandyCouponCodeListParam listParam) {
LambdaQueryWrapper<CandyCouponCode> lambdaQuery = Wrappers.lambdaQuery(CandyCouponCode.class);
lambdaQuery.eq(CandyCouponCode::getCouponId, listParam.getCouponId()) lambdaQuery.eq(CandyCouponCode::getCouponId, listParam.getCouponId())
.ne(CandyCouponCode::getState, 2)
.select( .select(
CandyCouponCode::getCcode, CandyCouponCode::getCcode,
CandyCouponCode::getCouponId, CandyCouponCode::getCouponId,
...@@ -63,28 +67,14 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -63,28 +67,14 @@ public class CandyCouponCodeAdminController extends BaseController {
if (null != listParam.getState()) { if (null != listParam.getState()) {
lambdaQuery.eq(CandyCouponCode::getState, listParam.getState()); lambdaQuery.eq(CandyCouponCode::getState, listParam.getState());
} }
startPage(); return candyCouponCodeAdminService.list(lambdaQuery);
List<CandyCouponCode> list = candyCouponCodeAdminService.list(lambdaQuery);
return getDataTable(list);
} }
@RequiresPermissions("candy:coupon:code:export") @RequiresPermissions("candy:coupon:code:export")
@PostMapping("export") @PostMapping("export")
@ResponseBody @ResponseBody
public AjaxResult export(CandyCouponCodeListParam listParam) public AjaxResult export(CandyCouponCodeListParam listParam) {
{ List<CandyCouponCode> list = listQuery(listParam);
LambdaQueryWrapper<CandyCouponCode> lambdaQuery = Wrappers.lambdaQuery(CandyCouponCode.class);
lambdaQuery.eq(CandyCouponCode::getCouponId, listParam.getCouponId())
.select(
CandyCouponCode::getCcode,
CandyCouponCode::getCouponId,
CandyCouponCode::getRedeemMobile,
CandyCouponCode::getState
);
if (null != listParam.getState()) {
lambdaQuery.eq(CandyCouponCode::getState, listParam.getState());
}
List<CandyCouponCode> list = candyCouponCodeAdminService.list(lambdaQuery);
ExcelUtil<CandyCouponCodeExcelDto> excelUtil = new ExcelUtil<>(CandyCouponCodeExcelDto.class); ExcelUtil<CandyCouponCodeExcelDto> excelUtil = new ExcelUtil<>(CandyCouponCodeExcelDto.class);
List<CandyCouponCodeExcelDto> excelList = new ArrayList<>(); List<CandyCouponCodeExcelDto> excelList = new ArrayList<>();
...@@ -97,8 +87,7 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -97,8 +87,7 @@ public class CandyCouponCodeAdminController extends BaseController {
@RequiresPermissions("candy:coupon:code:invalid") @RequiresPermissions("candy:coupon:code:invalid")
@PostMapping("invalid") @PostMapping("invalid")
@ResponseBody @ResponseBody
public AjaxResult invalid(CandyCouponCodeOptParam optParam) public AjaxResult invalid(CandyCouponCodeOptParam optParam) {
{
logger.debug("optParam:{}", JsonUtils.toJson(optParam)); logger.debug("optParam:{}", JsonUtils.toJson(optParam));
optParam.getCcodes().forEach(r -> { optParam.getCcodes().forEach(r -> {
...@@ -122,8 +111,7 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -122,8 +111,7 @@ public class CandyCouponCodeAdminController extends BaseController {
@RequiresPermissions("candy:coupon:code:recover") @RequiresPermissions("candy:coupon:code:recover")
@PostMapping("recover") @PostMapping("recover")
@ResponseBody @ResponseBody
public AjaxResult recover(CandyCouponCodeOptParam optParam) public AjaxResult recover(CandyCouponCodeOptParam optParam) {
{
logger.debug("optParam:{}", JsonUtils.toJson(optParam)); logger.debug("optParam:{}", JsonUtils.toJson(optParam));
optParam.getCcodes().forEach(r -> { optParam.getCcodes().forEach(r -> {
......
...@@ -36,6 +36,9 @@ import java.time.LocalTime; ...@@ -36,6 +36,9 @@ import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Api(tags = "券发放管理") @Api(tags = "券发放管理")
@Controller @Controller
...@@ -104,13 +107,18 @@ public class CandyMgtCoupon1AdminController extends BaseController { ...@@ -104,13 +107,18 @@ public class CandyMgtCoupon1AdminController extends BaseController {
effectAt = eventAt.with(LocalTime.MIN); effectAt = eventAt.with(LocalTime.MIN);
expireAt = eventAt.plusDays(validity).withHour(23).withMinute(59).withSecond(59); expireAt = eventAt.plusDays(validity).withHour(23).withMinute(59).withSecond(59);
String eventLimit = null, operator = ShiroUtils.getLoginName(); StringBuilder eventLimit = new StringBuilder();
String operator = ShiroUtils.getLoginName();
if (buildParam.getEventType() == 2) {// 指定用户手机号 if (buildParam.getEventType() == 2) {// 指定用户手机号
eventLimit = buildParam.getEventLimit().trim(); String eventLimitStr = buildParam.getEventLimit().trim();
// TODO: 2021/8/20 正则校验手机号字符串 // TODO: 2021/8/20 正则校验手机号字符串
if (StringUtils.isEmpty(eventLimit)) { if (StringUtils.isEmpty(eventLimitStr)) {
return this.error(AjaxResult.Type.WARN, "请指定手机号"); return this.error(AjaxResult.Type.WARN, "请指定手机号");
} }
Set<String> eventLimitSet = Stream.of(eventLimitStr.split(",")).collect(Collectors.toSet());
for (String l : eventLimitSet) {
eventLimit.append(l).append(",");
}
} }
CandyCoupon initCoupon = new CandyCoupon(); CandyCoupon initCoupon = new CandyCoupon();
...@@ -159,7 +167,7 @@ public class CandyMgtCoupon1AdminController extends BaseController { ...@@ -159,7 +167,7 @@ public class CandyMgtCoupon1AdminController extends BaseController {
initMgtCoupon.setState(0); initMgtCoupon.setState(0);
initMgtCoupon.setEventAmt(buildParam.getEventAmt()); initMgtCoupon.setEventAmt(buildParam.getEventAmt());
initMgtCoupon.setEventType(buildParam.getEventType()); initMgtCoupon.setEventType(buildParam.getEventType());
initMgtCoupon.setEventLimit(eventLimit); initMgtCoupon.setEventLimit(eventLimit.toString());
initMgtCoupon.setEventAt(eventAt); initMgtCoupon.setEventAt(eventAt);
initMgtCoupon.setOperator(operator); initMgtCoupon.setOperator(operator);
initMgtCoupon.setCreatedAt(nowTime); initMgtCoupon.setCreatedAt(nowTime);
......
package com.liquidnet.client.admin.zhengzai.adam.dto;
import com.liquidnet.client.admin.common.annotation.Excel;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.entity.AdamMemberCode;
import lombok.Data;
import java.io.Serializable;
@Data
public class AdamMemberCodeExcelDto implements Serializable, Cloneable {
private static final long serialVersionUID = -6775626480969657499L;
@Excel(name = "会员码")
private String code;
@Excel(name = "状态")
private Integer state;
@Excel(name = "用户UID")
private String useUid;
@Excel(name = "生效时间", width = 30)
private String effectAt;
@Excel(name = "过期时间", width = 30)
private String expireAt;
@Excel(name = "批次号")
private String memberId;
private static final AdamMemberCodeExcelDto obj = new AdamMemberCodeExcelDto();
public static AdamMemberCodeExcelDto getNew() {
try {
return (AdamMemberCodeExcelDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberCodeExcelDto();
}
}
public AdamMemberCodeExcelDto copy(AdamMemberCode source) {
if (null == source) return this;
this.setCode(source.getCode());
this.setState(source.getState());
this.setUseUid(source.getUseUid());
this.setEffectAt(DateUtil.Formatter.yyyyMMddHHmmss.format(source.getEffectAt()));
this.setExpireAt(DateUtil.Formatter.yyyyMMddHHmmss.format(source.getExpireAt()));
this.setMemberId(source.getMemberId());
return this;
}
}
package com.liquidnet.client.admin.zhengzai.adam.service; package com.liquidnet.client.admin.zhengzai.adam.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam; import com.liquidnet.service.adam.dto.param.admin.AdamMemberCodeGenParam;
import com.liquidnet.service.adam.entity.AdamMemberCode; import com.liquidnet.service.adam.entity.AdamMemberCode;
/** /**
...@@ -13,5 +13,6 @@ public interface IAdamMemberCodeAdminService extends IService<AdamMemberCode> { ...@@ -13,5 +13,6 @@ public interface IAdamMemberCodeAdminService extends IService<AdamMemberCode> {
* 创建礼包码 * 创建礼包码
* @param param * @param param
*/ */
String createGiftCode(AdamMemberCodeParam param); // String createGiftCode(AdamMemberCodeParam param);
boolean createGiftCode(AdamMemberCodeGenParam param);
} }
package com.liquidnet.client.admin.zhengzai.adam.service; package com.liquidnet.client.admin.zhengzai.adam.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamMemberPriceParam; import com.liquidnet.service.adam.dto.param.admin.AdamMemberPriceBuildParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo; import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.entity.AdamMemberPrice; import com.liquidnet.service.adam.entity.AdamMemberPrice;
public interface IAdamMemberPriceAdminService extends IService<AdamMemberPrice> { public interface IAdamMemberPriceAdminService extends IService<AdamMemberPrice> {
AdamMemberPriceVo add(AdamMemberPrice info);
boolean edit(AdamMemberPriceParam param); boolean edit(AdamMemberPriceBuildParam param);
} }
package com.liquidnet.client.admin.zhengzai.adam.service; package com.liquidnet.client.admin.zhengzai.adam.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamMemberPriceParam; import com.liquidnet.service.adam.dto.param.admin.AdamMemberRightsBuildParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.entity.AdamMemberRights; import com.liquidnet.service.adam.entity.AdamMemberRights;
public interface IAdamMemberRightsAdminService extends IService<AdamMemberRights> { public interface IAdamMemberRightsAdminService extends IService<AdamMemberRights> {
boolean edit(AdamMemberRightsBuildParam param);
} }
package com.liquidnet.client.admin.zhengzai.adam.service.impl; package com.liquidnet.client.admin.zhengzai.adam.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberCodeAdminService; import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberCodeAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.exception.LiquidnetServiceException; import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam; import com.liquidnet.service.adam.dto.param.admin.AdamMemberCodeGenParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo; import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo;
import com.liquidnet.service.adam.entity.AdamMemberCode; import com.liquidnet.service.adam.entity.AdamMemberCode;
import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper; import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper;
...@@ -13,9 +15,10 @@ import com.liquidnet.service.adam.util.MemberUtil; ...@@ -13,9 +15,10 @@ import com.liquidnet.service.adam.util.MemberUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@Slf4j @Slf4j
...@@ -23,77 +26,89 @@ import java.util.regex.Pattern; ...@@ -23,77 +26,89 @@ import java.util.regex.Pattern;
public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMapper, AdamMemberCode> implements IAdamMemberCodeAdminService { public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMapper, AdamMemberCode> implements IAdamMemberCodeAdminService {
@Autowired @Autowired
AdamMemberCodeMapper memberCodeMapper; AdamMemberCodeMapper memberCodeMapper;
// @Autowired
// MongoTemplate mongoTemplate;
@Autowired @Autowired
RedisUtil redisUtil; RedisUtil redisUtil;
@Override @Override
public String createGiftCode(AdamMemberCodeParam param) { public boolean createGiftCode(AdamMemberCodeGenParam param) {
String mCode, memberNo; List<AdamMemberCode> memberCodeList = new ArrayList<>();
boolean exists; ArrayList<String> codeList = CollectionUtil.arrayListString();
do { Integer genNum = param.getGenNum();
mCode = MemberUtil.freeCode(); LocalDateTime now = LocalDateTime.now();
// exists = mongoTemplate.exists( for (int i = 0; i < genNum; i++) {
// Query.query(Criteria.where("code").is(mCode)), AdamMemberCodeVo.class.getSimpleName() String mCode;
// ); boolean exists;
exists = redisUtil.hasKey(mCode); do {
} while (exists); mCode = MemberUtil.freeCode();
String key = AdamRedisConst.INFO_MEMBER_CODE.concat(mCode);
// 需要主动生成会员编号 exists = redisUtil.hasKey(key);
memberNo = getNextMemberNo(param.getMemberId()); } while (exists);
if (StringUtils.isEmpty(memberNo)) return ""; AdamMemberCode initMemberCode = new AdamMemberCode();
initMemberCode.setCode(mCode);
AdamMemberCode initMemberCode = new AdamMemberCode(); initMemberCode.setType(1);
initMemberCode.setCode(mCode); initMemberCode.setMemberId(param.getMemberId());
initMemberCode.setType(param.getType()); initMemberCode.setMemberPriceId(param.getMemberPriceId());
initMemberCode.setMemberId(param.getMemberId()); // 需要主动生成会员编号
initMemberCode.setMemberPriceId(param.getMemberPriceId()); //initMemberCode.setMemberNo(getNextMemberNo(param.getMemberId()));
initMemberCode.setMemberNo(memberNo); initMemberCode.setState(0);// 状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]
initMemberCode.setState(0);// 0-未使用,1-已使用,2-不可用 initMemberCode.setValidity(param.getValidity());
initMemberCode.setCreatedAt(LocalDateTime.now()); initMemberCode.setEffectAt(now);
initMemberCode.setExpireAt(now.plusDays(param.getValidity()).withHour(23).withMinute(59).withSecond(59));
memberCodeMapper.insert(initMemberCode); initMemberCode.setCreatedAt(now);
AdamMemberCodeVo vo = AdamMemberCodeVo.getNew().copy(initMemberCode); memberCodeList.add(initMemberCode);
// mongoTemplate.insert(vo, AdamMemberCodeVo.class.getSimpleName()); codeList.add(mCode);
setMemberCodeVoByCode(mCode, vo); //redisUtil.set(AdamRedisConst.INFO_MEMBER_CODE.concat(mCode), AdamMemberCodeVo.getNew().copy(initMemberCode));
}
return initMemberCode.getCode(); if (this.saveBatch(memberCodeList, memberCodeList.size())) {
List<AdamMemberCode> list = this.list(
Wrappers.lambdaQuery(AdamMemberCode.class).in(AdamMemberCode::getCode, codeList)
.eq(AdamMemberCode::getState, 0).eq(AdamMemberCode::getCreatedAt, now)
);
list.forEach(r -> {
r.setMemberNo(getNextMemberNo(param.getMemberId()));
redisUtil.set(AdamRedisConst.INFO_MEMBER_CODE.concat(r.getCode()), AdamMemberCodeVo.getNew().copy(r));
});
this.updateBatchById(list, list.size());
return true;
}
return false;
} }
public String getNextMemberNo(String memberId) { public String getNextMemberNo(String memberId) {
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
int memberMaxNo = getMaxMemberNo(); int memberMaxNo = this.getMaxMemberNo();
if (-1 == memberMaxNo) { if (-1 == memberMaxNo) {
// TODO: 2021/7/29 降级DB // TODO: 2021/7/29 降级DB
throw new LiquidnetServiceException(); throw new LiquidnetServiceException();
// if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_NO, 1, 3)) { // if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_NO, 1, 3)) {
// memberMaxNo = getMaxMemberNo(); // memberMaxNo = adamRdmService.getMaxMemberNo();
// if (-1 == memberMaxNo) { // if (-1 == memberMaxNo) {
// Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1); //// Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1);
// ////
// AdamUserMemberVo latestMaxMemberNoVo = mongoTemplate.findOne(query, AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName()); //// AdamUserMemberVo latestMaxMemberNoVo = mongoTemplate.findOne(query, AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName());
// ////
// if (null == latestMaxMemberNoVo) { //// if (null == latestMaxMemberNoVo) {
// AdamMemberVo memberVo = getMemberVoByMemberId(memberId); // AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(memberId);
// //
// setMaxMemberNo(memberVo.getStartNo()); // adamRdmService.setMaxMemberNo(memberVo.getStartNo());
// } else { //// } else {
// setMaxMemberNo(Integer.parseInt(latestMaxMemberNoVo.getMemberNo())); //// adamRdmService.setMaxMemberNo(Integer.parseInt(latestMaxMemberNoVo.getMemberNo()));
// } //// }
// } // }
// RedisLockUtil.unlock(LOCK_KEY_UMEMBER_NO); // RedisLockUtil.unlock(LOCK_KEY_UMEMBER_NO);
// } else { // } else {
// return null; // return null;
// } // }
} }
String nextMemberNoStr = String.valueOf(incrMemberNo()); String nextMemberNoStr = String.valueOf(this.incrMemberNo());
if (Pattern.matches("([\\d])\\1{" + (nextMemberNoStr.length() - 1) + "}", nextMemberNoStr)) { while (Pattern.matches("([\\d])\\1{" + (nextMemberNoStr.length() - 1) + "}", nextMemberNoStr)) {
// 不能是完全相同的数字 // 不能是完全相同的数字
nextMemberNoStr = String.valueOf(incrMemberNo()); nextMemberNoStr = String.valueOf(this.incrMemberNo());
} }
log.debug("#MNO耗时:{}ms", System.currentTimeMillis() - s); log.debug("#MNO耗时:{}ms", System.currentTimeMillis() - s);
return nextMemberNoStr; return nextMemberNoStr;
...@@ -104,23 +119,6 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa ...@@ -104,23 +119,6 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
return null == o ? -1 : (int) o; return null == o ? -1 : (int) o;
} }
// public AdamMemberVo getMemberVoByMemberId(String memberId) {
// String key = AdamRedisConst.INFO_MEMBER_CATEGORY.concat(memberId);
// long s = System.currentTimeMillis();
// AdamMemberVo vo = (AdamMemberVo) redisUtil.get(key);
// if (null == vo) {
// s = System.currentTimeMillis();
// vo = mongoTemplate.findOne(
// Query.query(Criteria.where("memberId").is(memberId).and("state").is(1)),
// AdamMemberVo.class, AdamMemberVo.class.getSimpleName()
// );
// log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
// if (null != vo) redisUtil.set(key, vo);
// }
// log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
// return vo;
// }
public boolean setMaxMemberNo(int val) { public boolean setMaxMemberNo(int val) {
return redisUtil.set(AdamRedisConst.INCR_MEMBER_NO, val); return redisUtil.set(AdamRedisConst.INCR_MEMBER_NO, val);
} }
...@@ -128,8 +126,4 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa ...@@ -128,8 +126,4 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
public int incrMemberNo() { public int incrMemberNo() {
return (int) redisUtil.incr(AdamRedisConst.INCR_MEMBER_NO, 1); return (int) redisUtil.incr(AdamRedisConst.INCR_MEMBER_NO, 1);
} }
public boolean setMemberCodeVoByCode(String memberCode, AdamMemberCodeVo vo) {
return redisUtil.set(AdamRedisConst.INFO_MEMBER_CODE.concat(memberCode), vo);
}
} }
...@@ -5,20 +5,18 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; ...@@ -5,20 +5,18 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberPriceAdminService; import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberPriceAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamMemberPriceParam; import com.liquidnet.service.adam.dto.param.admin.AdamMemberPriceBuildParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo; import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.adam.entity.AdamMemberPrice; import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.mapper.AdamMemberMapper;
import com.liquidnet.service.adam.mapper.AdamMemberPriceMapper; import com.liquidnet.service.adam.mapper.AdamMemberPriceMapper;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -28,66 +26,78 @@ import java.util.List; ...@@ -28,66 +26,78 @@ import java.util.List;
@Service @Service
public class AdamMemberPriceAdminServiceImpl extends ServiceImpl<AdamMemberPriceMapper, AdamMemberPrice> implements IAdamMemberPriceAdminService { public class AdamMemberPriceAdminServiceImpl extends ServiceImpl<AdamMemberPriceMapper, AdamMemberPrice> implements IAdamMemberPriceAdminService {
@Autowired @Autowired
AdamMemberPriceMapper adamMemberPriceMapper; private AdamMemberPriceMapper adamMemberPriceMapper;
@Autowired @Autowired
MongoTemplate mongoTemplate; private AdamMemberMapper adamMemberMapper;
@Autowired @Autowired
RedisUtil redisUtil; private RedisUtil redisUtil;
// public AdamMemberPriceVo add(AdamMemberPrice info) {
// List<AdamMemberPrice> existList = adamMemberPriceMapper.selectList(
// Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberId, info.getMemberId()));
// info.setMemberPriceId(CollectionUtils.isEmpty(existList) ? "101" : IDGenerator.nextSnowId().toString());
// info.setCreatedAt(LocalDateTime.now());
//
// adamMemberPriceMapper.insert(info);
//
// AdamMemberPriceVo vo = AdamMemberPriceVo.getNew().copy(info);
//
// redisUtil.set(AdamRedisConst.INFO_MEMBER_PRICE.concat(vo.getMemberPriceId()), vo);
//
// return vo;
// }
@Override @Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Transactional
public AdamMemberPriceVo add(AdamMemberPrice info) { public boolean edit(AdamMemberPriceBuildParam param) {
List<AdamMemberPrice> existList = adamMemberPriceMapper.selectList( String memberId = param.getMemberId(), memberPriceId = param.getMemberPriceId();
Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberId, info.getMemberId()));
info.setMemberPriceId(CollectionUtils.isEmpty(existList) ? "101" : IDGenerator.nextSnowId().toString());
info.setCreatedAt(LocalDateTime.now());
adamMemberPriceMapper.insert(info); AdamMember updateInfo = new AdamMember();
updateInfo.setIntegralRate(param.getIntegralRate());
if (adamMemberMapper.update(updateInfo, Wrappers.lambdaUpdate(AdamMember.class)
.eq(AdamMember::getState, 1)
.eq(AdamMember::getMemberId, param.getMemberId())) > 0) {
LambdaQueryWrapper<AdamMemberPrice> queryWrapper = Wrappers.lambdaQuery(AdamMemberPrice.class)
// .eq(AdamMemberPrice::getMemberPriceId, memberPriceId)
.eq(AdamMemberPrice::getMemberId, memberId)
.eq(AdamMemberPrice::getState, 1);
List<AdamMemberPrice> memberPriceList = adamMemberPriceMapper.selectList(queryWrapper);
LocalDateTime nowTime = LocalDateTime.now();
boolean saveOrUpdateRst;
AdamMemberPrice saveOrUpdateInfo;
if (CollectionUtils.isEmpty(memberPriceList)) {
saveOrUpdateInfo = new AdamMemberPrice();
saveOrUpdateInfo.setMemberPriceId(memberId + "01");
saveOrUpdateInfo.setMemberId(memberId);
saveOrUpdateInfo.setState(1);
//saveOrUpdateInfo.setName();
saveOrUpdateInfo.setPrice(param.getPrice());
saveOrUpdateInfo.setPriceFixed(param.getPriceFixed());
saveOrUpdateInfo.setPriceSpecial(param.getPriceSpecial());
saveOrUpdateInfo.setDays(param.getDays());
//saveOrUpdateInfo.setDetail();
saveOrUpdateInfo.setCreatedAt(nowTime);
AdamMemberPriceVo vo = AdamMemberPriceVo.getNew().copy(info); saveOrUpdateRst = adamMemberPriceMapper.insert(saveOrUpdateInfo) > 0;
} else {
saveOrUpdateInfo = new AdamMemberPrice();
saveOrUpdateInfo.setUpdatedAt(nowTime);
mongoTemplate.insert(vo, AdamMemberPriceVo.class.getSimpleName()); saveOrUpdateInfo.setPrice(param.getPrice());
saveOrUpdateInfo.setPriceFixed(param.getPriceFixed());
saveOrUpdateInfo.setPriceSpecial(param.getPriceSpecial());
saveOrUpdateInfo.setDays(param.getDays());
return vo; saveOrUpdateRst = adamMemberPriceMapper.update(saveOrUpdateInfo, queryWrapper) > 0;
}
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public boolean edit(AdamMemberPriceParam param) {
LocalDateTime now = LocalDateTime.now();
AdamMemberPrice updateInfo = new AdamMemberPrice(); saveOrUpdateInfo = adamMemberPriceMapper.selectList(queryWrapper).get(0);
updateInfo.setState(param.getState()); }
updateInfo.setName(param.getName()); if (saveOrUpdateRst) {
updateInfo.setPrice(param.getPrice()); AdamMemberPriceVo vo = AdamMemberPriceVo.getNew().copy(saveOrUpdateInfo);
updateInfo.setPriceFixed(param.getPriceFixed()); redisUtil.set(AdamRedisConst.INFO_MEMBER_PRICE.concat(vo.getMemberPriceId()), vo);
updateInfo.setDays(param.getDays());
updateInfo.setDetail(param.getDetail());
updateInfo.setUpdatedAt(now);
String memberId = param.getMemberId(), memberPriceId = param.getMemberPriceId();
LambdaQueryWrapper<AdamMemberPrice> queryWrapper = Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberPriceId, memberPriceId)
.eq(AdamMemberPrice::getMemberId, memberId);
if (adamMemberPriceMapper.update(updateInfo, queryWrapper) > 0) {
Update updateDoc = Update.update("state", updateInfo.getState())
.set("name", updateInfo.getName())
.set("price", updateInfo.getPrice())
.set("priceFixed", updateInfo.getPriceFixed())
.set("days", updateInfo.getDays())
.set("detail", updateInfo.getDetail())
.set("updatedAt", now);
UpdateResult updateResult = mongoTemplate.updateMulti(
Query.query(Criteria.where("memberPriceId").is(memberPriceId)),
updateDoc, AdamMemberPriceVo.class.getSimpleName()
);
// Document.parse(JsonUtils.toJson(updateInfo)).replace("updatedAt", now)
if (updateResult.getModifiedCount() > 0) {
redisUtil.del(AdamRedisConst.INFO_MEMBER_PRICE.concat(memberPriceId));
return true; return true;
} }
return false; throw new LiquidnetServiceException("-1", "会员价格编辑失败");
} }
return false; return false;
} }
......
package com.liquidnet.client.admin.zhengzai.adam.service.impl; package com.liquidnet.client.admin.zhengzai.adam.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService; import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.adam.dto.param.admin.AdamMemberRightsBuildParam;
import com.liquidnet.service.adam.entity.AdamMemberRights; import com.liquidnet.service.adam.entity.AdamMemberRights;
import com.liquidnet.service.adam.mapper.AdamMemberRightsMapper; import com.liquidnet.service.adam.mapper.AdamMemberRightsMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRightsMapper, AdamMemberRights> implements IAdamMemberRightsAdminService { public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRightsMapper, AdamMemberRights> implements IAdamMemberRightsAdminService {
@Autowired
private AdamMemberRightsMapper adamMemberRightsMapper;
@Override
public boolean edit(AdamMemberRightsBuildParam param) {
String mrightsId = param.getMrightsId();
boolean saveOrUpadateRst;
AdamMemberRights saveOrUpdateInfo = new AdamMemberRights();
if (StringUtils.isEmpty(mrightsId)) {
saveOrUpdateInfo.setMrightsId(IDGenerator.nextBilliId());
saveOrUpdateInfo.setMemberId(param.getMemberId());
saveOrUpdateInfo.setState(1);
saveOrUpdateInfo.setSeqNo(param.getSeqNo());
saveOrUpdateInfo.setTitle(param.getTitle());
saveOrUpdateInfo.setSubTitle(param.getSubTitle());
saveOrUpdateInfo.setLabel(param.getLabel());
saveOrUpdateInfo.setCover(param.getCover());
saveOrUpdateInfo.setDetail(param.getDetail());
saveOrUpadateRst = adamMemberRightsMapper.insert(saveOrUpdateInfo) > 0;
} else {
LambdaUpdateWrapper<AdamMemberRights> updateWrapper = Wrappers.lambdaUpdate(AdamMemberRights.class).eq(AdamMemberRights::getState, 1)
.eq(AdamMemberRights::getMemberId, param.getMemberId())
.eq(AdamMemberRights::getMrightsId, param.getMrightsId());
saveOrUpdateInfo.setSeqNo(param.getSeqNo());
saveOrUpdateInfo.setTitle(param.getTitle());
saveOrUpdateInfo.setSubTitle(param.getSubTitle());
saveOrUpdateInfo.setLabel(param.getLabel());
saveOrUpdateInfo.setCover(param.getCover());
saveOrUpdateInfo.setDetail(param.getDetail());
saveOrUpadateRst = adamMemberRightsMapper.update(saveOrUpdateInfo, updateWrapper) > 0;
}
return saveOrUpadateRst;
}
} }
...@@ -11,7 +11,7 @@ public class CandyCouponCodeExcelDto implements Serializable, Cloneable { ...@@ -11,7 +11,7 @@ public class CandyCouponCodeExcelDto implements Serializable, Cloneable {
private static final long serialVersionUID = 2420844668059161869L; private static final long serialVersionUID = 2420844668059161869L;
@Excel(name = "券码") @Excel(name = "券码")
private String ccode; private String ccode;
@Excel(name = "券码") @Excel(name = "用户手机号")
private String redeemMobile; private String redeemMobile;
@Excel(name = "状态") @Excel(name = "状态")
private String state; private String state;
......
...@@ -12,7 +12,9 @@ import java.util.List; ...@@ -12,7 +12,9 @@ import java.util.List;
public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> { public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> {
void saveMgtCouponInfo(CandyCoupon initCoupon, CandyMgtCoupon initMgtCoupon, List<CandyCouponRule> initCouponRuleList); boolean saveMgtCouponInfo(CandyCoupon initCoupon, CandyMgtCoupon initMgtCoupon, List<CandyCouponRule> initCouponRuleList);
boolean updateMgtCouponInfo(CandyCoupon updateCoupon, CandyMgtCoupon updateMgtCoupon, List<CandyCouponRule> initCouponRuleList);
List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam); List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam);
......
package com.liquidnet.client.admin.zhengzai.candy.service.impl; package com.liquidnet.client.admin.zhengzai.candy.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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;
...@@ -31,15 +33,43 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa ...@@ -31,15 +33,43 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
@Override @Override
@Transactional @Transactional
public void saveMgtCouponInfo(CandyCoupon initCoupon, CandyMgtCoupon initMgtCoupon, List<CandyCouponRule> initCouponRuleList) { public boolean saveMgtCouponInfo(CandyCoupon initCoupon, CandyMgtCoupon initMgtCoupon, List<CandyCouponRule> initCouponRuleList) {
int insert = candyCouponMapper.insert(initCoupon); int insertCt = candyCouponMapper.insert(initCoupon);
insert += candyMgtCouponMapper.insert(initMgtCoupon); insertCt += candyMgtCouponMapper.insert(initMgtCoupon);
boolean saveBatch = candyCouponRuleAdminService.saveBatch(initCouponRuleList); boolean saveBatch = candyCouponRuleAdminService.saveBatch(initCouponRuleList);
if (insert < 2 || !saveBatch) { if (insertCt < 2 || !saveBatch) {
throw new LiquidnetServiceException(); throw new LiquidnetServiceException();
} }
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, 10);
int updateCt = candyCouponMapper.update(updateCoupon, couponLambdaUpdateWrapper);
LambdaUpdateWrapper<CandyMgtCoupon> mgtCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyMgtCoupon.class)
.eq(CandyMgtCoupon::getMcouponId, updateMgtCoupon.getMcouponId())
.eq(CandyMgtCoupon::getState, 1);
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 || !candyCouponRuleAdminService.saveBatch(initCouponRuleList)) {
throw new LiquidnetServiceException();
}
return true;
} }
@Override @Override
......
...@@ -9,6 +9,7 @@ public class IDGenerator { ...@@ -9,6 +9,7 @@ public class IDGenerator {
private static final String CROSS_BAR = "-"; private static final String CROSS_BAR = "-";
private static final String EMPTY_STR = ""; private static final String EMPTY_STR = "";
private static final DateTimeFormatter MILLISECOND = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"); private static final DateTimeFormatter MILLISECOND = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
private static final DateTimeFormatter BILLISECOND = DateTimeFormatter.ofPattern("yyDN");
public static String nextSnowId() { public static String nextSnowId() {
return GenSnowFlowerUtil.next(); return GenSnowFlowerUtil.next();
...@@ -22,6 +23,10 @@ public class IDGenerator { ...@@ -22,6 +23,10 @@ public class IDGenerator {
return LocalDateTime.now().format(MILLISECOND); return LocalDateTime.now().format(MILLISECOND);
} }
public static String nextBilliId() {
return LocalDateTime.now().format(BILLISECOND);
}
public static String get32UUID() { public static String get32UUID() {
ThreadLocalRandom random = ThreadLocalRandom.current(); ThreadLocalRandom random = ThreadLocalRandom.current();
return (new UUID(random.nextLong(), random.nextLong())).toString().replace(CROSS_BAR, EMPTY_STR); return (new UUID(random.nextLong(), random.nextLong())).toString().replace(CROSS_BAR, EMPTY_STR);
...@@ -69,6 +74,7 @@ public class IDGenerator { ...@@ -69,6 +74,7 @@ public class IDGenerator {
System.out.println(""+IDGenerator.refundCode()); System.out.println(""+IDGenerator.refundCode());
System.out.println("nextTimeId==="+IDGenerator.nextTimeId()); System.out.println("nextTimeId==="+IDGenerator.nextTimeId());
System.out.println("nextMilliId==="+IDGenerator.nextMilliId()); System.out.println("nextMilliId==="+IDGenerator.nextMilliId());
System.out.println("nextBilliId==="+IDGenerator.nextBilliId());
System.out.println("nextSnowId==="+IDGenerator.nextSnowId()); System.out.println("nextSnowId==="+IDGenerator.nextSnowId());
System.out.println("get32UUID==="+IDGenerator.get32UUID()); System.out.println("get32UUID==="+IDGenerator.get32UUID());
} }
......
...@@ -37,9 +37,25 @@ public class AdamMemberCode { ...@@ -37,9 +37,25 @@ public class AdamMemberCode {
*/ */
private String memberNo; private String memberNo;
/** /**
* 状态 0-未使用 1-已使用 2-已过期 * 状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]
*/ */
private Integer state; private Integer state;
/**
* 有效期(单位天)
*/
private Integer validity;
/**
* 生效时间
*/
private LocalDateTime effectAt;
/**
* 过期时间
*/
private LocalDateTime expireAt;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
/** /**
* 购买会员码订单号 * 购买会员码订单号
*/ */
...@@ -65,9 +81,5 @@ public class AdamMemberCode { ...@@ -65,9 +81,5 @@ public class AdamMemberCode {
*/ */
private LocalDateTime useAt; private LocalDateTime useAt;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private String comment; private String comment;
} }
...@@ -5,5 +5,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -5,5 +5,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.adam.entity.AdamMemberCode; import com.liquidnet.service.adam.entity.AdamMemberCode;
public interface AdamMemberCodeMapper extends BaseMapper<AdamMemberCode> { public interface AdamMemberCodeMapper extends BaseMapper<AdamMemberCode> {
String getMaxMemberNo(String memberId);
} }
\ No newline at end of file
...@@ -35,7 +35,7 @@ public class CandyCouponCode implements Serializable { ...@@ -35,7 +35,7 @@ public class CandyCouponCode implements Serializable {
private String couponId; private String couponId;
/** /**
* 状态[0-未使用|1-已使用|2-失效|3-退回] * 状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]
*/ */
private Integer state; private Integer state;
......
...@@ -32,7 +32,7 @@ public class CandyMgtCoupon implements Serializable { ...@@ -32,7 +32,7 @@ public class CandyMgtCoupon implements Serializable {
private String couponId; private String couponId;
/** /**
* 发放状态[0-未发放|1-已发放|2-无效|9-发放中|10-会员礼包专用模版] * 发放状态[0-未发放|1-已发放|2-无效|9-发放中|10-会员礼包初始模版]
*/ */
private Integer state; private Integer state;
......
...@@ -311,7 +311,7 @@ create table adam_member_code ...@@ -311,7 +311,7 @@ create table adam_member_code
member_id varchar(64) comment '会员ID', member_id varchar(64) comment '会员ID',
member_price_id varchar(64) comment '会员价格ID', member_price_id varchar(64) comment '会员价格ID',
member_no varchar(20) comment '预留会员号', member_no varchar(20) comment '预留会员号',
state tinyint comment '0-未用,1-已用,2-不可用', state tinyint comment '状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]',
created_at datetime(3), created_at datetime(3),
updated_at datetime(3), updated_at datetime(3),
buy_order_no varchar(255) default null comment '购买会员码订单号', buy_order_no varchar(255) default null comment '购买会员码订单号',
...@@ -323,7 +323,7 @@ create table adam_member_code ...@@ -323,7 +323,7 @@ create table adam_member_code
comment text comment text
) engine = InnoDB comment '会员兑换码'; ) engine = InnoDB comment '会员兑换码';
create unique index uidx_amember_code_id on adam_member_code (code); # create unique index uidx_amember_code_id on adam_member_code (code);
# MDB.idx:code,state # MDB.idx:code,state
-- >>------------------------------------------------------------------------------------ |20210811用于会员改版前支持用户购买会员选礼包收货地址 -- >>------------------------------------------------------------------------------------ |20210811用于会员改版前支持用户购买会员选礼包收货地址
drop table if exists adam_member_order_ext; drop table if exists adam_member_order_ext;
...@@ -353,6 +353,13 @@ alter table adam_member add integral_rate int default 0 null comment '积分倍 ...@@ -353,6 +353,13 @@ alter table adam_member add integral_rate int default 0 null comment '积分倍
alter table adam_member_price modify price_fixed decimal(8, 2) null comment '购买价格'; alter table adam_member_price modify price_fixed decimal(8, 2) null comment '购买价格';
alter table adam_member_price add price_special decimal(8, 2) null comment '特价:首次、首年优惠价' after price_fixed; alter table adam_member_price add price_special decimal(8, 2) null comment '特价:首次、首年优惠价' after price_fixed;
# 会员码表调整
alter table adam_member_code modify state tinyint null comment '状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]';
create index idx_amember_code_id on adam_member_code (code);
alter table adam_member_code add validity tinyint null comment '有效期(单位天)' after state;
alter table adam_member_code add effect_at datetime(3) null comment '生效时间' after validity;
alter table adam_member_code add expire_at datetime(3) null comment '过期时间' after effect_at;
# 订单 # 订单
alter table adam_member_order modify state tinyint null comment '订单状态:0-未支付,1-已支付,2-已关闭,3-超时付,4-退款中,5-已退款'; alter table adam_member_order modify state tinyint null comment '订单状态:0-未支付,1-已支付,2-已关闭,3-超时付,4-退款中,5-已退款';
alter table adam_member_order modify pay_no varchar(64) null comment '支付中心支付CODE'; alter table adam_member_order modify pay_no varchar(64) null comment '支付中心支付CODE';
......
...@@ -559,8 +559,8 @@ public class AdamRdmService { ...@@ -559,8 +559,8 @@ public class AdamRdmService {
return redisUtil.set(AdamRedisConst.INCR_MEMBER_NO, val); return redisUtil.set(AdamRedisConst.INCR_MEMBER_NO, val);
} }
public int incrMemberNo() { public long incrMemberNo() {
return (int) redisUtil.incr(AdamRedisConst.INCR_MEMBER_NO, 1); return redisUtil.incr(AdamRedisConst.INCR_MEMBER_NO, 1);
} }
public int getMaxMemberNo() { public int getMaxMemberNo() {
......
...@@ -43,7 +43,7 @@ public class AdamUserMemberServiceImpl implements IAdamUserMemberService { ...@@ -43,7 +43,7 @@ public class AdamUserMemberServiceImpl implements IAdamUserMemberService {
// } // }
} }
String nextMemberNoStr = String.valueOf(adamRdmService.incrMemberNo()); String nextMemberNoStr = String.valueOf(adamRdmService.incrMemberNo());
if (Pattern.matches("([\\d])\\1{" + (nextMemberNoStr.length() - 1) + "}", nextMemberNoStr)) { while (Pattern.matches("([\\d])\\1{" + (nextMemberNoStr.length() - 1) + "}", nextMemberNoStr)) {
// 不能是完全相同的数字 // 不能是完全相同的数字
nextMemberNoStr = String.valueOf(adamRdmService.incrMemberNo()); nextMemberNoStr = String.valueOf(adamRdmService.incrMemberNo());
} }
......
...@@ -8,7 +8,7 @@ create table candy_mgt_coupon ...@@ -8,7 +8,7 @@ create table candy_mgt_coupon
mid bigint unsigned auto_increment primary key, mid bigint unsigned auto_increment primary key,
mcoupon_id varchar(64) not null, mcoupon_id varchar(64) not null,
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id', coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
state tinyint comment '发放状态[0-未发放|1-已发放|2-无效|9-发放中|10-会员礼包专用模版]', state tinyint comment '发放状态[0-未发放|1-已发放|2-无效|9-发放中|10-会员礼包初始模版]',
# bind_type smallint comment '领取方式[0-用户输入兑换|1-发放至用户]', # bind_type smallint comment '领取方式[0-用户输入兑换|1-发放至用户]',
event_amt int comment '发放量', event_amt int comment '发放量',
...@@ -22,7 +22,7 @@ create table candy_mgt_coupon ...@@ -22,7 +22,7 @@ create table candy_mgt_coupon
comment text comment text
) engine InnoDB comment '券发放管理'; ) engine InnoDB comment '券发放管理';
create unique index uidx_candy_mgt_coupon_id on candy_mgt_coupon (mcoupon_id); create index idx_candy_mgt_coupon_id on candy_mgt_coupon (mcoupon_id);
# 券基础信息 # 券基础信息
...@@ -88,7 +88,7 @@ create table candy_coupon_code ...@@ -88,7 +88,7 @@ create table candy_coupon_code
mid bigint unsigned auto_increment primary key, mid bigint unsigned auto_increment primary key,
ccode varchar(64) not null comment '券码', ccode varchar(64) not null comment '券码',
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id', coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
state tinyint comment '状态[0-未使用|1-已使用|2-失效|3-退回]', state tinyint comment '状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]',
redeem_uid varchar(64) comment '兑换用户UID', redeem_uid varchar(64) comment '兑换用户UID',
redeem_mobile varchar(64) comment '兑换用户手机号', redeem_mobile varchar(64) comment '兑换用户手机号',
......
...@@ -40,6 +40,7 @@ public class CandyMgtCouponTaskController { ...@@ -40,6 +40,7 @@ public class CandyMgtCouponTaskController {
public void issueCoupons() { public void issueCoupons() {
LambdaQueryWrapper<CandyMgtCoupon> queryWrapper = Wrappers.lambdaQuery(CandyMgtCoupon.class) LambdaQueryWrapper<CandyMgtCoupon> queryWrapper = Wrappers.lambdaQuery(CandyMgtCoupon.class)
.eq(CandyMgtCoupon::getState, 0) .eq(CandyMgtCoupon::getState, 0)
// TODO: 2021/8/26 时间判断
.orderByAsc(CandyMgtCoupon::getEventAt); .orderByAsc(CandyMgtCoupon::getEventAt);
List<CandyMgtCoupon> list = platformCandyMgtCouponService.list(queryWrapper); List<CandyMgtCoupon> list = platformCandyMgtCouponService.list(queryWrapper);
int taskSize = CollectionUtils.isEmpty(list) ? -1 : list.size(); int taskSize = CollectionUtils.isEmpty(list) ? -1 : list.size();
......
...@@ -28,7 +28,6 @@ import org.springframework.stereotype.Service; ...@@ -28,7 +28,6 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -59,10 +58,10 @@ public class PlatformCandyCouponService extends ServiceImpl<CandyCouponMapper, C ...@@ -59,10 +58,10 @@ public class PlatformCandyCouponService extends ServiceImpl<CandyCouponMapper, C
redisUtil.set(couponInfoDtoKey, couponInfoDto); redisUtil.set(couponInfoDtoKey, couponInfoDto);
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
Integer eventAmt = mgtCoupon.getEventAmt();
switch (coupon.getBindType()) {// 领取方式[0-用户输入兑换|1-发放至用户] switch (coupon.getBindType()) {// 领取方式[0-用户输入兑换|1-发放至用户]
case 0: case 0:
List<CandyCouponCode> initCouponCodeList = new ArrayList<>(); List<CandyCouponCode> initCouponCodeList = new ArrayList<>();
Integer eventAmt = mgtCoupon.getEventAmt();
boolean batchFlag = eventAmt > 1000; boolean batchFlag = eventAmt > 1000;
for (int i = 0; i < eventAmt; i++) { for (int i = 0; i < eventAmt; i++) {
CandyCouponCode couponCode = new CandyCouponCode(); CandyCouponCode couponCode = new CandyCouponCode();
...@@ -154,20 +153,23 @@ public class PlatformCandyCouponService extends ServiceImpl<CandyCouponMapper, C ...@@ -154,20 +153,23 @@ public class PlatformCandyCouponService extends ServiceImpl<CandyCouponMapper, C
case 2: case 2:
String eventLimit = mgtCoupon.getEventLimit(); String eventLimit = mgtCoupon.getEventLimit();
String[] eventLimitArr = eventLimit.split(","); String[] eventLimitArr = eventLimit.split(",");
log.info("发放券任务:eventLimitArrLength:{}", eventLimitArr.length);
for (String r : eventLimitArr) {
String uid = dmRdmService.getUidByMobile(r);
if (StringUtils.isNotEmpty(uid)) { log.info("发放券任务:eventLimitArrLength:{}", eventLimitArr.length);
CandyUserCoupon userCoupon = new CandyUserCoupon(); for (int i = 0; i < eventAmt; i++) {
userCoupon.setUcouponId(IDGenerator.get32UUID()); for (String r : eventLimitArr) {
userCoupon.setMcouponId(mgtCoupon.getMcouponId()); String uid = dmRdmService.getUidByMobile(r);
userCoupon.setUid(uid);
userCoupon.setCouponId(coupon.getCouponId()); if (StringUtils.isNotEmpty(uid)) {
userCoupon.setState(1); CandyUserCoupon userCoupon = new CandyUserCoupon();
userCoupon.setBindAt(now); userCoupon.setUcouponId(IDGenerator.get32UUID());
userCoupon.setMcouponId(mgtCoupon.getMcouponId());
initUserCouponList.add(userCoupon); userCoupon.setUid(uid);
userCoupon.setCouponId(coupon.getCouponId());
userCoupon.setState(1);
userCoupon.setBindAt(now);
initUserCouponList.add(userCoupon);
}
} }
} }
......
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