| | |
| | | import org.yeshi.utils.JsonUtil;
|
| | |
|
| | | import com.alibaba.fastjson.JSONArray;
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.bus.user.DeviceLotteryRecord;
|
| | | import com.yeshi.fanli.entity.bus.user.ShamUser;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
|
| | | import com.yeshi.fanli.entity.system.SystemCoupon;
|
| | | import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.config.SystemCouponService;
|
| | | import com.yeshi.fanli.service.inter.order.CommonOrderCountService;
|
| | | import com.yeshi.fanli.service.inter.user.DeviceLotteryRecordService;
|
| | | import com.yeshi.fanli.service.inter.user.ShamUserService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
| | |
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | /**
|
| | | * 用户
|
| | | * 用户
|
| | | *
|
| | | * @author Administrator
|
| | | *
|
| | |
| | | @RequestMapping("api/apph5/v1/user")
|
| | | public class AppH5UserController {
|
| | |
|
| | | @Resource
|
| | | private DeviceLotteryRecordService deviceLotteryRecordService;
|
| | | |
| | | @Resource
|
| | | private UserInfoExtraService userInfoExtraService;
|
| | | |
| | | @Resource
|
| | | private CommonOrderCountService commonOrderCountService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private ShamUserService shamUserService;
|
| | | |
| | | @Resource
|
| | | private ConfigService configService;
|
| | | |
| | | @Resource
|
| | | private SystemCouponService systemCouponService;
|
| | | |
| | | |
| | | /**
|
| | | * 获取抽奖次数
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getLotteryCount")
|
| | | public void getLotteryCount(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | int count = 0;
|
| | | try {
|
| | | count = getSurplusCount(acceptData, uid);
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMessage()));
|
| | | e.printStackTrace();
|
| | | }
|
| | | |
| | | try {
|
| | | // 抽奖规则
|
| | | 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 (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | /**
|
| | | * 获取抽奖次数
|
| | | * 获取抽奖广告列表
|
| | | * |
| | | * @param callback
|
| | | * @param out
|
| | | */
|
| | |
| | | try {
|
| | | // 随机20条数据
|
| | | List<ShamUser> listUser = shamUserService.listRandUser(20);
|
| | | |
| | |
|
| | | JSONArray array = new JSONArray();
|
| | | for (ShamUser shamUser: listUser) {
|
| | | for (ShamUser shamUser : listUser) {
|
| | | JSONObject dataInfo = new JSONObject();
|
| | | |
| | |
|
| | | String name = shamUser.getName();
|
| | | if (name.length() == 1) {
|
| | | name = "Jx****" + name;
|
| | | } else {
|
| | | name = name.substring(0, 1) + "****" + name.substring(name.length() - 2, name.length() - 1);
|
| | | }
|
| | | |
| | |
|
| | | String prize = generateAward();
|
| | | if (prize == null) {
|
| | | prize = "抽中一张福利免单券";
|
| | | prize = "一张福利免单券";
|
| | | }
|
| | | |
| | |
|
| | | dataInfo.put("pic", shamUser.getPicUrl());
|
| | | dataInfo.put("content", name + ",抽中" + prize);
|
| | | array.add(dataInfo);
|
| | | }
|
| | | |
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("result_list", array);
|
| | | |
| | |
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
| | | |
| | |
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | | /**
|
| | | * 获取抽奖结果
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getLotteryResult")
|
| | | public void getLotteryResult(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | |
|
| | | int count = 0;
|
| | | try {
|
| | | count = getSurplusCount(acceptData, uid);
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMessage()));
|
| | | e.printStackTrace();
|
| | | }
|
| | | |
| | | try {
|
| | | String prize = "No_Prizes"; // freeCoupon 、 rebateCoupon
|
| | | |
| | | if (uid == null) { // 未登录
|
| | | 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() == 5) { // 无抽奖机会
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "抽奖次数不足"));
|
| | | return;
|
| | | } else if (list != null && list.size() < 5 ){ // 拥有抽奖机会 |
| | | int hasPrize = 0;
|
| | | Long couponId = null;
|
| | | |
| | | for (DeviceLotteryRecord deviceLotteryRecord: list) {
|
| | | Long systemCouponId = deviceLotteryRecord.getSystemCouponId();
|
| | | if (systemCouponId != null) {
|
| | | hasPrize ++;
|
| | | couponId = systemCouponId;
|
| | | }
|
| | | }
|
| | | |
| | | // 前3次没有奖励时、后面两次必中
|
| | | if (hasPrize == 0 && list.size() == 3) {
|
| | | long result = (1 + Math.round(Math.random() * (9)));
|
| | | |
| | | if (result <=5) {
|
| | | prize = CouponTypeEnum.welfareFreeCoupon.name(); // 福利免费券
|
| | | } else {
|
| | | prize = CouponTypeEnum.rebatePercentCoupon.name(); // 奖励券
|
| | | }
|
| | | |
| | | } else if (hasPrize == 1 && list.size() == 4) {
|
| | | SystemCoupon systemCoupon = systemCouponService.selectByPrimaryKey(couponId);
|
| | | |
| | | if (systemCoupon != null) {
|
| | | CouponTypeEnum type = systemCoupon.getType();
|
| | | if (type == CouponTypeEnum.welfareFreeCoupon) {
|
| | | prize = CouponTypeEnum.rebatePercentCoupon.name(); // 奖励券
|
| | | } else {
|
| | | prize = CouponTypeEnum.welfareFreeCoupon.name(); // 福利免费券
|
| | | }
|
| | | } else {
|
| | | prize = CouponTypeEnum.rebatePercentCoupon.name(); // 奖励券
|
| | | }
|
| | | } else { // 大于3次机会
|
| | | |
| | | if (hasPrize < 2 ) { // 不足两个奖品
|
| | | |
| | | } else {
|
| | | |
| | | }
|
| | | |
| | | |
| | | }
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }
|
| | | |
| | | } 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; // 不算新用户
|
| | | }
|
| | | |
| | | } else {
|
| | | count = lotteryNewbies; // 剩余次数
|
| | | }
|
| | | }
|
| | | |
| | | // 抽奖规则
|
| | | 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 (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | |
|
| | | /**
|
| | | * 获取抽奖结果
|
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | public int getSurplusCount(AcceptData acceptData, Long uid) throws Exception {
|
| | |
|
| | | //默认最大抽奖次数
|
| | | int count = 5;
|
| | | |
| | | if (uid == null) { // 未登录
|
| | | int platformType = 0;
|
| | | String platform = acceptData.getPlatform();
|
| | | if ("android".equals(platform)) {
|
| | | platformType = 1;
|
| | | } else if ("ios".equals(platform)) {
|
| | | platformType = 2;
|
| | | } else {
|
| | | throw new Exception("平台有误");
|
| | | }
|
| | | |
| | | String device = acceptData.getDevice();
|
| | | if (device == null || device.trim().length() == 0) {
|
| | | throw new Exception("设备不存在");
|
| | | }
|
| | | |
| | | 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) {
|
| | | throw new Exception("信息不正确");
|
| | | }
|
| | | |
| | | Integer lotteryNewbies = userInfoExtra.getLotteryNewbies();
|
| | | if (lotteryNewbies == null ) { // 未抽过
|
| | | // 是否有过订单:返利、分享订单
|
| | | boolean hasOrder = commonOrderCountService.hasRebateAndShareOrder(uid);
|
| | | if (hasOrder) {
|
| | | count = 0; // 不算新用户
|
| | | }
|
| | | |
| | | } else {
|
| | | count = lotteryNewbies; // 剩余次数
|
| | | }
|
| | | }
|
| | | |
| | | return count;
|
| | | }
|
| | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /**
|
| | | * 生成奖项
|
| | | *
|
| | | * @return
|
| | | */
|
| | | public String generateAward() {
|
| | | |
| | |
|
| | | RandomGift randomGift1 = new RandomGift();
|
| | | randomGift1.prize = "抽中华为手机20一台";
|
| | | randomGift1.probability = 2;
|
| | | |
| | |
|
| | | RandomGift randomGift2 = new RandomGift();
|
| | | randomGift2.prize = "现金红包¥188";
|
| | | randomGift2.probability = 5;
|
| | | |
| | |
|
| | | RandomGift randomGift3 = new RandomGift();
|
| | | randomGift3.prize = "现金红包¥88";
|
| | | randomGift3.probability = 13;
|
| | | |
| | |
|
| | | RandomGift randomGift4 = new RandomGift();
|
| | | randomGift4.prize = "一张福利免单券";
|
| | | randomGift4.probability = 40;
|
| | | |
| | |
|
| | | RandomGift randomGift5 = new RandomGift();
|
| | | randomGift5.prize = "一张返利奖励券";
|
| | | randomGift5.probability = 40;
|
| | | |
| | |
|
| | | List<RandomGift> giftList = new ArrayList<RandomGift>();
|
| | | giftList.add(randomGift1);
|
| | | giftList.add(randomGift2);
|
| | | giftList.add(randomGift3);
|
| | | giftList.add(randomGift4);
|
| | | giftList.add(randomGift5);
|
| | | |
| | |
|
| | | long result = (1 + Math.round(Math.random() * (99)));
|
| | | |
| | |
|
| | | int minRange = 0;
|
| | | int maxRange = 0;
|
| | | |
| | |
|
| | | String prize = null;
|
| | | |
| | |
|
| | | for (int i = 0; i < giftList.size(); i++) {
|
| | | RandomGift obj2 = giftList.get(i);
|
| | | int probability = obj2.probability;
|
| | | |
| | |
|
| | | maxRange = maxRange + probability;
|
| | | minRange = 100 - maxRange;
|
| | | |
| | |
|
| | | if (probability != 0) {
|
| | | if (result > minRange && result <= maxRange) {
|
| | | prize = obj2.prize;
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | return prize;
|
| | | }
|
| | |
|
| | | |
| | |
|
| | | /**
|
| | | * 获取抽奖广告列表
|
| | | * |
| | | * @param callback
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getDailyRadioList")
|
| | | public void getDailyRadioList(String callback, PrintWriter out) {
|
| | |
|
| | | try {
|
| | | // 随机20条数据
|
| | | List<ShamUser> listUser = shamUserService.listRandUser(20);
|
| | |
|
| | | JSONArray array = new JSONArray();
|
| | | for (ShamUser shamUser : listUser) {
|
| | | JSONObject dataInfo = new JSONObject();
|
| | |
|
| | | String name = shamUser.getName();
|
| | | if (name.length() == 1) {
|
| | | name = "Jx****" + name;
|
| | | } else {
|
| | | name = name.substring(0, 1) + "****" + name.substring(name.length() - 2, name.length() - 1);
|
| | | }
|
| | |
|
| | | String prize = dailyGenerateAward();
|
| | | if (prize == null) {
|
| | | prize = "两张返利奖励券";
|
| | | }
|
| | |
|
| | | dataInfo.put("pic", shamUser.getPicUrl());
|
| | | dataInfo.put("content", name + ",抽中" + prize);
|
| | | array.add(dataInfo);
|
| | | }
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("result_list", array);
|
| | |
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
| | |
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | /**
|
| | | * 生成奖项-天天抽
|
| | | * |
| | | * @return
|
| | | */
|
| | | public String dailyGenerateAward() {
|
| | |
|
| | | RandomGift randomGift1 = new RandomGift();
|
| | | randomGift1.prize = "抽中华为手机20一台";
|
| | | randomGift1.probability = 2;
|
| | |
|
| | | RandomGift randomGift2 = new RandomGift();
|
| | | randomGift2.prize = "现金红包¥188";
|
| | | randomGift2.probability = 5;
|
| | |
|
| | | RandomGift randomGift3 = new RandomGift();
|
| | | randomGift3.prize = "现金红包¥88";
|
| | | randomGift3.probability = 13;
|
| | |
|
| | | RandomGift randomGift4 = new RandomGift();
|
| | | randomGift4.prize = "两张返利奖励券";
|
| | | randomGift4.probability = 40;
|
| | |
|
| | | RandomGift randomGift5 = new RandomGift();
|
| | | randomGift5.prize = "一张返利奖励券";
|
| | | randomGift5.probability = 40;
|
| | |
|
| | | List<RandomGift> giftList = new ArrayList<RandomGift>();
|
| | | giftList.add(randomGift1);
|
| | | giftList.add(randomGift2);
|
| | | giftList.add(randomGift3);
|
| | | giftList.add(randomGift4);
|
| | | giftList.add(randomGift5);
|
| | |
|
| | | long result = (1 + Math.round(Math.random() * (99)));
|
| | |
|
| | | int minRange = 0;
|
| | | int maxRange = 0;
|
| | |
|
| | | String prize = null;
|
| | |
|
| | | for (int i = 0; i < giftList.size(); i++) {
|
| | | RandomGift obj2 = giftList.get(i);
|
| | | int probability = obj2.probability;
|
| | |
|
| | | maxRange = maxRange + probability;
|
| | | minRange = 100 - maxRange;
|
| | |
|
| | | if (probability != 0) {
|
| | | if (result > minRange && result <= maxRange) {
|
| | | prize = obj2.prize;
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | return prize;
|
| | | }
|
| | | |
| | | class RandomGift {
|
| | | public String prize;// 奖项
|
| | | public int probability; // 概率
|