| @@ -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()); | |||
| @@ -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<WxCouponOrderCVo> 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 = "卡券状态接口") | |||
| @@ -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<WxOrderCouponVo> 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); | |||
| } | |||
| @@ -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, "卡券使用期已结束"), | |||
| /** | |||
| * 卡 | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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<WxCouponOrderCVo> 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 | |||
| @@ -193,13 +193,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||
| } | |||
| @Override | |||
| public ResultData listCUserVoAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { | |||
| public PageInfo<WxCouponOrderCVo> 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; | |||
| } | |||
| @@ -505,6 +505,8 @@ | |||
| <result column="price" jdbcType="INTEGER" property="price" /> | |||
| <result column="unit" jdbcType="INTEGER" property="unit" /> | |||
| <result column="remark" jdbcType="VARCHAR" property="remark" /> | |||
| <result column="valid_start_date" jdbcType="TIMESTAMP" property="validStartDate"/> | |||
| <result column="valid_end_date" jdbcType="TIMESTAMP" property="validEndDate"/> | |||
| <result column="send_channel_type" jdbcType="INTEGER" property="sendChannelType" /> | |||
| @@ -212,6 +212,8 @@ | |||
| <result column="price" jdbcType="INTEGER" property="price"/> | |||
| <result column="unit" jdbcType="INTEGER" property="unit"/> | |||
| <result column="remark" jdbcType="VARCHAR" property="remark"/> | |||
| <result column="valid_start_date" jdbcType="TIMESTAMP" property="validStartDate"/> | |||
| <result column="valid_end_date" jdbcType="TIMESTAMP" property="validEndDate"/> | |||
| <result column="coupon_order_id" jdbcType="BIGINT" property="couponOrderId"/> | |||
| <result column="coupon_order_status" jdbcType="INTEGER" property="couponOrderStatus"/> | |||