|
@@ -5,14 +5,17 @@ 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.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 io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.stereotype.Controller;
|
|
@@ -29,7 +32,7 @@ import java.util.*;
|
|
|
* @Author JK
|
|
|
* @Date 2021年7月6日
|
|
|
*/
|
|
|
-@RestController
|
|
|
+@Controller
|
|
|
@YiJiaRequest()
|
|
|
@CrossOrigin
|
|
|
@Api(tags = "优惠券")
|
|
@@ -38,32 +41,40 @@ public class CouponController {
|
|
|
|
|
|
@Resource
|
|
|
private CouponService couponService;
|
|
|
-
|
|
|
+ @Resource
|
|
|
+ private StationService stationService;
|
|
|
|
|
|
/**
|
|
|
* 获取油站分发优惠券
|
|
|
* @param stationId 油站ID
|
|
|
* @param couponIssueId 发放方式ID
|
|
|
- * @param unionId 用户unionId
|
|
|
* @return
|
|
|
*/
|
|
|
@RequestMapping(value = "/selectStaGrantCouponList", method = RequestMethod.GET)
|
|
|
@Transactional
|
|
|
+ @ResponseBody
|
|
|
@ApiOperation(value = "获取油站已发放的优惠券信息", httpMethod = "GET", notes = "获取油站已发放的优惠券信息")
|
|
|
public String selectStaGrantCouponList(@ApiParam(value = "油站ID", required = true) @RequestParam Integer stationId,
|
|
|
- @ApiParam(value = "发放方式ID", required = true) @RequestParam Integer couponIssueId,
|
|
|
- @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;
|
|
|
try {
|
|
|
- Coupon coupon = new Coupon();
|
|
|
- coupon.setStationId(stationId);
|
|
|
- coupon.setCouponIssueId(couponIssueId);
|
|
|
- coupon.setUnionId(unionId);
|
|
|
- //领取油站所分发的优惠券
|
|
|
- List<Coupon> coupons = couponService.selectStaGrantCouponList(coupon);
|
|
|
- resultData = ResultData.success(coupons);
|
|
|
+ StationInfo stationInfo = new StationInfo();
|
|
|
+ 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);
|
|
|
+ }else {
|
|
|
+ resultData = ResultData.error(CodeMsg.NO_ENABLE_COUPON);
|
|
|
+ }
|
|
|
}catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
logger.error("获取油站已发放的优惠券错误信息:" + e.getMessage());
|
|
|
resultData = ResultData.error(CodeMsg.SEARCH_FAIL);
|
|
|
}
|
|
@@ -73,6 +84,7 @@ public class CouponController {
|
|
|
|
|
|
//获取优惠券信息
|
|
|
@RequestMapping(value = "/selectCouponInfo", method = RequestMethod.GET)
|
|
|
+ @ResponseBody
|
|
|
@ApiOperation(value = "获取优惠券信息", httpMethod = "GET", notes = "获取优惠券信息")
|
|
|
public String selectCouponInfo(@ApiParam(value = "优惠券ID", required = true) @RequestParam Integer id){
|
|
|
Gson gson =new Gson();
|
|
@@ -83,6 +95,7 @@ public class CouponController {
|
|
|
Coupon couponInfo = couponService.selectCouponInfo(coupon);
|
|
|
resultData = ResultData.success(couponInfo);
|
|
|
}catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
logger.error("获取优惠券错误信息:" + e.getMessage());
|
|
|
resultData = ResultData.error(CodeMsg.SEARCH_FAIL);
|
|
|
}
|
|
@@ -91,18 +104,27 @@ public class CouponController {
|
|
|
|
|
|
//获取客户所拥有的优惠券
|
|
|
@RequestMapping(value = "/selectUserCoupons", method = RequestMethod.GET)
|
|
|
+ @ResponseBody
|
|
|
@ApiOperation(value = "获取客户所拥有的优惠券", httpMethod = "GET", notes = "获取客户所拥有的优惠券")
|
|
|
public String selectUserCoupons(@ApiParam(value = "油站ID", required = true) @RequestParam Integer stationId,
|
|
|
@ApiParam(value = "用户unionId", required = true) @RequestParam String unionId){
|
|
|
Gson gson =new Gson();
|
|
|
ResultData resultData = null;
|
|
|
try {
|
|
|
- UserCoupon userCoupon = new UserCoupon();
|
|
|
- userCoupon.setStationId(stationId);
|
|
|
- userCoupon.setUnionId(unionId);
|
|
|
- List<UserCoupon> userCoupons = couponService.selectUserCoupons(userCoupon);
|
|
|
- resultData = ResultData.success(userCoupons);
|
|
|
+ StationInfo stationInfo = new StationInfo();
|
|
|
+ stationInfo.setStationId(stationId);
|
|
|
+ StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
|
|
|
+ if(stationInfos !=null && stationInfos.getCouponEnabledFlag().equals("1")){
|
|
|
+ UserCoupon userCoupon = new UserCoupon();
|
|
|
+ userCoupon.setStationId(stationId);
|
|
|
+ userCoupon.setUnionId(unionId);
|
|
|
+ List<UserCoupon> userCoupons = couponService.selectUserCoupons(userCoupon);
|
|
|
+ resultData = ResultData.success(userCoupons);
|
|
|
+ }else {
|
|
|
+ resultData = ResultData.error(CodeMsg.NO_ENABLE_COUPON);
|
|
|
+ }
|
|
|
}catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
logger.error("获取客户所拥有的优惠券错误信息:" + e.getMessage());
|
|
|
resultData = ResultData.error(CodeMsg.SEARCH_FAIL);
|
|
|
}
|
|
@@ -110,92 +132,126 @@ public class CouponController {
|
|
|
}
|
|
|
|
|
|
//用户领取优惠券
|
|
|
- @RequestMapping(value = "/addUserCoupon", method = RequestMethod.GET)
|
|
|
+ @RequestMapping(value = "/addUserCoupon", method = RequestMethod.POST)
|
|
|
+ @ResponseBody
|
|
|
@Transactional
|
|
|
- @ApiOperation(value = "用户领取优惠券", httpMethod = "GET", notes = "用户领取优惠券")
|
|
|
+ @ApiOperation(value = "用户领取优惠券", httpMethod = "POST", notes = "用户领取优惠券")
|
|
|
public String addUserCoupon(@ApiParam(value = "用户unionId", required = true) @RequestParam String unionId,
|
|
|
- @ApiParam(value = "优惠券IDS", required = true) @RequestParam List<Integer> ids,
|
|
|
- @ApiParam(value = "领取方式ID", required = true) @RequestParam Integer couponIssueId,
|
|
|
+ @ApiParam(value = "优惠券IDS", required = true) @RequestParam String couponIds,
|
|
|
+ @ApiParam(value = "领取方式ID", required = true) @RequestParam String couponIssueId,
|
|
|
@ApiParam(value = "油站ID", required = true) @RequestParam Integer stationId){
|
|
|
Gson gson = new Gson();
|
|
|
ResultData resultData = null;
|
|
|
try{
|
|
|
- Coupon couponParam = new Coupon(); //查询优惠券参数
|
|
|
- UserCoupon userCouponParam = new UserCoupon(); //用户优惠券新增参数
|
|
|
- List<Map<String, Object>> successCouponList= new ArrayList<>(); //领取成功的优惠券
|
|
|
- List<Map<String, Object>> failCouponList= new ArrayList<>(); //领取失败的优惠券
|
|
|
- Map<String, Object> failMap = new HashMap<>(); //领取失败的优惠券失败原因
|
|
|
- Map<String, Object> successMap = new HashMap<>(); //领取成功的优惠券信息
|
|
|
- //获取领取方式信息
|
|
|
- CouponIssue couponIssue = new CouponIssue();
|
|
|
- couponIssue.setStationId(stationId);
|
|
|
- couponIssue.setCouponIssueId(couponIssueId);
|
|
|
- List<CouponIssue> couponIssueList = couponService.selectCouponIssueList(couponIssue);
|
|
|
- if(couponIssueList !=null && couponIssueList.size() ==1){
|
|
|
- int cs =0; //用户优惠券领取成功张数 couponSuccess
|
|
|
- //领取成功的张数与该领取方式在当前页最多领取的张数
|
|
|
- if(cs <= couponIssueList.get(0).getGiveLimit()){
|
|
|
+ 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(); //用户优惠券新增参数
|
|
|
+
|
|
|
+ //返回前端参数
|
|
|
+ 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 = ids.get(i);
|
|
|
+ Integer couponId = Integer.valueOf(ids.get(i));
|
|
|
couponParam.setId(couponId);
|
|
|
- Coupon coupon = couponService.selectCouponInfo(couponParam);
|
|
|
- //该优惠券是否存在
|
|
|
- if(coupon !=null){
|
|
|
- //该优惠券是否已被领完
|
|
|
- if(coupon.getCouponNum() !=null && coupon.getCouponNum() >0){
|
|
|
- userCouponParam.setCouponIsUsed("0"); //是否使用:0、未使用;1、已使用;
|
|
|
- userCouponParam.setCouponNo(""); //优惠券编码
|
|
|
- userCouponParam.setUnionId(unionId); //用户unionId
|
|
|
- userCouponParam.setCouponId(coupon.getId()); //优惠券ID
|
|
|
- userCouponParam.setStationId(stationId); //油站ID
|
|
|
- userCouponParam.setCouponIsEffective("1"); //优惠券是否有效
|
|
|
- userCouponParam.setGetCouponTime(new Date()); //优惠券领取时间
|
|
|
- userCouponParam.setGetCouponOrigin("1"); //优惠券来源
|
|
|
- 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;
|
|
|
- }
|
|
|
- //获取该用户所持有此优惠券的张数
|
|
|
- int userCouponCount = couponService.selectUserCouponCount(userCouponParam);
|
|
|
- if(userCouponCount > coupon.getCouponHoldNum()){
|
|
|
- failMap.put("领取失败,该用户所持有此优惠券已达到最大数量", coupon.getId());
|
|
|
- failCouponList.add(failMap);
|
|
|
- }else {
|
|
|
- int auc = couponService.addUserCoupon(userCouponParam);
|
|
|
- if(auc ==1){
|
|
|
- successMap.put("领取成功", coupon.getId());
|
|
|
- successCouponList.add(successMap);
|
|
|
- //领取成功后次数加1
|
|
|
- cs++;
|
|
|
+ //领取成功的张数与该领取方式在当前页最多领取的张数
|
|
|
+ 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 {
|
|
|
+ //用户持有数量超出
|
|
|
+ couponHoldNumMaxList.add(couponId.toString());
|
|
|
}
|
|
|
+ }else {
|
|
|
+ //优惠券数量不足
|
|
|
+ couponNumNEList.add(couponId.toString());
|
|
|
}
|
|
|
- }else {
|
|
|
- failMap.put("领取失败,该优惠券已被领完", coupon.getId());
|
|
|
- failCouponList.add(failMap);
|
|
|
}
|
|
|
+ }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.YEWU_FAIL,"该领取方式不存在");
|
|
|
}
|
|
|
- //领取成功
|
|
|
- Map<String, Object> resultMap = new HashMap<>();
|
|
|
- resultMap.put("successCouponList", successCouponList);
|
|
|
- resultMap.put("failCouponList", failCouponList);
|
|
|
- logger.info("用户领取到的优惠券:" + resultMap.toString());
|
|
|
- resultData = ResultData.success(CodeMsg.SUCCESS);
|
|
|
}else {
|
|
|
- resultData = ResultData.error(CodeMsg.YEWU_FAIL,"该领取方式不存在");
|
|
|
+ resultData = ResultData.success(CodeMsg.SUCCESS);
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
- logger.error("用户领取优惠券错误信息:" + e.getMessage());
|
|
|
+ e.printStackTrace();
|
|
|
+ //logger.error("用户领取优惠券错误信息:" + e.getMessage());
|
|
|
resultData = ResultData.error(CodeMsg.INSERT_FAIL);
|
|
|
}
|
|
|
return gson.toJson(resultData);
|