From ed9e2fdb519f36c743a10f0a1de48ad5f87604d6 Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期三, 27 二月 2019 16:05:28 +0800 Subject: [PATCH] 券状态更新 --- fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java | 97 +++++++++++++++++++++++++++++++++--------------- 1 files changed, 66 insertions(+), 31 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java index 51f8969..241e5ab 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserCouponController.java @@ -1,17 +1,16 @@ package com.yeshi.fanli.controller.client; import java.io.PrintWriter; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; +import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.yeshi.utils.DateUtil; import org.yeshi.utils.JsonUtil; import com.yeshi.fanli.entity.accept.AcceptData; @@ -21,10 +20,12 @@ import com.yeshi.fanli.entity.bus.user.UserSystemCoupon; import com.yeshi.fanli.entity.system.SystemCoupon; import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; +import com.yeshi.fanli.exception.user.UserInfoExtraException; import com.yeshi.fanli.exception.user.UserSystemCouponException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.config.SystemCouponService; import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService; +import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.order.CommonOrderCountService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.user.DeviceLotteryRecordService; @@ -44,6 +45,9 @@ @Controller @RequestMapping("api/v1/user/coupon") public class UserCouponController { + + @Resource(name = "taskExecutor") + private TaskExecutor executor; @Resource private ConfigService configService; @@ -72,6 +76,8 @@ @Resource private CommonOrderCountService commonOrderCountService; + @Resource + private ThreeSaleSerivce threeSaleSerivce; // 鏈�澶ф娊濂栨鏁� private static int MAX_COUNT = 5; @@ -120,6 +126,26 @@ data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList)); out.print(JsonUtil.loadTrueResult(data)); + + // 鏇存柊绂忓埄涓績鏈鏁伴噺 + if (page == 1) { + executor.execute(new Runnable() { + @Override + public void run() { + UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); + // 鏈鍒告槸鍚﹀ぇ浜�0 + if (userInfoExtra != null && userInfoExtra.getCouponNews() > 0) { + userInfoExtra.setCouponNews(0); + try { + userInfoExtraService.saveUserInfoExtra(userInfoExtra); + } catch (UserInfoExtraException e) { + e.printStackTrace(); + } + } + + } + }); + } } catch (UserSystemCouponException e) { out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); @@ -368,6 +394,7 @@ // 濂栧搧 int count = 0; String prize = ""; + String hasPrize = ""; Long couponId = null; if (uid == null) { // 鏈櫥褰� @@ -387,7 +414,7 @@ JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璁惧涓嶅瓨鍦�")); return; } - int hasPrize = 0; + int countPrize = 0; List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType, device); @@ -395,25 +422,40 @@ JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "鎶藉娆℃暟涓嶈冻")); return; } else if (list != null && list.size() < MAX_COUNT) { // 鎷ユ湁鎶藉鏈轰細 + for (DeviceLotteryRecord deviceLotteryRecord : list) { Long systemCouponId = deviceLotteryRecord.getSystemCouponId(); if (systemCouponId != null) { - hasPrize++; + countPrize++; couponId = systemCouponId; } + + if (countPrize == 1) { + SystemCoupon coupon = systemCouponService.selectByPrimaryKey(systemCouponId); + hasPrize = coupon.getType().name(); + } } + + count = MAX_COUNT - 1 - list.size(); + + } else { count = MAX_COUNT - 1; } // 濂栧搧 - prize = getLotteryPrize(MAX_COUNT, hasPrize, list.size(), couponId); + prize = getLotteryPrize(MAX_COUNT, countPrize, list.size(), couponId); // 鎶戒腑 Long newCouponId = null; if (prize != null && prize.trim().length() > 0) { - SystemCoupon coupon= systemCouponService.getCouponByType(prize); - newCouponId =coupon.getId(); + // 宸插瓨鍦ㄦ鍒� + if (hasPrize.equals(prize)) { + prize = null; + } else { + SystemCoupon coupon= systemCouponService.getCouponByType(prize); + newCouponId = coupon.getId(); + } } // 鎻掑叆璁板綍 @@ -442,34 +484,21 @@ List<UserSystemCoupon> list = userSystemCouponService.getUserCouponBySource(uid, UserSystemCoupon.SOURCE_CHOUJIANG); if (list != null && list.size() == 1) { couponId = list.get(0).getSystemCoupon().getId(); + SystemCoupon coupon = systemCouponService.selectByPrimaryKey(couponId); + hasPrize = coupon.getType().name(); } // 濂栧搧 prize = getLotteryPrize(MAX_COUNT, list.size(), MAX_COUNT- lotteryNewbies, couponId); // 鎶戒腑 if (prize != null && prize.trim().length() > 0) { - SystemCoupon coupon= systemCouponService.getCouponByType(prize); - String endDay = DateUtil.plusDay(coupon.getExpiryDay(), new Date()); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - Date endTime = format.parse(endDay); - - int stateActivated = 1; - if (coupon.getType() == CouponTypeEnum.welfareFreeCoupon) { - stateActivated = 0; + if (hasPrize.equals(prize)) { + prize = null; + } else { + // 鎻掑叆鍒镐俊鎭� + userSystemCouponService.insertUserCoupon(uid, prize, UserSystemCoupon.SOURCE_CHOUJIANG); } - - UserSystemCoupon userCoupon = new UserSystemCoupon(); - userCoupon.setUid(uid); - userCoupon.setSource(UserSystemCoupon.SOURCE_CHOUJIANG); - userCoupon.setSystemCoupon(coupon); - userCoupon.setState(UserSystemCoupon.STATE_CAN_USE); - userCoupon.setStateActivated(stateActivated); - userCoupon.setStartTime(new Date()); - userCoupon.setEndTime(endTime); - userCoupon.setCreateTime(new Date()); - userCoupon.setUpdateTime(new Date()); - userSystemCouponService.insertSelective(userCoupon); } // 鍓╀綑娆℃暟 @@ -501,13 +530,13 @@ * @param couponId 鍒竔d * @return */ - public String getLotteryPrize(int maxCount, int hasPrize, int record, Long couponId) { + public String getLotteryPrize(int maxCount, int countPrize, int record, Long couponId) { String prize = null; String freeCoupon = CouponTypeEnum.welfareFreeCoupon.name(); // 绂忓埄鍏嶈垂鍒� String rebateCoupon = CouponTypeEnum.rebatePercentCoupon.name(); // 濂栧姳鍒� - if (hasPrize == 1 && record == maxCount - 1) { + if (countPrize == 1 && record == maxCount - 1) { // 鏈�鍚庝竴娆★細 鍙敹鍒颁竴涓鍝� SystemCoupon systemCoupon = systemCouponService.selectByPrimaryKey(couponId); if (systemCoupon != null) { @@ -521,7 +550,7 @@ prize = rebateCoupon; // 濂栧姳鍒� } - } else if (hasPrize == 0 && record == maxCount - 2) { + } else if (countPrize == 0 && record == maxCount - 2) { // 鍓�3娆℃病鏈夊鍔辨椂銆佸悗闈袱娆″繀涓� long result = (1 + Math.round(Math.random() * (9))); if (result <= 5) { @@ -532,7 +561,7 @@ } else { // 澶т簬3娆℃満浼� - if (hasPrize < 2) { // 涓嶈冻涓や釜濂栧搧 + if (countPrize < 2) { // 涓嶈冻涓や釜濂栧搧 long result = (1 + Math.round(Math.random() * (9))); if (result <= 3) { prize = freeCoupon; // 绂忓埄鍏嶈垂鍒� @@ -545,6 +574,12 @@ return prize; } + + + public static void main(String[] args) { + long result = (1 + Math.round(Math.random() * (9))); + System.out.println(result); + } /** -- Gitblit v1.8.0