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

Commit 72c255f7 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/dev_member_voucher_refund' into dev_member_voucher_refund

parents a72599dd 43c67127
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
public class CandyCouponRuleDto implements Serializable { public class CandyCouponRuleDto implements Serializable,Cloneable {
private static final long serialVersionUID = -3727352492315559906L; private static final long serialVersionUID = -3727352492315559906L;
private String cruleId; private String cruleId;
...@@ -15,4 +15,14 @@ public class CandyCouponRuleDto implements Serializable { ...@@ -15,4 +15,14 @@ public class CandyCouponRuleDto implements Serializable {
private String busiId; private String busiId;
//private Integer state; //private Integer state;
//private String comment; //private String comment;
private static final CandyCouponRuleDto obj = new CandyCouponRuleDto();
public static CandyCouponRuleDto getNew() {
try {
return (CandyCouponRuleDto) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CandyCouponRuleDto();
}
} }
package com.liquidnet.service.candy.controller; package com.liquidnet.service.candy.controller;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.dto.CandyCouponRuleDto;
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.candy.util.CouponBaseUtil;
import com.liquidnet.service.candy.util.ObjectUtil;
import com.liquidnet.service.candy.util.RedisDataUtils;
import com.liquidnet.service.candy.vo.CandyCouponRulesVo;
import com.liquidnet.service.candy.vo.CandyCouponVo;
import com.liquidnet.service.candy.vo.CandyMyCouponListVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.List;
/** /**
* <p> * <p>
* 券基础信息 前端控制器 * 券基础信息 前端控制器
...@@ -13,8 +36,31 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -13,8 +36,31 @@ import org.springframework.web.bind.annotation.RestController;
* @author liquidnet * @author liquidnet
* @since 2021-08-18 * @since 2021-08-18
*/ */
@Api("券相关接口")
@RestController @RestController
@RequestMapping("/candy-coupon") @RequestMapping("/candy-coupon")
public class CandyCouponController { public class CandyCouponController {
@Autowired
private RedisDataUtils redisDataUtils;
@GetMapping("my")
@ApiOperation("我的券列表")
public ResponseDto<CandyMyCouponListVo> myCoupon() {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
CandyMyCouponListVo vo = CandyMyCouponListVo.getNew();
List<CandyCouponVo> memberCoupon = ObjectUtil.getCandyCouponVoArrayList();
List<CandyCouponVo> myCoupon = ObjectUtil.getCandyCouponVoArrayList();
for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getBaseCouponUserVo(dtoItem);
if (dtoItem.getBusiType().equals(4)) { //会员券
memberCoupon.add(baseVo);
} else {//非会员券
myCoupon.add(baseVo);
}
}
return ResponseDto.success(vo);
}
} }
package com.liquidnet.service.candy.util;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.candy.dto.CandyCouponRuleDto;
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.candy.vo.CandyCouponRulesVo;
import com.liquidnet.service.candy.vo.CandyCouponVo;
import java.time.LocalDateTime;
import java.util.List;
public class CouponBaseUtil {
public static CandyCouponVo getBaseCouponUserVo(CandyUserCouponBasicDto dtoItem) {
LocalDateTime now = LocalDateTime.now();
CandyCouponVo vo = CandyCouponVo.getNew();
List<CandyCouponRulesVo> rulesVoList = ObjectUtil.getCandyCouponRulesVos();
vo.setTitle(dtoItem.getTitle());
vo.setExpireAt(DateUtil.format(dtoItem.getExpireAt(), DateUtil.Formatter.yyyy_MM_dd));
vo.setValFace(dtoItem.getValFace());
vo.setValOver(dtoItem.getValOver());
vo.setValMinus(dtoItem.getValMinus());
vo.setBindType(dtoItem.getBindType());
vo.setLabel(dtoItem.getLabel());
vo.setNotice(dtoItem.getNotice());
vo.setUcouponId(dtoItem.getUcouponId());
vo.setUsedAt(DateUtil.format(dtoItem.getUsedAt(), DateUtil.Formatter.yyyy_MM_dd));
vo.setUsedFor(dtoItem.getUsedFor());
//适用范围 规则
for (CandyCouponRuleDto ruleItem : dtoItem.getUseRules()) {
CandyCouponRulesVo voRules = CandyCouponRulesVo.getNew();
voRules.setUseScope(ruleItem.getUseScope());
voRules.setBusiId(ruleItem.getBusiId());
voRules.setBusiName(ruleItem.getBusiName());
rulesVoList.add(voRules);
}
//券类别
if (dtoItem.getBusiType().equals(3)) {
vo.setCouType(101);
} else {
vo.setCouType(dtoItem.getCouType());
}
//券状态
if (dtoItem.getState().equals(1)) {
if (now.isAfter(dtoItem.getExpireAt())) {
vo.setState(3);
} else {
vo.setState(dtoItem.getState());
}
} else {
vo.setState(dtoItem.getState());
}
vo.setUseRules(rulesVoList);
return vo;
}
}
package com.liquidnet.service.candy.util;
import com.liquidnet.service.candy.vo.CandyCouponRulesVo;
import com.liquidnet.service.candy.vo.CandyCouponVo;
import java.util.ArrayList;
public class ObjectUtil {
private static final ArrayList<CandyCouponVo> candyCouponVoArrayList = new ArrayList<>();
private static final ArrayList<CandyCouponRulesVo> candyCouponRulesVos = new ArrayList<>();
public static ArrayList<CandyCouponVo> getCandyCouponVoArrayList() {
return (ArrayList<CandyCouponVo>) candyCouponVoArrayList.clone();
}
public static ArrayList<CandyCouponRulesVo> getCandyCouponRulesVos() {
return (ArrayList<CandyCouponRulesVo>) candyCouponRulesVos.clone();
}
}
package com.liquidnet.service.candy.util; package com.liquidnet.service.candy.util;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.candy.constant.CandyRedisConst;
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component @Component
public class RedisDataUtils { public class RedisDataUtils {
@Autowired @Autowired
RedisUtil redisUtil; RedisUtil redisUtil;
public List<CandyUserCouponBasicDto> getCouponByUid(String uid){
String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid);
Object obj = redisUtil.get(redisKey);
if(obj==null){
//降级
return new ArrayList();
}else{
return (List<CandyUserCouponBasicDto>)obj;
}
}
} }
package com.liquidnet.service.candy.vo;
import com.liquidnet.service.candy.dto.CandyCouponRuleDto;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@Data
public class CandyCouponRulesVo implements Serializable,Cloneable {
private static final long serialVersionUID = 4073256621782131607L;
private Integer useScope;
private String busiName;
private String busiId;
private static final CandyCouponRulesVo obj = new CandyCouponRulesVo();
public static CandyCouponRulesVo getNew() {
try {
return (CandyCouponRulesVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CandyCouponRulesVo();
}
}
package com.liquidnet.service.candy.vo;
import com.liquidnet.service.candy.dto.CandyCouponRuleDto;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class CandyCouponVo implements Serializable,Cloneable {
private static final long serialVersionUID = 4073256621782131606L;
/* --- --- --- CandyCoupon */
private String title;//标题
private String label;//标注
private String notice;//须知
// private Integer exclusive;//专享标识[0-常规|1-会员礼包]
// private Integer busiType;//业务类别[0-全场|1-演出|2-商品|3-优先购|4-会员]
private Integer couType;//券类型[1-代金券|2-满减券|3-兑换券|4-折扣券]
private Integer bindType;//[0-用户输入兑换|1-发放至用户]
private BigDecimal discount;//折扣
private BigDecimal valFace;//面值
private BigDecimal valOver;//满减~满
private BigDecimal valMinus;//满减~减少
private String expireAt;//过期时间
/* --- --- --- CandyUserCoupon */
private String ucouponId;//券id
private Integer state;//券状态[1-可用|2-无效|3-已过期|5-已使用]
// private String bindAt;//激活时间
private String usedAt;//使用时间
private String usedFor;//购买内容
/* --- --- --- CandyCouponRule */
private List<CandyCouponRulesVo> useRules;
private static final CandyCouponVo obj = new CandyCouponVo();
public static CandyCouponVo getNew() {
try {
return (CandyCouponVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CandyCouponVo();
}
}
package com.liquidnet.service.candy.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class CandyMyCouponListVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4073256621782131607L;
private List<CandyCouponVo> memberCoupon;
private List<CandyCouponVo> myCoupon;
private static final CandyMyCouponListVo obj = new CandyMyCouponListVo();
public static CandyMyCouponListVo getNew() {
try {
return (CandyMyCouponListVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CandyMyCouponListVo();
}
}
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