diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 0b588dd19..f2c7f4bee 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -5,6 +5,9 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCouponOrder; +import com.iformall.domain.vo.WxCouponOrderCVo; +import com.iformall.enums.EnumCouponChannelActivityStatus; +import com.iformall.enums.EnumCouponOrderValidStatus; import com.iformall.exception.MallinkException; import com.iformall.service.WxCouponOrderService; import io.swagger.annotations.Api; @@ -17,6 +20,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.Map; @RestController @@ -113,6 +117,25 @@ public class WxCouponOrderController extends BaseController { logger.error("couponOrderId参数不正确: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } + + WxCouponOrderCVo wxCouponOrderCVo = wxCouponOrderService.detailCUserVo(getUser().getId(), couponOrderIdStr); + + if (wxCouponOrderCVo == null) + return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); + + + if (wxCouponOrderCVo.getValidStartDate() != null && wxCouponOrderCVo.getValidEndDate() != null ) { + Date now = new Date(); + if (wxCouponOrderCVo.getValidStartDate().getTime() > now.getTime()) { + logger.error("此券有效期未开始:" + couponOrderIdStr); + return new ResultData(ErrorCode.COUPON_ORDER_IS_EARLIER_THAN_VALIDDATE); + } + if (wxCouponOrderCVo.getValidEndDate().getTime() < now.getTime()) { + logger.error("此券有效期已结束:" + couponOrderIdStr); + return new ResultData(ErrorCode.COUPON_ORDER_IS_LATER_THAN_VALIDDATE); + } + } + WxCouponOrder couponOrder = null; try { couponOrder = wxCouponOrderService.verify(couponOrderId, getUser().getId()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index a42fee1fb..05955d933 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -1,12 +1,15 @@ package com.iformall.controller; +import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCouponOrder; import com.iformall.domain.vo.WxCardCVo; import com.iformall.domain.vo.WxCouponOrderCVo; +import com.iformall.enums.EnumCouponChannelActivityStatus; import com.iformall.enums.EnumCouponOrderStatus; +import com.iformall.enums.EnumCouponOrderValidStatus; import com.iformall.service.WxCouponOrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -19,10 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @RestController @RequestMapping("/api/couponOrder") @@ -55,7 +55,23 @@ public class WxCouponOrderController extends BaseController { wxCouponOrder.setSortColumns(WxCouponOrder.Field.CreateDate_DESC); else wxCouponOrder.setSortColumns(WxCouponOrder.Field.UpdateDate_DESC); - return wxCouponOrderService.listCUserVoAsPage(wxCouponOrder, pageNum, pageSize); + + PageInfo page = wxCouponOrderService.listCUserVoAsPage(wxCouponOrder, pageNum, pageSize); + + Date now = new Date(); + page.getList().stream().forEach(co->{ + if (co.getValidStartDate() != null && co.getValidEndDate() != null ) { + if (co.getValidStartDate().getTime() > now.getTime()) { + co.setValidStatus(EnumCouponOrderValidStatus.PREPARED.getCode()); + } else if (co.getValidEndDate().getTime() < now.getTime()) { + co.setValidStatus(EnumCouponOrderValidStatus.ENDED.getCode()); + } else { + co.setValidStatus(EnumCouponChannelActivityStatus.STARTED.getCode()); + } + } + }); + + return new ResultData(page); } @ApiOperation(value = "券详情接口") @@ -68,8 +84,19 @@ public class WxCouponOrderController extends BaseController { if (couponOrderId == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } + WxCouponOrderCVo wxCouponOrderCVo = wxCouponOrderService.detailCUserVo(getUser().getId(), couponOrderId); + Date now = new Date(); + if (wxCouponOrderCVo.getValidStartDate() != null && wxCouponOrderCVo.getValidEndDate() != null ) { + if (wxCouponOrderCVo.getValidStartDate().getTime() > now.getTime()) { + wxCouponOrderCVo.setValidStatus(EnumCouponOrderValidStatus.PREPARED.getCode()); + } else if (wxCouponOrderCVo.getValidEndDate().getTime() < now.getTime()) { + wxCouponOrderCVo.setValidStatus(EnumCouponOrderValidStatus.ENDED.getCode()); + } else { + wxCouponOrderCVo.setValidStatus(EnumCouponChannelActivityStatus.STARTED.getCode()); + } + } - return wxCouponOrderService.detailCUserVo(getUser().getId(), couponOrderId); + return new ResultData(wxCouponOrderCVo); } @ApiOperation(value = "卡券状态接口") diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index a3998ae99..aa45be246 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -9,9 +9,7 @@ import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxOrder; import com.iformall.domain.vo.WxOrderCouponPressVo; import com.iformall.domain.vo.WxOrderCouponVo; -import com.iformall.enums.EnumCouponChannelStatus; -import com.iformall.enums.EnumCouponChannelType; -import com.iformall.enums.EnumOrderStatus; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxOrderService; @@ -251,6 +249,21 @@ public class WxOrderController extends BaseController { wxOrder.setcUserId(getUser().getId()); wxOrder.setSortColumns(WxOrder.Field.UpdateDate_DESC); final PageInfo page = wxOrderService.listCUserVoAsPage(wxOrder, pageNum, pageSize); + + Date now = new Date(); + page.getList().stream().forEach(oc->{ + if (oc.getValidStartDate() != null && oc.getValidEndDate() != null ) { + if (oc.getValidStartDate().getTime() > now.getTime()) { + oc.setValidStatus(EnumCouponOrderValidStatus.PREPARED.getCode()); + } else if (oc.getValidEndDate().getTime() < now.getTime()) { + oc.setValidStatus(EnumCouponOrderValidStatus.ENDED.getCode()); + } else { + oc.setValidStatus(EnumCouponChannelActivityStatus.STARTED.getCode()); + } + } + }); + + return new ResultData(page); } @@ -274,6 +287,19 @@ public class WxOrderController extends BaseController { WxOrderCouponVo wxOrderCVo = wxOrderService.detailCUserVo(wxOrder); if (wxOrderCVo == null) return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); + + Date now = new Date(); + + if (wxOrderCVo.getValidStartDate() != null && wxOrderCVo.getValidEndDate() != null ) { + if (wxOrderCVo.getValidStartDate().getTime() > now.getTime()) { + wxOrderCVo.setValidStatus(EnumCouponOrderValidStatus.PREPARED.getCode()); + } else if (wxOrderCVo.getValidEndDate().getTime() < now.getTime()) { + wxOrderCVo.setValidStatus(EnumCouponOrderValidStatus.ENDED.getCode()); + } else { + wxOrderCVo.setValidStatus(EnumCouponChannelActivityStatus.STARTED.getCode()); + } + } + return new ResultData(wxOrderCVo); } diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index f72c61f46..74c6b339d 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -149,6 +149,8 @@ public enum ErrorCode{ COUPON_ORDER_IS_INVALID(4003, "卡券已经作废"), COUPON_ORDER_BUSER_IS_NULL(4004, "卡券B端用户不存在"), COUPON_ORDER_MERANT_IS_NULL(4005, "卡券商户不存在"), + COUPON_ORDER_IS_EARLIER_THAN_VALIDDATE(4006, "卡券使用期还未开始"), + COUPON_ORDER_IS_LATER_THAN_VALIDDATE(4007, "卡券使用期已结束"), /** * 卡 diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCVo.java index a89922155..1b9db6027 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCVo.java @@ -45,6 +45,17 @@ public class WxCouponOrderCVo extends WxCouponOrder { this.ids = ids; } + @Transient + private Integer validStatus; + + public Integer getValidStatus() { + return validStatus; + } + + public void setValidStatus(Integer validStatus) { + this.validStatus = validStatus; + } + /* 基础购买到的券信息 */ /***/ @@ -109,7 +120,12 @@ public class WxCouponOrderCVo extends WxCouponOrder { /*购买须知**/ @io.swagger.annotations.ApiModelProperty(value="购买须知",name="remark") private String remark; - + /**有效日期-开始**/ + @io.swagger.annotations.ApiModelProperty(value="有效日期-开始",name="validStartDate") + private Date validStartDate; + /**有效日期-结束**/ + @io.swagger.annotations.ApiModelProperty(value="有效日期-结束",name="validEndDate") + private Date validEndDate; /*发券商户信息*/ /*使用商户名**/ @@ -270,4 +286,20 @@ public class WxCouponOrderCVo extends WxCouponOrder { public void setSendChannelType(Integer sendChannelType) { this.sendChannelType = sendChannelType; } + + public Date getValidStartDate() { + return validStartDate; + } + + public void setValidStartDate(Date validStartDate) { + this.validStartDate = validStartDate; + } + + public Date getValidEndDate() { + return validEndDate; + } + + public void setValidEndDate(Date validEndDate) { + this.validEndDate = validEndDate; + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java index 9475f6950..b0ef7660a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -1,6 +1,8 @@ package com.iformall.domain.vo; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import javax.persistence.Transient; import java.util.Date; import java.util.List; @@ -23,6 +25,18 @@ public class WxOrderCouponVo { this.id = id; } + @Transient + private Integer validStatus; + + public Integer getValidStatus() { + return validStatus; + } + + public void setValidStatus(Integer validStatus) { + this.validStatus = validStatus; + } + + /* 基础购买到的券信息 */ @@ -62,6 +76,12 @@ public class WxOrderCouponVo { @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; + /**有效日期-开始**/ + @io.swagger.annotations.ApiModelProperty(value="有效日期-开始",name="validStartDate") + private Date validStartDate; + /**有效日期-结束**/ + @io.swagger.annotations.ApiModelProperty(value="有效日期-结束",name="validEndDate") + private Date validEndDate; /*券ID-产品ID将来的产品都会放在coupon表里**/ @io.swagger.annotations.ApiModelProperty(value="券包中券ID",name="couponOrderId") @@ -292,4 +312,20 @@ public class WxOrderCouponVo { public void setSupportTransfer(Integer supportTransfer) { this.supportTransfer = supportTransfer; } + + public Date getValidStartDate() { + return validStartDate; + } + + public void setValidStartDate(Date validStartDate) { + this.validStartDate = validStartDate; + } + + public Date getValidEndDate() { + return validEndDate; + } + + public void setValidEndDate(Date validEndDate) { + this.validEndDate = validEndDate; + } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponOrderValidStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponOrderValidStatus.java new file mode 100644 index 000000000..23e2eea98 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponOrderValidStatus.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCouponOrderValidStatus { + + PREPARED(0, "未到使用期"), + STARTED(1, "可使用"), + ENDED(1, "已过使用期"), + ; + + public static EnumCouponOrderValidStatus getEnum(Integer code) { + for (EnumCouponOrderValidStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCouponOrderValidStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index 337f308bb..7741c0918 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -4,10 +4,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCouponOrder; import com.iformall.domain.po.WxMerchantBUser; -import com.iformall.domain.vo.CUserDateAmountVo; -import com.iformall.domain.vo.WxCardCVo; -import com.iformall.domain.vo.WxCouponOrderBVo; -import com.iformall.domain.vo.WxCouponOrderCarCVo; +import com.iformall.domain.vo.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -103,14 +100,14 @@ public interface WxCouponOrderService { * @param record C端用户 */ - ResultData listCUserVoAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize); + PageInfo listCUserVoAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize); /** * C用户查券详情 * * @param cUserId C端用户 */ - ResultData detailCUserVo(Long cUserId, String couponOrderId); + WxCouponOrderCVo detailCUserVo(Long cUserId, String couponOrderId); /** * C用户查券carlist diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index 2e629385b..87fc382a5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -193,13 +193,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } @Override - public ResultData listCUserVoAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { + public PageInfo listCUserVoAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { - return new ResultData(PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findListOfCUser(record))); + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findListOfCUser(record)); } @Override - public ResultData detailCUserVo(Long cUserId, String couponOrderId) { + public WxCouponOrderCVo detailCUserVo(Long cUserId, String couponOrderId) { WxCUser wxCuser = wxCUserMapper.selectByPrimaryKey(cUserId); if (wxCuser == null) { logger.error("用户不存在:" + cUserId); @@ -208,8 +208,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxCouponOrderCVo wxCouponOrderCVo = wxCouponOrderMapper.findDetailOfCUser(Long.valueOf(couponOrderId)); if (wxCouponOrderCVo == null) - return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); - return new ResultData(wxCouponOrderCVo); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + return wxCouponOrderCVo; } diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 3d34b29af..81780779a 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -505,6 +505,8 @@ + + diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 1671d7f63..f21eb0b73 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -212,6 +212,8 @@ + +