|
@@ -3,15 +3,13 @@ package com.platform.yijia.controller;
|
|
|
import com.google.gson.Gson;
|
|
|
import com.google.gson.GsonBuilder;
|
|
|
import com.platform.yijia.config.YiJiaRequest;
|
|
|
-import com.platform.yijia.pojo.Coupon;
|
|
|
-import com.platform.yijia.pojo.CouponIssue;
|
|
|
-import com.platform.yijia.pojo.StationInfo;
|
|
|
-import com.platform.yijia.pojo.UserCoupon;
|
|
|
+import com.platform.yijia.pojo.*;
|
|
|
import com.platform.yijia.service.CouponService;
|
|
|
import com.platform.yijia.service.StationService;
|
|
|
import com.platform.yijia.utils.CodeMsg;
|
|
|
import com.platform.yijia.utils.ResultData;
|
|
|
import com.sun.corba.se.spi.ior.ObjectKey;
|
|
|
+import com.sun.org.apache.bcel.internal.classfile.Code;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
@@ -55,6 +53,7 @@ public class CouponController {
|
|
|
@ResponseBody
|
|
|
@ApiOperation(value = "获取油站已发放的优惠券信息", httpMethod = "GET", notes = "获取油站已发放的优惠券信息")
|
|
|
public String selectStaGrantCouponList(@ApiParam(value = "油站ID", required = true) @RequestParam Integer stationId,
|
|
|
+ @ApiParam(value = "用户unionId", required = true) @RequestParam String unionId,
|
|
|
@ApiParam(value = "发放方式ID", required = true) @RequestParam String couponIssueId){
|
|
|
Gson gson =new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
|
|
|
ResultData resultData = null;
|
|
@@ -63,25 +62,46 @@ public class CouponController {
|
|
|
stationInfo.setStationId(stationId);
|
|
|
StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
|
|
|
if(stationInfos !=null && stationInfos.getCouponEnabledFlag().equals("1")){
|
|
|
- Coupon coupon = new Coupon();
|
|
|
- coupon.setStationId(stationId);
|
|
|
- coupon.setCouponIssueId(couponIssueId);
|
|
|
- //coupon.setUnionId(unionId);
|
|
|
- //领取油站所分发的优惠券
|
|
|
- List<Coupon> coupons = couponService.selectStaGrantCouponList(coupon);
|
|
|
- resultData = ResultData.success(coupons);
|
|
|
+ CouponUserGiveCount couponUserGiveCount = new CouponUserGiveCount();
|
|
|
+ couponUserGiveCount.setStationId(stationId);
|
|
|
+ couponUserGiveCount.setUnionId(unionId);
|
|
|
+ couponUserGiveCount.setCouponIssueId(couponIssueId);
|
|
|
+ //用户能进入领取界面的次数
|
|
|
+ CouponUserGiveCount cgcInfo = couponService.selectCouponUserGiveCount(couponUserGiveCount);
|
|
|
+ if(cgcInfo !=null && cgcInfo.getIssueGiveCount() >= cgcInfo.getGiveCount()){
|
|
|
+ resultData = ResultData.error(CodeMsg.COUPON_GIVE_COUNT_MAX);
|
|
|
+ }else {
|
|
|
+ Coupon coupon = new Coupon();
|
|
|
+ coupon.setStationId(stationId);
|
|
|
+ coupon.setCouponIssueId(couponIssueId);
|
|
|
+ //领取油站所分发的优惠券
|
|
|
+ List<Coupon> couponsList = couponService.selectStaGrantCouponList(coupon);
|
|
|
+// if(cgcInfo !=null){
|
|
|
+// //更新次数
|
|
|
+// Integer issueGiveCount = cgcInfo.getIssueGiveCount();
|
|
|
+// int i = issueGiveCount + 1;
|
|
|
+// couponUserGiveCount.setIssueGiveCount(i);
|
|
|
+// couponUserGiveCount.setUpdateTime(new Date());
|
|
|
+// couponService.updateCouponUserGiveCount(couponUserGiveCount);
|
|
|
+// }else {
|
|
|
+// //新增次数
|
|
|
+// couponUserGiveCount.setIssueGiveCount(1);
|
|
|
+// couponUserGiveCount.setCreteTime(new Date());
|
|
|
+// couponService.addCouponUserGiveCount(couponUserGiveCount);
|
|
|
+// }
|
|
|
+ resultData = ResultData.success(couponsList);
|
|
|
+ }
|
|
|
}else {
|
|
|
resultData = ResultData.error(CodeMsg.NO_ENABLE_COUPON);
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
+ //e.printStackTrace();
|
|
|
logger.error("获取油站已发放的优惠券错误信息:" + e.getMessage());
|
|
|
resultData = ResultData.error(CodeMsg.SEARCH_FAIL);
|
|
|
}
|
|
|
return gson.toJson(resultData);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//获取优惠券信息
|
|
|
@RequestMapping(value = "/selectCouponInfo", method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
@@ -115,8 +135,12 @@ public class CouponController {
|
|
|
stationInfo.setStationId(stationId);
|
|
|
StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
|
|
|
if(stationInfos !=null && stationInfos.getCouponEnabledFlag().equals("1")){
|
|
|
+
|
|
|
UserCoupon userCoupon = new UserCoupon();
|
|
|
userCoupon.setStationId(stationId);
|
|
|
+ if(stationInfos.getCouponFlag().equals("1")){
|
|
|
+ userCoupon.setStationId(stationInfos.getGroupId());
|
|
|
+ }
|
|
|
userCoupon.setUnionId(unionId);
|
|
|
List<UserCoupon> userCoupons = couponService.selectUserCoupons(userCoupon);
|
|
|
resultData = ResultData.success(userCoupons);
|
|
@@ -144,110 +168,120 @@ public class CouponController {
|
|
|
ResultData resultData = null;
|
|
|
try{
|
|
|
logger.info("用户领取优惠券所需参数: unionId: "+ unionId+ "; 油站ID:" +stationId + "; 优惠券IDS:" + couponIds + "; 领取方式ID: " + couponIssueId);
|
|
|
- if(StringUtils.isNotBlank(couponIds)){
|
|
|
- String str[] = couponIds.split(",");
|
|
|
- List<String> ids = Arrays.asList(str);
|
|
|
- Coupon couponParam = new Coupon(); //查询优惠券参数
|
|
|
- UserCoupon userCouponParam = new UserCoupon(); //用户优惠券新增参数
|
|
|
+ StationInfo stationInfo = new StationInfo();
|
|
|
+ stationInfo.setStationId(stationId);
|
|
|
+ StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
|
|
|
+ if(stationInfos !=null && stationInfos.getCouponEnabledFlag().equals("1")){
|
|
|
+ if(StringUtils.isNotBlank(couponIds)){
|
|
|
+ String str[] = couponIds.split(",");
|
|
|
+ List<String> ids = Arrays.asList(str);
|
|
|
+ Coupon couponParam = new Coupon(); //查询优惠券参数
|
|
|
+ UserCoupon userCouponParam = new UserCoupon(); //用户优惠券新增参数
|
|
|
|
|
|
- //返回前端参数
|
|
|
- List<String> successCouponList= new ArrayList<>(); //领取成功的优惠券
|
|
|
- List<String> couponNumNEList= new ArrayList<>(); //优惠券数量不足
|
|
|
- List<String> couponHoldNumMaxList= new ArrayList<>(); //用户持有优惠券数量达到最大值
|
|
|
- List<String> notClaimedCouponList= new ArrayList<>(); //用户未领取的优惠券
|
|
|
- List<String> couponReceiveNumList= new ArrayList<>(); //用户累计的优惠券
|
|
|
+ //返回前端参数
|
|
|
+ List<String> successCouponList= new ArrayList<>(); //领取成功的优惠券
|
|
|
+ List<String> couponNumNEList= new ArrayList<>(); //优惠券数量不足
|
|
|
+ List<String> couponHoldNumMaxList= new ArrayList<>(); //用户持有优惠券数量达到最大值
|
|
|
+ List<String> notClaimedCouponList= new ArrayList<>(); //用户未领取的优惠券
|
|
|
+ List<String> couponReceiveNumList= new ArrayList<>(); //用户累计的优惠券
|
|
|
|
|
|
- //获取领取方式信息
|
|
|
- CouponIssue couponIssue = new CouponIssue();
|
|
|
- couponIssue.setStationId(stationId);
|
|
|
- couponIssue.setCouponIssueId(couponIssueId);
|
|
|
- List<CouponIssue> couponIssueList = couponService.selectCouponIssueList(couponIssue);
|
|
|
- if(couponIssueList !=null && couponIssueList.size() ==1){
|
|
|
- int couponSuccessNum =0; //用户优惠券领取成功张数 couponSuccess
|
|
|
- for(int i=0; i<ids.size(); i++){
|
|
|
- Integer couponId = Integer.valueOf(ids.get(i));
|
|
|
- couponParam.setId(couponId);
|
|
|
- //领取成功的张数与该领取方式在当前页最多领取的张数
|
|
|
- if(couponSuccessNum <= couponIssueList.get(0).getGiveLimit()) {
|
|
|
- Coupon coupon = couponService.selectCouponInfo(couponParam);
|
|
|
- //该优惠券是否存在
|
|
|
- if(coupon != null) {
|
|
|
- //该优惠券是否已被领完
|
|
|
- if(coupon.getCouponNum() != null && coupon.getCouponNum() > 0) {
|
|
|
- UserCoupon uc = new UserCoupon();
|
|
|
- uc.setIssueId(couponIssueId);
|
|
|
- uc.setStationId(stationId);
|
|
|
- uc.setUnionId(unionId);
|
|
|
- uc.setCouponId(coupon.getId());
|
|
|
- //获取该用户优惠券累计的张数
|
|
|
- int userCouponCountSum = couponService.selectUserCouponCount(uc);
|
|
|
- uc.setCouponIsUsed("0");
|
|
|
- //获取该用户所持有此优惠券的张数,即未使用的优惠券
|
|
|
- int userCouponCountNoUsed = couponService.selectUserCouponCount(uc);
|
|
|
- //获取该用户
|
|
|
- if(userCouponCountNoUsed <= coupon.getCouponHoldNum()){
|
|
|
- if(userCouponCountSum <= coupon.getCouponReceiveNum()){
|
|
|
- userCouponParam.setCouponIsUsed("0"); //是否使用:0、未使用;1、已使用;
|
|
|
- long currentTimeMillis = System.currentTimeMillis();
|
|
|
- String s = stationId + Long.toString(currentTimeMillis) + Math.round((Math.random() + 1) * 1000);
|
|
|
- userCouponParam.setCouponNo(s); //优惠券编码
|
|
|
- userCouponParam.setUnionId(unionId); //用户unionId
|
|
|
- userCouponParam.setIssueId(couponIssueId); //领取方式ID
|
|
|
- userCouponParam.setCouponId(coupon.getId()); //优惠券ID
|
|
|
- userCouponParam.setStationId(stationId); //油站ID
|
|
|
- userCouponParam.setCouponIsEffective("1"); //优惠券是否有效
|
|
|
- userCouponParam.setGetCouponTime(new Date()); //优惠券领取时间
|
|
|
- String effectiveTimeType = coupon.getEffectiveTimeType();
|
|
|
- //'有效时间类型: 1,固定时间;2,领取后x天内有效'
|
|
|
- switch (effectiveTimeType) {
|
|
|
- case "1":
|
|
|
- userCouponParam.setCouponEffectiveTime(coupon.getEffectiveTimeEnd()); //优惠券有效期截止时间
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
- calendar.setTime(userCouponParam.getGetCouponTime());
|
|
|
- calendar.add(Calendar.DATE, coupon.getEffectiveDayNum()); //领取后多少天有效
|
|
|
- userCouponParam.setCouponEffectiveTime(calendar.getTime()); //优惠券有效期截止时间
|
|
|
- break;
|
|
|
- }
|
|
|
- if(couponService.addUserCoupon(userCouponParam) == 1) {
|
|
|
- //领取成功
|
|
|
- successCouponList.add(couponId.toString());
|
|
|
- //领取成功后次数 +1
|
|
|
- couponSuccessNum++;
|
|
|
+ //获取领取方式信息
|
|
|
+ CouponIssue couponIssue = new CouponIssue();
|
|
|
+ couponIssue.setStationId(stationId);
|
|
|
+ if(stationInfos.getCouponFlag().equals("1")){
|
|
|
+ couponIssue.setStationId(stationInfos.getGroupId());
|
|
|
+ }
|
|
|
+ couponIssue.setCouponIssueId(couponIssueId);
|
|
|
+ List<CouponIssue> couponIssueList = couponService.selectCouponIssueList(couponIssue);
|
|
|
+ if(couponIssueList !=null && couponIssueList.size() ==1){
|
|
|
+ int couponSuccessNum =0; //用户优惠券领取成功张数 couponSuccess
|
|
|
+ for(int i=0; i<ids.size(); i++){
|
|
|
+ Integer couponId = Integer.valueOf(ids.get(i));
|
|
|
+ couponParam.setId(couponId);
|
|
|
+ //领取成功的张数与该领取方式在当前页最多领取的张数
|
|
|
+ if(couponSuccessNum <= couponIssueList.get(0).getGiveLimit()) {
|
|
|
+ Coupon coupon = couponService.selectCouponInfo(couponParam);
|
|
|
+ //该优惠券是否存在
|
|
|
+ if(coupon != null) {
|
|
|
+ //该优惠券是否已被领完
|
|
|
+ if(coupon.getCouponNum() != null && coupon.getCouponNum() > 0) {
|
|
|
+ UserCoupon uc = new UserCoupon();
|
|
|
+ uc.setIssueId(couponIssueId);
|
|
|
+ uc.setStationId(stationId);
|
|
|
+ uc.setUnionId(unionId);
|
|
|
+ uc.setCouponId(coupon.getId());
|
|
|
+ //获取该用户优惠券累计的张数
|
|
|
+ int userCouponCountSum = couponService.selectUserCouponCount(uc);
|
|
|
+ uc.setCouponIsUsed("0");
|
|
|
+ //获取该用户所持有此优惠券的张数,即未使用的优惠券
|
|
|
+ int userCouponCountNoUsed = couponService.selectUserCouponCount(uc);
|
|
|
+ //获取该用户
|
|
|
+ if(userCouponCountNoUsed <= coupon.getCouponHoldNum()){
|
|
|
+ if(userCouponCountSum <= coupon.getCouponReceiveNum()){
|
|
|
+ userCouponParam.setCouponIsUsed("0"); //是否使用:0、未使用;1、已使用;
|
|
|
+ long currentTimeMillis = System.currentTimeMillis();
|
|
|
+ String s = stationId + Long.toString(currentTimeMillis) + Math.round((Math.random() + 1) * 1000);
|
|
|
+ userCouponParam.setCouponNo(s); //优惠券编码
|
|
|
+ userCouponParam.setUnionId(unionId); //用户unionId
|
|
|
+ userCouponParam.setIssueId(couponIssueId); //领取方式ID
|
|
|
+ userCouponParam.setCouponId(coupon.getId()); //优惠券ID
|
|
|
+ userCouponParam.setStationId(stationId); //油站ID
|
|
|
+ userCouponParam.setCouponIsEffective("1"); //优惠券是否有效
|
|
|
+ userCouponParam.setGetCouponTime(new Date()); //优惠券领取时间
|
|
|
+ String effectiveTimeType = coupon.getEffectiveTimeType();
|
|
|
+ //'有效时间类型: 1,固定时间;2,领取后x天内有效'
|
|
|
+ switch (effectiveTimeType) {
|
|
|
+ case "1":
|
|
|
+ userCouponParam.setCouponEffectiveTime(coupon.getEffectiveTimeEnd()); //优惠券有效期截止时间
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(userCouponParam.getGetCouponTime());
|
|
|
+ calendar.add(Calendar.DATE, coupon.getEffectiveDayNum()); //领取后多少天有效
|
|
|
+ userCouponParam.setCouponEffectiveTime(calendar.getTime()); //优惠券有效期截止时间
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(couponService.addUserCoupon(userCouponParam) == 1) {
|
|
|
+ //领取成功
|
|
|
+ successCouponList.add(couponId.toString());
|
|
|
+ //领取成功后次数 +1
|
|
|
+ couponSuccessNum++;
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //用户累计领取已达到最大值
|
|
|
+ couponReceiveNumList.add(couponId.toString());
|
|
|
}
|
|
|
}else {
|
|
|
- //用户累计领取已达到最大值
|
|
|
- couponReceiveNumList.add(couponId.toString());
|
|
|
+ //用户持有数量超出
|
|
|
+ couponHoldNumMaxList.add(couponId.toString());
|
|
|
}
|
|
|
}else {
|
|
|
- //用户持有数量超出
|
|
|
- couponHoldNumMaxList.add(couponId.toString());
|
|
|
+ //优惠券数量不足
|
|
|
+ couponNumNEList.add(couponId.toString());
|
|
|
}
|
|
|
- }else {
|
|
|
- //优惠券数量不足
|
|
|
- couponNumNEList.add(couponId.toString());
|
|
|
}
|
|
|
+ }else {
|
|
|
+ //未领取的优惠券
|
|
|
+ notClaimedCouponList.add(couponId.toString());
|
|
|
}
|
|
|
- }else {
|
|
|
- //未领取的优惠券
|
|
|
- notClaimedCouponList.add(couponId.toString());
|
|
|
}
|
|
|
+ //领取成功
|
|
|
+ Map<String, Object> resultMap = new HashMap<>();
|
|
|
+ resultMap.put("successCouponList", successCouponList);
|
|
|
+ resultMap.put("couponNumNEList", couponNumNEList);
|
|
|
+ resultMap.put("couponHoldNumMaxList", couponHoldNumMaxList);
|
|
|
+ resultMap.put("notClaimedCouponList", notClaimedCouponList);
|
|
|
+ resultMap.put("couponReceiveNumList", couponReceiveNumList);
|
|
|
+ logger.info("用户领取到的优惠券:" + resultMap.toString());
|
|
|
+ resultData = ResultData.success(resultMap);
|
|
|
+ }else {
|
|
|
+ resultData = ResultData.error(CodeMsg.NO_COUPON_ISSUE);
|
|
|
}
|
|
|
- //领取成功
|
|
|
- Map<String, Object> resultMap = new HashMap<>();
|
|
|
- resultMap.put("successCouponList", successCouponList);
|
|
|
- resultMap.put("couponNumNEList", couponNumNEList);
|
|
|
- resultMap.put("couponHoldNumMaxList", couponHoldNumMaxList);
|
|
|
- resultMap.put("notClaimedCouponList", notClaimedCouponList);
|
|
|
- resultMap.put("couponReceiveNumList", couponReceiveNumList);
|
|
|
- logger.info("用户领取到的优惠券:" + resultMap.toString());
|
|
|
- resultData = ResultData.success(resultMap);
|
|
|
}else {
|
|
|
- resultData = ResultData.error(CodeMsg.YEWU_FAIL,"该领取方式不存在");
|
|
|
+ resultData = ResultData.success(CodeMsg.SUCCESS);
|
|
|
}
|
|
|
}else {
|
|
|
- resultData = ResultData.success(CodeMsg.SUCCESS);
|
|
|
+ resultData = ResultData.error(CodeMsg.NO_ENABLE_COUPON);
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|