浏览代码

添加100元现金券

wangxiaoming 7 年之前
父节点
当前提交
abf6a6fb26

+ 9 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponItemDto.java

@@ -42,6 +42,7 @@ public class CouponItemDto implements java.io.Serializable{
 	private Integer couponIsUse;			//判断是否可用  1:可以使用    2:不可用
 	private String couponNoUseReason;			//不可用说明
 
+	private Integer couponIsPurchase;			//是否必须购买 1:是  2:否    soosd  控制只有必须购买牙刷
 
 	public Integer getCouponIsNewPeople() {
 		return couponIsNewPeople;
@@ -165,4 +166,12 @@ public class CouponItemDto implements java.io.Serializable{
 	public void setCouponNoUseReason(String couponNoUseReason) {
 		this.couponNoUseReason = couponNoUseReason;
 	}
+
+	public Integer getCouponIsPurchase() {
+		return couponIsPurchase;
+	}
+
+	public void setCouponIsPurchase(Integer couponIsPurchase) {
+		this.couponIsPurchase = couponIsPurchase;
+	}
 }

+ 1 - 1
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponType.java

@@ -29,7 +29,7 @@ public class CouponType implements Serializable{
 	private Integer couponGetLimit;				//每人限领多少张
 	private Integer couponType;					//优惠券折扣类型
 	private Integer couponIsConcern;			//是否必须关注
-	private Integer couponIsPurchase;			//是否必须购买		
+	private Integer couponIsPurchase;			//是否必须购买		1:是  2:否
 	private Integer couponConsumeEnough;		//消费总金额要求(满足这个条件才能领券)
 
 	private Integer couponReduce;				//减免率或者减免额

+ 1 - 0
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -269,6 +269,7 @@ public class ResultInfo {
 	public static String COUPON_INVALID="优惠券无效";
 	public static String COUPON_CONSUME_NO_ENOUGH="消费额度不足,优惠券无法使用";
 	public static String COUPON_NO_MEMBER="非会员需要购买电动牙刷才能使用该优惠券";
+	public static String COUPON_NO_TOOTH="该现金券需要订单中有电动牙刷才能使用";
 
 	public static String COUPONITEMSTATUS_NORMAL = "normal";
 	public static String COUPONITEMSTATUS_PASSED = "passed";

+ 7 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/coupon/CouponItemService.java

@@ -65,5 +65,12 @@ public interface CouponItemService {
 	 */
 	Integer getIsReceive(String openId);
 
+	/**
+	 * 获取领取的优惠券的数量
+	 * @param couponItem
+	 * @return
+	 */
+	Integer isReceive(CouponItem couponItem);
+
 
 }

+ 5 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/coupon/CouponItemServiceImpl.java

@@ -63,4 +63,9 @@ public class CouponItemServiceImpl implements CouponItemService {
 		return couponItemMapper.getIsReceive(openId);
 	}
 
+	@Override
+	public Integer isReceive(CouponItem couponItem) {
+		return couponItemMapper.isReceive(couponItem);
+	}
+
 }

+ 7 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/CouponItemMapper.java

@@ -69,4 +69,11 @@ public interface CouponItemMapper {
 	 */
 	Integer getIsReceive(String openId);
 
+	/**
+	 * 获取领取的优惠券的数量
+	 * @param couponItem
+	 * @return
+	 */
+	Integer isReceive(CouponItem couponItem);
+
 }

+ 13 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/couponItemMapper.xml

@@ -20,6 +20,7 @@
 		CT.COUPON_NAME couponName,
 		CT.coupon_type couponType,
  		CT.COUPON_REDUCE couponReduce,
+ 		CT.COUPON_IS_PURCHASE,
  		CT.COUPON_CONSUME_ENOUGH couponConsumeEnough
 	</sql>
  	<!-- 查询优惠券详情列表 分页 -->
@@ -199,4 +200,16 @@
 				AND CT.COUPON_IS_NEW_PEOPLE = 1
 		ORDER BY CI.COUPON_RECEIVE_DATE DESC
 	</select>
+
+	<!--根据openid和优惠券类型查询领取了多少张优惠券-->
+	<select id="isReceive" parameterType="CouponItem" resultType="Integer">
+		SELECT
+			COUNT(CI.coupon_item_id)
+		FROM
+			TB_IAMBERRY_COUPON_ITEM CI
+		WHERE
+			CI.COUPON_ITEM_USER_OPENID = #{couponItemUseropenid}
+		AND CI.coupon_id =  #{couponId}
+	</select>
+
 </mapper>

+ 104 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/coupon/CouponTypeHandler.java

@@ -582,7 +582,111 @@ public class CouponTypeHandler {
 				resultMsg.setStatus(false);
 			}
 		}
+		return resultMsg;
+	}
+
+
+	/**
+	 * 获取用户是否已领取优惠券
+	 * @param request
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/isReceive")
+	public ResultMsg isReceive(HttpServletRequest request,Integer couponId){
+		ResultMsg resultMsg = new ResultMsg();
+		Member memberInfo = WechatUtils.getUserBySession(request);
+		CouponItem couponItem = new CouponItem();
+		couponItem.setCouponItemUseropenid(memberInfo.getUserOpenid());
+		couponItem.setCouponId(couponId);
+		Integer msg = couponItemService.isReceive(couponItem);
+		if(couponId == null || "".equals(couponId)){
+			resultMsg.setResultCode(ResultInfo.ERRORCODE);
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("未查询到到优惠券");
+			return resultMsg;
+		}
+
+		/*获取优惠券类型*/
+		CouponType couponType = couponTypeService.getCouponTypeById(couponId);
+
+		if(couponType.getCouponEndDate().before(new Date())){   //couponType.getCouponEndDate 小于 new Date()
+			resultMsg.setResultCode("501");
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("活动已过期!");
+			return resultMsg;
+		}
 
+		if(couponType != null &&  msg < couponType.getCouponGetLimit()){
+			resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
+			resultMsg.setStatus(true);
+		}else{
+			resultMsg.setResultCode(ResultInfo.ERRORCODE);
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("无法领取该优惠券");
+			return resultMsg;
+		}
 		return resultMsg;
 	}
+
+	/**
+	 * 领取优惠券
+	 * @param request
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/receive_coupon")
+	public ResultMsg receive_coupon(HttpServletRequest request,Integer couponId){
+		ResultMsg resultMsg = new ResultMsg();
+		Member memberInfo = WechatUtils.getUserBySession(request);
+		if(couponId == null || "".equals(couponId)){
+			resultMsg.setResultCode(ResultInfo.ERRORCODE);
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("未查询到到优惠券");
+			return resultMsg;
+		}
+		CouponItem couponItem = new CouponItem();
+		couponItem.setCouponItemUseropenid(memberInfo.getUserOpenid());
+		couponItem.setCouponId(couponId);
+		Integer msg = couponItemService.isReceive(couponItem);
+		/*获取优惠券类型*/
+		CouponType couponType = couponTypeService.getCouponTypeById(couponId);
+
+		if(couponType.getCouponEndDate().before(new Date())){   //couponType.getCouponEndDate < new Date()
+			resultMsg.setResultCode("501");
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("活动已过期!");
+			return resultMsg;
+		}
+
+		/* 比对每个人限领的张数 */
+		if(couponType != null &&  msg < couponType.getCouponGetLimit()){
+			CouponItem ci = new CouponItem();
+			ci.setCouponId(couponType.getCouponId());
+			Calendar calendar = Calendar.getInstance();
+			calendar.add(Calendar.MONTH,1);
+			ci.setCouponUseEndDate(calendar.getTime());//领取后一月有效
+			ci.setCouponReceiveDate(new Date());
+			ci.setCouponItemUseropenid(memberInfo.getUserOpenid());
+			ci.setCouponUseStatus(1);
+			ci.setCouponIsDonation(2);
+			ci.setCouponItemRemark("100元现金券");
+			if(couponItemService.insertCouponItem(ci) > 0){
+				resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
+				resultMsg.setStatus(true);
+			}else{
+				resultMsg.setResultCode(ResultInfo.ERRORCODE);
+				resultMsg.setStatus(false);
+			}
+		}else{
+			resultMsg.setResultCode(ResultInfo.ERRORCODE);
+			resultMsg.setStatus(false);
+			resultMsg.setMessage("已领取过该优惠券了");
+			return resultMsg;
+		}
+		return resultMsg;
+	}
+
+
+
 }

+ 25 - 5
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java

@@ -192,7 +192,7 @@ public class OrderHandler {
 		CouponItemDto cDto = new CouponItemDto();
 		cDto.setUseropenid(member.getUserOpenid());
 		cDto.setCouponUseStatus(1);
-		cDto.setBeginDate(new Date());
+		cDto.setBeginDate(new Date()); ////*未过期*/
 		//cDto.setPage(new PageBean());
 		//cDto.getPage().setPageSize(12);
 		//cDto.getPage().setPageNumber(pageNO);
@@ -200,10 +200,23 @@ public class OrderHandler {
 		List<CouponItemDto> list = new ArrayList<>();
 		for(CouponItemDto couponItemDto : couponItemDtoList){
 			boolean flag = true;
-			if(couponItemDto.getCouponIsNewPeople() == 1 && member.getUserIdentity() != 1){  //当券为新人券,用户为非会员时,需要有牙刷,结算才可以使用该券
-				if(!disable){		//订单中没有牙刷
-					flag = false;
+
+			/*达到优惠券所设置的金额 couponConsumeEnough*/
+			if(total >= couponItemDto.getCouponConsumeEnough()){
+
+				/*新人卷没有其他限制*/
+				if(couponItemDto.getCouponIsNewPeople() == 1 && member.getUserIdentity() != 1){  //当券为新人券,用户为非会员时,需要有牙刷,结算才可以使用该券
+					if(!disable){		//订单中没有牙刷
+						flag = false;
+					}
+				}else if(couponItemDto.getCouponIsPurchase() == 1){  ///*控制是否需要购买的有牙刷*/
+					if(!disable){     //订单中没有牙刷
+						flag = false;
+					}
 				}
+
+			}else{
+				flag = false;
 			}
 			if(flag){
 				list.add(couponItemDto);
@@ -397,6 +410,13 @@ public class OrderHandler {
 					return msg;
 				}
 			}
+			/*判断优惠券是否购买牙刷必须优惠券,与新人卷 分开*/
+			if(couponType.getCouponIsPurchase() == 1){
+				if(!isContainProduct){
+					msg.setMessage(ResultInfo.COUPON_NO_TOOTH); //非会员需要购买电动牙刷才能使用该优惠券
+					return msg;
+				}
+			}
 			//优惠券的类型,是直接减免额度 还是折扣价
 			if(couponType.getCouponType()==1){
 				total=total-couponType.getCouponReduce();
@@ -431,7 +451,7 @@ public class OrderHandler {
 		boolean flag = false;
 		try {
 			flag = cartService.addOrderAndSaveOrderItem(order, list, cartIds);
-		//System.out.println("====插入订单列表信息===="+flag);
+			//System.out.println("====插入订单列表信息===="+flag);
 			//修改优惠券状态为临时状态
 			if(hasCoupon){
 				couponItem.setCouponUseStatus(7);

+ 1 - 1
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/polyapi/ExternalDockPolyApiHandler.java

@@ -1020,7 +1020,7 @@ public class ExternalDockPolyApiHandler {
                logger.info("-----------签名验证失败---------------,sign:"+sign);
                throw new Exception("签名验证失败");
            }
-           logger.info("-----------菠萝派调用接口,签名验证通过。接口调用方法名:"+method);
+           logger.info("-----------菠萝派调用接口,签名验证通过。接口调用方法名:"+method +"接口参数:" + bizcontent);
         }
         Map requstMap = (Map) JSON.parse(bizcontent);
         return requstMap;

+ 1 - 1
tooth-wechat-web/src/main/resources/iamberry-wechat-web-ioc.xml

@@ -54,7 +54,7 @@
     <!--<task:annotation-driven/>-->
     
     <!-- 将30天后奖励积分的定时任务的xml引入-->
-	<import resource="classpath:iamberry-wechat-service-orderTesk.xml"></import>
+	<!--<import resource="classpath:iamberry-wechat-service-orderTesk.xml"></import>-->
 	
 	<import resource="classpath:iamberry-wechat-service-datasource.xml"/>