| | |
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | |
| | | import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
|
| | | import com.yeshi.fanli.entity.bus.user.DeviceLotteryRecord;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
|
| | | import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
|
| | | import com.yeshi.fanli.entity.bus.user.UserLotteryRecord;
|
| | | 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.UserLotteryRecordException;
|
| | | 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;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
| | | import com.yeshi.fanli.service.inter.user.UserLotteryRecordService;
|
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.vo.user.UserSystemCouponRecordVO;
|
| | |
| | | private ConfigService configService;
|
| | |
|
| | | @Resource
|
| | | private SystemCouponService systemCouponService;
|
| | | |
| | | @Resource
|
| | | private UserSystemCouponService UserSystemCouponService;
|
| | |
|
| | | @Resource
|
| | |
| | | private DeviceLotteryRecordService deviceLotteryRecordService;
|
| | |
|
| | | @Resource
|
| | | private SystemCouponService systemCouponService;
|
| | |
|
| | | @Resource
|
| | | private UserSystemCouponService userSystemCouponService;
|
| | |
|
| | | @Resource
|
| | | private UserInfoExtraService userInfoExtraService;
|
| | |
|
| | | |
| | | @Resource
|
| | | private CommonOrderCountService commonOrderCountService;
|
| | |
|
| | | @Resource
|
| | | private ThreeSaleSerivce threeSaleSerivce;
|
| | | private UserLotteryRecordService userLotteryRecordService;
|
| | | |
| | |
|
| | |
|
| | | /**
|
| | |
| | | topPicture = listswiper.get(0).getSrc();
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | | boolean changeJump = false;
|
| | | String version = acceptData.getVersion();
|
| | | int tversion = Integer.parseInt(version);
|
| | | String platform = acceptData.getPlatform();
|
| | | if ("android".equalsIgnoreCase(platform) && tversion > 34) {
|
| | | changeJump = true;
|
| | | } else if (tversion > 44){
|
| | | changeJump = true;
|
| | | }
|
| | | |
| | | long count = 0;
|
| | | List<UserSystemCouponVO> resultList = UserSystemCouponService
|
| | | .getUserCouponVOList((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid);
|
| | | .getUserCouponVOList((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, changeJump);
|
| | |
|
| | | if (resultList != null && resultList.size() > 0) {
|
| | | count = UserSystemCouponService.countUserCouponList(uid);
|
| | |
| | | @RequestMapping(value = "getLotteryCount")
|
| | | public void getLotteryCount(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | try {
|
| | | // 默认最大抽奖次数
|
| | | int count = 5;
|
| | |
|
| | | if (uid == null || uid == 0) { // 未登录
|
| | | int platformType = 0;
|
| | | String platform = acceptData.getPlatform();
|
| | | if ("android".equals(platform)) {
|
| | | platformType = 1;
|
| | | } else if ("ios".equals(platform)) {
|
| | | platformType = 2;
|
| | | } else {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("平台有误"));
|
| | | return;
|
| | | }
|
| | |
|
| | | String device = acceptData.getDevice();
|
| | | if (device == null || device.trim().length() == 0) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("设备不存在"));
|
| | | return;
|
| | | }
|
| | |
|
| | | List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType,
|
| | | device);
|
| | | if (list != null && list.size() > 0) {
|
| | | count = count - list.size();
|
| | | }
|
| | |
|
| | | } else { // 已登录
|
| | | UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
|
| | | if (userInfoExtra == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户信息不存在"));
|
| | | return;
|
| | | }
|
| | |
|
| | | Integer lotteryNewbies = userInfoExtra.getLotteryNewbies();
|
| | | if (lotteryNewbies == null) { // 未抽过
|
| | | // 是否有过订单:返利、分享订单
|
| | | boolean hasOrder = commonOrderCountService.hasRebateAndShareOrder(uid);
|
| | | if (hasOrder) {
|
| | | count = 0; // 不算新用户
|
| | | }
|
| | | userInfoExtra.setLotteryNewbies(count);
|
| | | userInfoExtraService.saveUserInfoExtra(userInfoExtra);
|
| | | } else {
|
| | | count = lotteryNewbies; // 剩余次数
|
| | | }
|
| | | // 1、已登录系统
|
| | | if (uid != null) {
|
| | | JSONObject data = userLotteryRecordService.getLotteryCountNewbies(uid);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
| | | return;
|
| | | }
|
| | |
|
| | | // 2、未登录系统 - 记录设备
|
| | | int platformType = 0;
|
| | | String platform = acceptData.getPlatform();
|
| | | if ("android".equals(platform)) {
|
| | | platformType = 1;
|
| | | } else if ("ios".equals(platform)) {
|
| | | platformType = 2;
|
| | | } else {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("平台有误"));
|
| | | return;
|
| | | }
|
| | |
|
| | | String device = acceptData.getDevice();
|
| | | if (device == null || device.trim().length() == 0) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("设备不存在"));
|
| | | return;
|
| | | }
|
| | |
|
| | | List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType, device);
|
| | | int count = UserLotteryRecord.COUNT_NEWBIES;
|
| | | if (list != null && list.size() > 0) {
|
| | | count = count - list.size();
|
| | | }
|
| | | // 抽奖规则
|
| | | String lotteryRule = configService.get("lottery_rule_newbies");
|
| | |
|
| | | |
| | | JSONObject data = new JSONObject();
|
| | | data.put("count", count);
|
| | | data.put("rule", lotteryRule);
|
| | |
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
| | |
|
| | | } catch (UserLotteryRecordException e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
|
| | | e.printStackTrace();
|
| | |
| | |
|
| | | /**
|
| | | * 获取抽奖结果
|
| | | * |
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | |
| | | public void getLotteryResult(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | |
|
| | | try {
|
| | | // 剩余抽奖次数
|
| | | int count = 0;
|
| | | // 本次抽中的奖品
|
| | | String prize = null;
|
| | | // 1、已登录用户抽奖
|
| | | if (uid != null) {
|
| | | Map<String, Object> map = userLotteryRecordService.executeLotteryNewbies(uid);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(map));
|
| | | return;
|
| | | } |
| | |
|
| | | // 已使用抽奖次数
|
| | | int countUsed = 0;
|
| | | // 已拥有奖品数量
|
| | | int countPrize = 0;
|
| | | // 已有券类型
|
| | | String couponType = null;
|
| | |
|
| | | if (uid == null || uid == 0) { // 未登录
|
| | | int platformType = 0;
|
| | | String platform = acceptData.getPlatform();
|
| | | if ("android".equals(platform)) {
|
| | | platformType = 1;
|
| | | } else if ("ios".equals(platform)) {
|
| | | platformType = 2;
|
| | | } else {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("平台有误"));
|
| | | return;
|
| | | }
|
| | |
|
| | | String device = acceptData.getDevice();
|
| | | if (device == null || device.trim().length() == 0) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("设备不存在"));
|
| | | return;
|
| | | }
|
| | |
|
| | | List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType,
|
| | | device);
|
| | | if (list != null && list.size() >= Constant.MAX_COUNT_LOTTERY_NEWBIES) { // 无抽奖机会
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "抽奖次数不足"));
|
| | | return;
|
| | | } |
| | | |
| | | Long couponId = null;
|
| | | |
| | | if (list == null || list.size() == 0) { // 拥有抽奖机会
|
| | | count = Constant.MAX_COUNT_LOTTERY_NEWBIES - 1;
|
| | | } else {
|
| | | |
| | | for (DeviceLotteryRecord deviceLotteryRecord : list) {
|
| | | Long systemCouponId = deviceLotteryRecord.getSystemCouponId();
|
| | | if (systemCouponId != null) {
|
| | | countPrize++;
|
| | | couponId = systemCouponId;
|
| | | }
|
| | | }
|
| | | count = Constant.MAX_COUNT_LOTTERY_NEWBIES - 1 - list.size();
|
| | | }
|
| | | |
| | | // 奖品小于2时才抽奖
|
| | | if (countPrize < 2) {
|
| | | if (couponId != null) {
|
| | | SystemCoupon coupon = systemCouponService.selectByPrimaryKey(couponId);
|
| | | // 已有券
|
| | | couponType = coupon.getType().name();
|
| | | }
|
| | | // 奖品
|
| | | prize = getLotteryPrize(Constant.MAX_COUNT_LOTTERY_NEWBIES, countPrize, list.size(), couponType);
|
| | | }
|
| | | |
| | | // 抽中
|
| | | Long newCouponId = null;
|
| | | if (prize != null && prize.trim().length() > 0) {
|
| | | // 已存在此券
|
| | | if (prize.equals(couponType)) {
|
| | | prize = null;
|
| | | } else {
|
| | | SystemCoupon coupon = systemCouponService.getCouponByType(prize);
|
| | | if (coupon != null) {
|
| | | newCouponId = coupon.getId();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | // 插入记录
|
| | | DeviceLotteryRecord record = new DeviceLotteryRecord();
|
| | | record.setDevice(device);
|
| | | record.setPlatform(platformType);
|
| | | record.setSystemCouponId(newCouponId);
|
| | | record.setCreateTime(new Date());
|
| | | deviceLotteryRecordService.insertSelective(record);
|
| | |
|
| | | } else { // 已登录
|
| | | |
| | | UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
|
| | | if (userInfoExtra == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("信息不正确"));
|
| | | return;
|
| | | }
|
| | |
|
| | | // 剩余抽奖次数
|
| | | Integer lotteryNewbies = userInfoExtra.getLotteryNewbies();
|
| | | if (lotteryNewbies == null || lotteryNewbies < 1) { // 次数已用光
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "抽奖次数不足"));
|
| | | return;
|
| | | } |
| | | |
| | | // 剩余次数
|
| | | count = lotteryNewbies - 1; |
| | | // 已使用次数
|
| | | countUsed = Constant.MAX_COUNT_LOTTERY_NEWBIES - lotteryNewbies;
|
| | | |
| | |
|
| | | // 已抽中的奖品
|
| | | List<UserSystemCoupon> list = userSystemCouponService.getUserCouponBySource(uid,
|
| | | UserSystemCoupon.SOURCE_CHOUJIANG);
|
| | | |
| | | if (list == null || list.size() == 0) {
|
| | | // 抽奖
|
| | | prize = getLotteryPrize(Constant.MAX_COUNT_LOTTERY_NEWBIES, 0, countUsed, couponType);
|
| | | |
| | | } else if (list.size() == 1) {
|
| | | UserSystemCoupon userSystemCoupon = list.get(0);
|
| | | |
| | | SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
|
| | | if (systemCoupon != null) {
|
| | | SystemCoupon coupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
|
| | | // 已有券
|
| | | couponType = coupon.getType().name();
|
| | | }
|
| | | |
| | | // 抽奖
|
| | | prize = getLotteryPrize(Constant.MAX_COUNT_LOTTERY_NEWBIES, 0, countUsed, couponType);
|
| | | }
|
| | |
|
| | | // 抽中
|
| | | if (prize != null && prize.trim().length() > 0) {
|
| | | if (prize.equals(couponType)) {
|
| | | // 已有此券
|
| | | prize = null;
|
| | | } else {
|
| | | // 插入券信息
|
| | | userSystemCouponService.insertUserCoupon(uid, prize, UserSystemCoupon.SOURCE_CHOUJIANG);
|
| | | }
|
| | | }
|
| | | |
| | | // 剩余次数
|
| | | userInfoExtra.setLotteryNewbies(count);
|
| | | userInfoExtraService.saveUserInfoExtra(userInfoExtra);
|
| | | // 2、未登录用户抽奖
|
| | | int platformType = 0;
|
| | | String platform = acceptData.getPlatform();
|
| | | if ("android".equals(platform)) {
|
| | | platformType = 1;
|
| | | } else if ("ios".equals(platform)) {
|
| | | platformType = 2;
|
| | | } else {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("平台有误"));
|
| | | return;
|
| | | }
|
| | | |
| | | String device = acceptData.getDevice();
|
| | | if (device == null || device.trim().length() == 0) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("设备不存在"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (prize == null || prize.trim().length() == 0) {
|
| | | prize = "NoPrize";
|
| | | }
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("count", count);
|
| | | data.put("result", prize);
|
| | |
|
| | | List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platformType, device);
|
| | | if (list != null && list.size() >= UserLotteryRecord.COUNT_NEWBIES) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "抽奖次数不足"));
|
| | | return;
|
| | | } |
| | | // 设备抽奖
|
| | | JSONObject data = getDevicePrize(list, device, platformType);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
| | |
|
| | | } catch (UserLotteryRecordException e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("抽奖失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | /**
|
| | | * 奖品抽取
|
| | | * |
| | | * @param maxCount 最大次数
|
| | | * @param hasPrize 拥有奖品数量
|
| | | * @param record 已抽次数
|
| | | * @param couponId 券id
|
| | | * 设备信息抽奖-未登录
|
| | | * @param list
|
| | | * @param device
|
| | | * @param platformType
|
| | | * @return
|
| | | */
|
| | | public String getLotteryPrize(int maxCount, int countPrize, int record, String couponType) {
|
| | |
|
| | | String prize = null;
|
| | | String freeCoupon = CouponTypeEnum.welfareFreeCoupon.name(); // 福利免费券
|
| | | String rebateCoupon = CouponTypeEnum.rebatePercentCoupon.name(); // 奖励券
|
| | |
|
| | | if (countPrize == 1 && record == maxCount - 1) {
|
| | | // 最后一次: 只收到一个奖品
|
| | | if (rebateCoupon.equals(couponType)) {
|
| | | prize = freeCoupon; // 福利免费券
|
| | | } else {
|
| | | prize = rebateCoupon; // 奖励券
|
| | | }
|
| | |
|
| | | } else if (countPrize == 0 && record == maxCount - 2) {
|
| | | // 前3次没有奖励时、后面两次必中
|
| | | long result = (1 + Math.round(Math.random() * (9)));
|
| | | if (result <= 5) {
|
| | | prize = freeCoupon; // 福利免费券
|
| | | } else {
|
| | | prize = rebateCoupon; // 奖励券
|
| | | }
|
| | | |
| | | } else { // 大于3次机会
|
| | |
|
| | | if (countPrize < 2) { // 不足两个奖品
|
| | | long result = (1 + Math.round(Math.random() * (9)));
|
| | | if (result <= 3) {
|
| | | prize = freeCoupon; // 福利免费券
|
| | | } else if (result <= 6) {
|
| | | prize = rebateCoupon; // 奖励券
|
| | | public JSONObject getDevicePrize(List<DeviceLotteryRecord> list, String device, int platformType) {
|
| | | int count = 0;
|
| | | int countPrize = 0;
|
| | | Long couponId = null;
|
| | | |
| | | if (list == null || list.size() == 0) { // 拥有抽奖机会
|
| | | count = UserLotteryRecord.COUNT_NEWBIES;
|
| | | } else {
|
| | | for (DeviceLotteryRecord deviceLotteryRecord : list) {
|
| | | Long systemCouponId = deviceLotteryRecord.getSystemCouponId();
|
| | | if (systemCouponId != null) {
|
| | | countPrize++;
|
| | | couponId = systemCouponId;
|
| | | }
|
| | | }
|
| | | count = UserLotteryRecord.COUNT_NEWBIES - list.size();
|
| | | }
|
| | | return prize;
|
| | | |
| | | |
| | | String prize = null;
|
| | | String couponType = null;
|
| | | if (countPrize == 0) {
|
| | | prize = userLotteryRecordService.getLotteryPrizeNewbies(count, countPrize, null);
|
| | | } else if (countPrize == 1) {
|
| | | if (couponId != null) {
|
| | | SystemCoupon coupon = systemCouponService.selectByPrimaryKey(couponId);
|
| | | couponType = coupon.getType().name();
|
| | | }
|
| | | |
| | | if(couponType != null && couponType.trim().length() > 0) {
|
| | | prize = userLotteryRecordService.getLotteryPrizeNewbies(count, countPrize, couponType);
|
| | | }
|
| | | }
|
| | | |
| | | Long newCouponId = null;
|
| | | if (prize == null || prize.trim().length() == 0) {
|
| | | prize = "NoPrize";
|
| | | } else if (prize.equals(couponType)) {
|
| | | // 已存在此券
|
| | | prize = "NoPrize";
|
| | | } else { |
| | | SystemCoupon coupon = systemCouponService.getCouponByType(prize);
|
| | | if (coupon != null) {
|
| | | newCouponId = coupon.getId();
|
| | | }
|
| | | }
|
| | | |
| | | count --;
|
| | | |
| | | // 插入记录
|
| | | DeviceLotteryRecord record = new DeviceLotteryRecord();
|
| | | record.setDevice(device);
|
| | | record.setPlatform(platformType);
|
| | | record.setSystemCouponId(newCouponId);
|
| | | record.setCreateTime(new Date());
|
| | | deviceLotteryRecordService.insertSelective(record);
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("count", count);
|
| | | data.put("result", prize);
|
| | | |
| | | return data;
|
| | | }
|
| | |
|
| | | |
| | | /**
|
| | | * 获取抽奖次数- 天天抽奖励券
|
| | | * |
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getDailyCount")
|
| | | public void getDailyCount(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | try {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(userLotteryRecordService.getLotteryCountDaily(uid)));
|
| | | } catch (UserLotteryRecordException e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(),e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("信息获取失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取抽奖结果 - 天天抽奖励券`
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getDailyResult")
|
| | | public void getDailyResult(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | try {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(userLotteryRecordService.executeLotteryDaily(uid)));
|
| | | } catch (UserLotteryRecordException e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(),e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("抽奖失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | }
|