| | |
| | | package com.yeshi.fanli.controller.client.v1;
|
| | |
|
| | | import java.io.PrintWriter;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | |
|
| | | 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.JsonUtil;
|
| | |
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | 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.UserLotteryRecord;
|
| | | import com.yeshi.fanli.entity.system.SystemCoupon;
|
| | | 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.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;
|
| | | import com.yeshi.fanli.vo.user.UserSystemCouponVO;
|
| | |
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | /**
|
| | | * 福利中心
|
| | | * |
| | | * @author Administrator
|
| | | *
|
| | | */
|
| | | @Controller
|
| | | @RequestMapping("api/v1/user/coupon")
|
| | | public class UserCouponController {
|
| | |
|
| | | @Resource(name = "taskExecutor")
|
| | | private TaskExecutor executor;
|
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | |
|
| | | @Resource
|
| | | private SystemCouponService systemCouponService;
|
| | | |
| | | @Resource
|
| | | private UserSystemCouponService UserSystemCouponService;
|
| | |
|
| | | @Resource
|
| | | private SwiperPictureService swiperPictureService;
|
| | |
|
| | | @Resource
|
| | | private CommonOrderService commonOrderService;
|
| | |
|
| | | @Resource
|
| | | private DeviceLotteryRecordService deviceLotteryRecordService;
|
| | |
|
| | | @Resource
|
| | | private UserSystemCouponService userSystemCouponService;
|
| | |
|
| | | @Resource
|
| | | private UserInfoExtraService userInfoExtraService;
|
| | |
|
| | | |
| | | @Resource
|
| | | private UserLotteryRecordService userLotteryRecordService;
|
| | | |
| | |
|
| | |
|
| | | /**
|
| | | * 用户券列表查询
|
| | | * |
| | | * @param acceptData
|
| | | * @param page
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getCouponList", method = RequestMethod.POST)
|
| | | public void getCouponList(AcceptData acceptData, Integer page, Long uid, PrintWriter out) {
|
| | | if (uid == null) {
|
| | | out.print(JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | try {
|
| | | if (page == null || page < 1) {
|
| | | page = 1;
|
| | | }
|
| | |
|
| | | // 福利中心图片
|
| | | String topPicture = null;
|
| | | if (page == 1) {
|
| | | List<SwiperPicture> listswiper = swiperPictureService.getByBannerCard("welfare_top");
|
| | | if (listswiper != null && listswiper.size() > 0) {
|
| | | 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, changeJump);
|
| | |
|
| | | if (resultList != null && resultList.size() > 0) {
|
| | | count = UserSystemCouponService.countUserCouponList(uid);
|
| | | } else if (resultList == null) {
|
| | | resultList = new ArrayList<UserSystemCouponVO>();
|
| | | }
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("topPicture", topPicture);
|
| | | data.put("count", count);
|
| | | 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()));
|
| | | } catch (Exception e) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 用户奖励券
|
| | | * |
| | | * @param acceptData
|
| | | * @param page
|
| | | * @param uid
|
| | | * @param auctionId 商品id
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getGoodsCouponList", method = RequestMethod.POST)
|
| | | public void getGoodsCouponList(AcceptData acceptData, Long uid, Long auctionId, PrintWriter out) {
|
| | | if (uid == null) {
|
| | | out.print(JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | try {
|
| | | List<UserSystemCouponVO> resultList = UserSystemCouponService.getGoodsCouponList(uid, auctionId);
|
| | |
|
| | | if (resultList == null) {
|
| | | resultList = new ArrayList<UserSystemCouponVO>();
|
| | | }
|
| | |
|
| | | JSONObject dataTip = new JSONObject();
|
| | | dataTip.put("content", configService.get("free_coupon_tip"));
|
| | | dataTip.put("fontColor", "#F14242");
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("helpLink", configService.get("free_coupon_help"));
|
| | | data.put("tip", dataTip);
|
| | | data.put("count", resultList.size());
|
| | | data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList));
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | |
|
| | | } catch (UserSystemCouponException e) {
|
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 免单券使用记录 以及状态修改
|
| | | * |
| | | * @param acceptData
|
| | | * @param page
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "useFreeCoupon", method = RequestMethod.POST)
|
| | | public void useFreeCoupon(AcceptData acceptData, Long uid, Long cid, Long goodId, PrintWriter out) {
|
| | | if (uid == null) {
|
| | | out.print(JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | try {
|
| | | UserSystemCouponService.useGoodsCoupon(uid, cid, goodId);
|
| | | out.print(JsonUtil.loadTrueResult("使用成功"));
|
| | | } catch (UserSystemCouponException e) {
|
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "使用失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 用户奖励券
|
| | | * |
| | | * @param acceptData
|
| | | * @param page
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getOrderCouponList", method = RequestMethod.POST)
|
| | | public void getOrderCouponList(AcceptData acceptData, Long uid, PrintWriter out) {
|
| | |
|
| | | if (uid == null) {
|
| | | out.print(JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | try {
|
| | | List<UserSystemCouponVO> resultList = UserSystemCouponService.getOrderCouponList(uid);
|
| | |
|
| | | if (resultList == null) {
|
| | | resultList = new ArrayList<UserSystemCouponVO>();
|
| | | }
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("helpLink", configService.get("reward_coupon_help"));
|
| | | data.put("count", resultList.size());
|
| | | data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList));
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | |
|
| | | } catch (UserSystemCouponException e) {
|
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 免单券使用记录 以及状态修改
|
| | | * |
| | | * @param acceptData
|
| | | * @param page
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "useRewardCoupon", method = RequestMethod.POST)
|
| | | public void useRewardCoupon(AcceptData acceptData, Long uid, Long cid, String orderNo, PrintWriter out) {
|
| | |
|
| | | if (uid == null) {
|
| | | out.print(JsonUtil.loadFalseResult("用户未登录"));
|
| | | return;
|
| | | }
|
| | |
|
| | | try {
|
| | | UserSystemCouponService.useOrderCoupon(uid, cid, orderNo);
|
| | |
|
| | | JSONObject data = commonOrderService.getRewardJumpInfo(orderNo);
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | |
|
| | | } catch (UserSystemCouponException e) {
|
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "使用失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 订单-奖励进度详情
|
| | | * |
| | | * @param acceptData
|
| | | * @param orderNo 订单号
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getRewardRecord", method = RequestMethod.POST)
|
| | | public void getRewardCounponRecord(AcceptData acceptData, String orderNo, PrintWriter out) {
|
| | |
|
| | | try {
|
| | |
|
| | | UserSystemCouponRecordVO rewardRecord = UserSystemCouponService.getRewardCouponRecord(orderNo);
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("rewardRecord", rewardRecord);
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | |
|
| | | } catch (UserSystemCouponException e) {
|
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 订单-奖励进度详情
|
| | | * |
| | | * @param acceptData
|
| | | * @param orderNo 订单号
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getFreeCounponRecord", method = RequestMethod.POST)
|
| | | public void getFreeCounponRecord(AcceptData acceptData, String orderNo, PrintWriter out) {
|
| | |
|
| | | try {
|
| | |
|
| | | UserSystemCouponRecordVO rewardRecord = UserSystemCouponService.getFreeCouponRecord(orderNo);
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("frreCouponRecord", rewardRecord);
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | |
|
| | | } catch (UserSystemCouponException e) {
|
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
|
| | | } catch (Exception e) {
|
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败"));
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取抽奖次数
|
| | | * |
| | | * @param callback
|
| | | * @param acceptData
|
| | | * @param uid
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getLotteryCount")
|
| | | public void getLotteryCount(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | | try {
|
| | | // 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
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getLotteryResult")
|
| | | public void getLotteryResult(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
|
| | |
|
| | | try {
|
| | | // 1、已登录用户抽奖
|
| | | if (uid != null) {
|
| | | Map<String, Object> map = userLotteryRecordService.executeLotteryNewbies(uid);
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(map));
|
| | | 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);
|
| | | 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 list
|
| | | * @param device
|
| | | * @param platformType
|
| | | * @return
|
| | | */
|
| | | 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();
|
| | | }
|
| | | |
| | | |
| | | 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();
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.controller.client.v1; |
| | | |
| | | import java.io.PrintWriter; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.service.inter.user.UserInfoService; |
| | | 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.JsonUtil; |
| | | |
| | | import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; |
| | | import com.yeshi.fanli.entity.accept.AcceptData; |
| | | import com.yeshi.fanli.entity.bus.user.UserInfoExtra; |
| | | import com.yeshi.fanli.entity.jd.JDGoods; |
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum; |
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; |
| | | import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; |
| | | 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.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.UserSystemCouponService; |
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteService; |
| | | import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import com.yeshi.fanli.util.RedisManager; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; |
| | | import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; |
| | | import com.yeshi.fanli.util.jd.JDUtil; |
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; |
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil; |
| | | import com.yeshi.fanli.vo.homemodule.BannerVO; |
| | | import com.yeshi.fanli.vo.user.UserSystemCouponRecordVO; |
| | | import com.yeshi.fanli.vo.user.UserSystemCouponVO; |
| | | |
| | | import net.sf.json.JSONObject; |
| | | |
| | | /** |
| | | * 福利中心 |
| | | * |
| | | * @author Administrator |
| | | */ |
| | | @Controller |
| | | @RequestMapping("api/v1/user/coupon") |
| | | public class UserCouponController { |
| | | |
| | | @Resource(name = "taskExecutor") |
| | | private TaskExecutor executor; |
| | | |
| | | @Resource |
| | | private ConfigService configService; |
| | | |
| | | @Resource |
| | | private SystemCouponService systemCouponService; |
| | | |
| | | @Resource |
| | | private UserSystemCouponService UserSystemCouponService; |
| | | |
| | | @Resource |
| | | private SwiperPictureService swiperPictureService; |
| | | |
| | | @Resource |
| | | private CommonOrderService commonOrderService; |
| | | |
| | | @Resource |
| | | private DeviceLotteryRecordService deviceLotteryRecordService; |
| | | |
| | | @Resource |
| | | private UserSystemCouponService userSystemCouponService; |
| | | |
| | | @Resource |
| | | private UserInfoExtraService userInfoExtraService; |
| | | |
| | | @Resource |
| | | private UserInfoService userInfoService; |
| | | |
| | | @Resource |
| | | private UserVIPInfoService userVIPInfoService; |
| | | |
| | | @Resource |
| | | private UserInviteService userInviteService; |
| | | |
| | | |
| | | @Resource |
| | | private RedisManager redisManager; |
| | | |
| | | @Resource |
| | | private JDGoodsCacheUtil jdGoodsCacheUtil; |
| | | |
| | | @Resource |
| | | private PinDuoDuoCacheUtil pinDuoDuoCacheUtil; |
| | | |
| | | |
| | | /** |
| | | * 用户券列表查询 |
| | | * |
| | | * @param acceptData |
| | | * @param page |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getCouponList", method = RequestMethod.POST) |
| | | public void getCouponList(AcceptData acceptData, Integer page, Long uid, PrintWriter out) { |
| | | if (uid == null) { |
| | | out.print(JsonUtil.loadFalseResult("用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | if (page == null || page < 1) { |
| | | page = 1; |
| | | } |
| | | |
| | | // 福利中心图片 |
| | | String topPicture = null; |
| | | if (page == 1) { |
| | | List<BannerVO> listswiper = swiperPictureService.getByBannerCardAndVersion("welfare_top", acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); |
| | | if (listswiper != null && listswiper.size() > 0) { |
| | | 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 = UserSystemCouponService.countCouponOld(uid); |
| | | List<UserSystemCouponVO> resultList = UserSystemCouponService |
| | | .getUserCouponVOList((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, changeJump); |
| | | |
| | | if (resultList == null) { |
| | | resultList = new ArrayList<UserSystemCouponVO>(); |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("topPicture", topPicture); |
| | | data.put("count", count); |
| | | 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 extra = new UserInfoExtra(); |
| | | extra.setId(userInfoExtra.getId()); |
| | | extra.setCouponNews(0); |
| | | userInfoExtraService.updateByPrimaryKeySelective(extra); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } catch (UserSystemCouponException e) { |
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); |
| | | } catch (Exception e) { |
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败")); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 用户奖励券 |
| | | * |
| | | * @param acceptData |
| | | * @param page |
| | | * @param uid |
| | | * @param auctionId 商品id |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getGoodsCouponList", method = RequestMethod.POST) |
| | | public void getGoodsCouponList(AcceptData acceptData, Long uid, String auctionId, PrintWriter out) { |
| | | if (uid == null) { |
| | | out.print(JsonUtil.loadFalseResult("用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | List<UserSystemCouponVO> resultList = UserSystemCouponService.getGoodsCouponList(uid, auctionId); |
| | | if (resultList == null) { |
| | | resultList = new ArrayList<UserSystemCouponVO>(); |
| | | } |
| | | |
| | | JSONObject dataTip = new JSONObject(); |
| | | dataTip.put("content", configService.getValue(ConfigKeyEnum.freeCouponTip.getKey(), acceptData.getSystem())); |
| | | dataTip.put("fontColor", "#F14242"); |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("helpLink", configService.getValue(ConfigKeyEnum.freeCouponHelp.getKey(), acceptData.getSystem())); |
| | | data.put("tip", dataTip); |
| | | data.put("count", resultList.size()); |
| | | data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList)); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | } catch (UserSystemCouponException e) { |
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); |
| | | } catch (Exception e) { |
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败")); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 免单券使用记录 以及状态修改 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "useFreeCoupon", method = RequestMethod.POST) |
| | | public void useFreeCoupon(AcceptData acceptData, Long uid, Long cid, String goodId, Integer goodsType, PrintWriter out) { |
| | | if (uid == null) { |
| | | out.print(JsonUtil.loadFalseResult("用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | if (goodsType == null || goodsType > 3 || goodsType < 1) { |
| | | goodsType = Constant.SOURCE_TYPE_TAOBAO; |
| | | } |
| | | |
| | | try { |
| | | UserSystemCouponService.useGoodsCoupon(uid, cid, goodId, goodsType); |
| | | out.print(JsonUtil.loadTrueResult("使用成功")); |
| | | } catch (UserSystemCouponException e) { |
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); |
| | | } catch (Exception e) { |
| | | out.print(JsonUtil.loadFalseResult(1, "使用失败")); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 用户奖励券 |
| | | * |
| | | * @param acceptData |
| | | * @param page |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getOrderCouponList", method = RequestMethod.POST) |
| | | public void getOrderCouponList(AcceptData acceptData, Long uid, PrintWriter out) { |
| | | |
| | | if (uid == null) { |
| | | out.print(JsonUtil.loadFalseResult("用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | List<UserSystemCouponVO> resultList = UserSystemCouponService.getOrderCouponList(uid); |
| | | |
| | | if (resultList == null) { |
| | | resultList = new ArrayList<UserSystemCouponVO>(); |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("helpLink", configService.getValue(ConfigKeyEnum.rewardCouponHelp.getKey(), acceptData.getSystem())); |
| | | data.put("count", resultList.size()); |
| | | data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList)); |
| | | |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | |
| | | } catch (UserSystemCouponException e) { |
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); |
| | | } catch (Exception e) { |
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败")); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 免单券使用记录 以及状态修改 |
| | | * |
| | | * @param acceptData |
| | | * @param page |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "useRewardCoupon") |
| | | public void useRewardCoupon(String callback, AcceptData acceptData, Long uid, Long cid, String orderNo, Integer goodsType, PrintWriter out) { |
| | | if (uid == null) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | // 当前用户是否VIP |
| | | boolean vip = userInviteService.verifyVIP(uid); |
| | | if (vip) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("会员不可使用奖励券")); |
| | | return; |
| | | } |
| | | if (goodsType == null || goodsType > 3 || goodsType < 1) { |
| | | goodsType = Constant.SOURCE_TYPE_TAOBAO; |
| | | } |
| | | try { |
| | | UserSystemCouponService.useOrderCoupon(uid, cid, orderNo, goodsType, acceptData); |
| | | JSONObject data = commonOrderService.getRewardJumpInfo(orderNo, goodsType, userInfoService.getUserSystem(uid)); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); |
| | | } catch (UserSystemCouponException e) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); |
| | | } catch (Exception e) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "使用失败")); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 订单-奖励进度详情 |
| | | * |
| | | * @param acceptData |
| | | * @param orderNo 订单号 |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getRewardRecord", method = RequestMethod.POST) |
| | | public void getRewardCounponRecord(AcceptData acceptData, String orderNo, Integer goodsType, PrintWriter out) { |
| | | try { |
| | | if (goodsType == null || goodsType > 3 || goodsType < 1) { |
| | | goodsType = Constant.SOURCE_TYPE_TAOBAO; |
| | | } |
| | | |
| | | UserSystemCouponRecordVO rewardRecord = UserSystemCouponService.getRewardCouponRecord(orderNo, goodsType); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("rewardRecord", rewardRecord); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | } catch (UserSystemCouponException e) { |
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); |
| | | } catch (Exception e) { |
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败")); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 订单-奖励进度详情 |
| | | * |
| | | * @param acceptData |
| | | * @param orderNo 订单号 |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getFreeCounponRecord", method = RequestMethod.POST) |
| | | public void getFreeCounponRecord(AcceptData acceptData, String orderNo, Integer goodsType, PrintWriter out) { |
| | | try { |
| | | if (goodsType == null || goodsType > 3 || goodsType < 1) { |
| | | goodsType = Constant.SOURCE_TYPE_TAOBAO; |
| | | } |
| | | |
| | | UserSystemCouponRecordVO rewardRecord = UserSystemCouponService.getFreeCouponRecord(orderNo, goodsType); |
| | | JSONObject data = new JSONObject(); |
| | | data.put("frreCouponRecord", rewardRecord); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | } catch (UserSystemCouponException e) { |
| | | out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); |
| | | } catch (Exception e) { |
| | | out.print(JsonUtil.loadFalseResult(1, "查询失败")); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询免单券 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param auctionId |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getFreeCouponList", method = RequestMethod.POST) |
| | | public void getFreeCouponList(AcceptData acceptData, Long uid, String goodsId, Integer goodsType, PrintWriter out) { |
| | | if (uid == null) { |
| | | out.print(JsonUtil.loadFalseResult("用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | if (goodsType == null || StringUtil.isNullOrEmpty(goodsId)) { |
| | | out.print(JsonUtil.loadFalseResult("参数不完整")); |
| | | return; |
| | | } |
| | | |
| | | List<UserSystemCouponVO> list = UserSystemCouponService.getFreeCouponList(uid); |
| | | if (list == null) |
| | | list = new ArrayList<>(); |
| | | |
| | | |
| | | if (list.size() > 0) { |
| | | boolean state = false; |
| | | BigDecimal priceLimit = BigDecimal.valueOf(9.9); |
| | | switch (goodsType) { |
| | | case Constant.SOURCE_TYPE_TAOBAO: |
| | | state = checkCanUsedTB(goodsId, priceLimit); |
| | | break; |
| | | case Constant.SOURCE_TYPE_JD: |
| | | state = checkCanUsedTB(goodsId, priceLimit); |
| | | break; |
| | | case Constant.SOURCE_TYPE_PDD: |
| | | state = checkCanUsedTB(goodsId, priceLimit); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | // 不能使用 |
| | | if (!state) { |
| | | for (UserSystemCouponVO userCouponVO : list) { |
| | | userCouponVO.setState(0); |
| | | userCouponVO.setCouponPicture(userCouponVO.getCouponPictureInvalid()); |
| | | Map<String, Object> map = userCouponVO.getRemainDays(); |
| | | if (map != null) { |
| | | map.put("fontColor", "#CCCCCC"); |
| | | } |
| | | userCouponVO.setRemainDays(map); |
| | | } |
| | | } |
| | | } |
| | | |
| | | JSONObject dataTip = new JSONObject(); |
| | | dataTip.put("content", configService.getValue(ConfigKeyEnum.freeCouponTip.getKey(), acceptData.getSystem())); |
| | | dataTip.put("fontColor", "#F14242"); |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("helpLink", configService.getValue(ConfigKeyEnum.freeCouponHelp.getKey(), acceptData.getSystem())); |
| | | data.put("tip", dataTip); |
| | | data.put("count", list.size()); |
| | | data.put("list", JsonUtil.getApiCommonGson().toJson(list)); |
| | | out.print(JsonUtil.loadTrueResult(data)); |
| | | } |
| | | |
| | | |
| | | private boolean checkCanUsedTB(String goodsId, BigDecimal priceLimit) { |
| | | try { |
| | | TaoBaoGoodsBrief goods = redisManager.getTaoBaoGoodsBrief(goodsId); |
| | | if (goods == null) |
| | | return false; |
| | | |
| | | BigDecimal quanPrice = TaoBaoUtil.getCouponPrice(goods); |
| | | if (quanPrice.compareTo(priceLimit) <= 0) |
| | | return true; |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | |
| | | } |