From a7454d8a6325566753358b37ffabfae2faa0ca7f Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 28 四月 2021 19:46:49 +0800 Subject: [PATCH] 拼多多授权调整,支持小程序跳转 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java | 1503 ++++++++++++++++++++++++++++++++------------------------ 1 files changed, 856 insertions(+), 647 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java index a6a8faa..f9bd927 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java @@ -1,647 +1,856 @@ -package com.yeshi.fanli.controller.client.v2; - -import java.io.IOException; -import java.io.PrintWriter; -import java.lang.reflect.Type; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Calendar; -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.JsonUtil; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import com.google.gson.JsonPrimitive; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import com.yeshi.fanli.entity.accept.AcceptData; -import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture; -import com.yeshi.fanli.entity.bus.tlj.DeviceTaoLiJinRecord; -import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum; -import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin; -import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin.TaoLiJinOriginEnum; -import com.yeshi.fanli.entity.bus.user.UserMoneyExtra; -import com.yeshi.fanli.entity.bus.user.UserRank; -import com.yeshi.fanli.entity.taobao.ShareHotGoods; -import com.yeshi.fanli.entity.taobao.TLJBuyGoods; -import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; -import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra; -import com.yeshi.fanli.exception.banner.SwiperPictureException; -import com.yeshi.fanli.exception.tlj.UserTaoLiJinOriginException; -import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; -import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.goods.ShareGoodsService; -import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService; -import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService; -import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; -import com.yeshi.fanli.service.inter.lable.QualityGoodsService; -import com.yeshi.fanli.service.inter.monitor.BusinessEmergent110Service; -import com.yeshi.fanli.service.inter.monitor.MonitorService; -import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService; -import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; -import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService; -import com.yeshi.fanli.service.inter.tlj.DeviceTaoLiJinRecordService; -import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService; -import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; -import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService; -import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService; -import com.yeshi.fanli.service.inter.user.UserInfoExtraService; -import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.service.inter.user.UserMoneyExtraService; -import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TaoBaoConstant; -import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.taobao.TaoBaoUtil; -import com.yeshi.fanli.util.taobao.TaoLiJinUtil; -import com.yeshi.fanli.vo.goods.taobao.TLJBuyHongBaoVO; -import com.yeshi.fanli.vo.msg.ClientTextStyleVO; -import com.yeshi.fanli.vo.tlj.TaoLiJinDetailVO; -import com.yeshi.fanli.vo.user.UserTaoLiJinRecordVO; - -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -@Controller -@RequestMapping("api/v2/taolijin") -public class TaoLiJinControllerV2 { - - @Resource - private UserTaoLiJinRecordService userTaoLiJinRecordService; - - @Resource - private ConfigService configService; - - @Resource - private ShareGoodsService shareGoodsService; - - @Resource - private UserInfoService userInfoService; - - @Resource - private UserShareGoodsRecordService userShareGoodsRecordService; - - @Resource - private HongBaoManageService hongBaoManageService; - - @Resource - private ShareGoodsTextTemplateService shareGoodsTextTemplateService; - - @Resource - private BusinessEmergent110Service businessEmergent110Service; - - @Resource - private MonitorService monitorService; - - @Resource - private UserInfoExtraService userInfoExtraService; - - @Resource - private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; - - @Resource - private UserTaoLiJinOriginService userTaoLiJinOriginService; - - @Resource - private UserTaoLiJinDetailService userTaoLiJinDetailService; - - @Resource - private UserMoneyExtraService userMoneyExtraService; - - @Resource - private ConfigTaoLiJinService configTaoLiJinService; - - @Resource - private QualityGoodsService qualityGoodsService; - - @Resource - private DeviceTaoLiJinRecordService deviceTaoLiJinRecordService; - - @Resource - private JumpDetailV2Service jumpDetailV2Service; - - @Resource(name = "taskExecutor") - private TaskExecutor executor; - - @Resource - private ShareHotGoodsService shareHotGoodsService; - - @Resource - private TLJBuyGoodsService tljBuyGoodsService; - - @Resource - private SwiperPictureService swiperPictureService; - - /** - * 鑾峰彇娣樼ぜ閲戝垎浜褰� - * - * @param acceptData - * @param uid - * @param page - * @param out - */ - @RequestMapping(value = "getShareRecord", method = RequestMethod.POST) - public void getShareRecord(AcceptData acceptData, Long uid, Integer page, PrintWriter out) { - if (uid == null || uid <= 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (page == null || page < 1) { - page = 1; - } - - int pageSize = Constant.PAGE_SIZE; - List<UserTaoLiJinRecordVO> list = userTaoLiJinRecordService.getRecordByUid((page - 1) * pageSize, pageSize, - uid); - if (list == null) { - list = new ArrayList<UserTaoLiJinRecordVO>(); - } - - long count = userTaoLiJinRecordService.countShareRecordByUid(uid); - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - gsonBuilder.registerTypeAdapter(Date.class, new JsonSerializer<Date>() { - @Override - public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { - if (value == null) { - return new JsonPrimitive(""); - } else { - return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm")); - } - } - }); - - Gson gson = gsonBuilder.create(); - - JSONObject data = new JSONObject(); - data.put("count", count); - data.put("list", gson.toJson(list)); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 缁熻娣樼ぜ閲� - * - * @param acceptData - * @param uid - * @param out - */ - @RequestMapping(value = "countHongBao", method = RequestMethod.POST) - public void countHongBao(AcceptData acceptData, Long uid, PrintWriter out) { - if (uid == null || uid <= 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - // 杩囨湡 - userTaoLiJinOriginService.overdueHongBao(uid); - - // 鎴戠殑娣樼ぜ閲� - BigDecimal tlj = null; - UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid); - if (userMoneyExtra != null) { - tlj = userMoneyExtra.getTlj(); - } else { - tlj = new BigDecimal(0); - } - - // 浠婃棩鍒嗕韩涓暟 - long countShare = userTaoLiJinRecordService.countTodayNum(uid); - - // 鑾峰緱 - BigDecimal todayWin = userTaoLiJinOriginService.countMoneyByDate(uid, 1); - BigDecimal yesterdayWin = userTaoLiJinOriginService.countMoneyByDate(uid, 2); - BigDecimal thisMonthWin = userTaoLiJinOriginService.countMoneyByDate(uid, 3); - BigDecimal lastMonthWin = userTaoLiJinOriginService.countMoneyByDate(uid, 4); - - // 娑堣�� - BigDecimal todayUse = userTaoLiJinDetailService.countUseMoneyByDate(uid, 1); - BigDecimal yesterdayUse = userTaoLiJinDetailService.countUseMoneyByDate(uid, 2); - BigDecimal thisMonthUse = userTaoLiJinDetailService.countUseMoneyByDate(uid, 3); - BigDecimal lastMonthUse = userTaoLiJinDetailService.countUseMoneyByDate(uid, 4); - - // 闂彿閾炬帴 - String helpLink = configTaoLiJinService.getValueByKey("hongbao_help_link"); - - JSONObject data = new JSONObject(); - data.put("tlj", tlj.setScale(2).toString()); - data.put("helpLink", helpLink); - data.put("countShare", countShare); - data.put("todayWin", todayWin.setScale(2).toString()); - data.put("yesterdayWin", yesterdayWin.setScale(2).toString()); - data.put("thisMonthWin", thisMonthWin.setScale(2).toString()); - data.put("lastMonthWin", lastMonthWin.setScale(2).toString()); - data.put("todayUse", todayUse.setScale(2).toString().replaceAll("-", "")); - data.put("yesterdayUse", yesterdayUse.setScale(2).toString().replaceAll("-", "")); - data.put("thisMonthUse", thisMonthUse.setScale(2).toString().replaceAll("-", "")); - data.put("lastMonthUse", lastMonthUse.setScale(2).toString().replaceAll("-", "")); - - // IOS 鍒嗕韩涓暟 - ClientTextStyleVO textVo1 = new ClientTextStyleVO(); - textVo1.setContent("浠婃棩鍒涘缓鍒嗕韩"); - textVo1.setColor("#888888"); - ClientTextStyleVO textVo2 = new ClientTextStyleVO(); - textVo2.setContent(countShare + ""); - textVo2.setColor("#E5005C"); - ClientTextStyleVO textVo3 = new ClientTextStyleVO(); - textVo3.setContent("涓�"); - textVo3.setColor("#888888"); - - List<ClientTextStyleVO> listCountShare = new ArrayList<ClientTextStyleVO>(); - listCountShare.add(textVo1); - listCountShare.add(textVo2); - listCountShare.add(textVo3); - data.put("listShare", listCountShare); - - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鑾峰彇娣樼ぜ閲戞槑缁嗚鎯� - * - * @param acceptData - * @param uid - * @param index - * List鏈�鏈殑涓婚敭ID - * @param year - * 骞翠唤 - * @param month - * 鏈堜唤 - * @param out - */ - @RequestMapping(value = "getMoneyDetails") - public void getMoneyDetails(AcceptData acceptData, Long uid, Long index, Integer year, Integer month, - PrintWriter out) { - if (uid == null || uid == 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if ((year == null && month != null) || (year != null && month == null)) { - out.print(JsonUtil.loadFalseResult(1, "鏃ユ湡涓嶅畬鏁�")); - return; - } - - Date date = null; - - if (year != null && month != null) { - date = new Date(TimeUtil.convertToTimeTemp(year + "-" + month, "yyyy-M")); - Calendar ca = Calendar.getInstance(); - ca.setTime(date); - ca.add(Calendar.MONTH, 1); - date = new Date(ca.getTimeInMillis() - 1); - } - - // 鏌ヨ鍒楄〃 - List<TaoLiJinDetailVO> list = userTaoLiJinDetailService.listUserMoneyDetailForClient(uid, index, date); - // 缁熻鎬绘潯鏁� - long count = userTaoLiJinDetailService.countUserMoneyDetailForClient(uid, index, date); - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - gsonBuilder.registerTypeAdapter(TaoLiJinDetailTypeEnum.class, new TypeAdapter<TaoLiJinDetailTypeEnum>() { - @Override - public TaoLiJinDetailTypeEnum read(JsonReader arg0) throws IOException { - return null; - } - - @Override - public void write(JsonWriter out, TaoLiJinDetailTypeEnum arg1) throws IOException { - out.beginObject(); - out.name("portrait").value(arg1.getPicture()); - out.endObject(); - } - }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() { - @Override - public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { - if (value == null) { - return new JsonPrimitive(""); - } else { - return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm")); - } - } - }).registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { - @Override - public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { - if (value == null) { - return new JsonPrimitive(""); - } else { - // 淇濈暀2浣嶅皬鏁� - value = value.setScale(2); - return new JsonPrimitive(value.toString()); - } - } - }); - - Gson gson = gsonBuilder.create(); - - JSONObject data = new JSONObject(); - data.put("count", count); - data.put("data", gson.toJson(list)); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 绾㈠寘棰嗗彇璇︽儏 - * - * @param acceptData - * @param uid - * @param type - * @param out - */ - @RequestMapping(value = "getHongbaoDetails", method = RequestMethod.POST) - public void getHongbaoDetails(AcceptData acceptData, Long uid, String type, PrintWriter out) { - - if (StringUtil.isNullOrEmpty(type)) { - out.print(JsonUtil.loadFalseResult(1, "绫诲瀷涓嶈兘涓虹┖")); - return; - } - - // 鐢ㄦ埛鏈櫥褰曟椂 璁惧棰嗗彇鏂扮孩鍖� - if (uid == null || uid <= 0) { - BigDecimal money = null; - DeviceTaoLiJinRecord deviceRecord = deviceTaoLiJinRecordService.getByDevice(acceptData.getDevice()); - if (deviceRecord != null) { - // 宸查鍙� - money = deviceRecord.getMoney(); - } else { - String value = configTaoLiJinService.getValueByKey("hongbao_newbies"); - if (StringUtil.isNullOrEmpty(value)) { - out.print(JsonUtil.loadFalseResult(1, "绯荤粺绾㈠寘涓嶅瓨鍦�")); - return; - } - money = new BigDecimal(value); - deviceTaoLiJinRecordService.save(acceptData.getDevice(), money); - } - - JSONObject data = new JSONObject(); - data.put("icon", configTaoLiJinService.getValueByKey("taolijin_system_icon")); - data.put("title", "鏂颁汉绾㈠寘"); - data.put("content", "鑷喘鐩存帴鎶电幇锛屼紭鎯犵湡瀹炲彲瑙侊紒"); - data.put("type", 1); - data.put("money", money.setScale(2).toString()); - data.put("usage", "棰嗗彇鎴愬姛锛屽凡瀛樺叆鈥滄垜鐨�-鎺ㄥ箍绾㈠寘鈥�"); - data.put("jumpName", "鍘讳娇鐢�"); - data.put("jumpDetail", jumpDetailV2Service.getByTypeCache("share_goods_hot")); - data.put("tip", configTaoLiJinService.getValueByKey("hongbao_newbies_tip")); - data.put("rules", configTaoLiJinService.getValueByKey("newbies_rules_link")); - - out.print(JsonUtil.loadTrueResult(data)); - return; - } - - // 鐧诲綍鐢ㄦ埛 - JSONObject data = new JSONObject(); - data.put("icon", configTaoLiJinService.getValueByKey("taolijin_system_icon")); - - if (type.equals(TaoLiJinOriginEnum.newbiesWin.name())) { - BigDecimal hasMoney = null; - UserTaoLiJinOrigin userTaoLiJin = userTaoLiJinOriginService.getByUidAndOrigin(uid, type); - if (userTaoLiJin != null) { // 宸查鍙� - hasMoney = userTaoLiJin.getMoney(); - } else { - try { - UserTaoLiJinOrigin origin = userTaoLiJinOriginService.addNewbiesWinMoney(uid); - hasMoney = origin.getMoney(); - } catch (UserTaoLiJinOriginException e) { - out.print(JsonUtil.loadFalseResult(e.getMsg())); - return; - } - } - - data.put("title", "鏂颁汉绾㈠寘"); - data.put("content", "鑷喘鐩存帴鎶电幇锛屼紭鎯犵湡瀹炲彲瑙侊紒"); - data.put("type", 1); - data.put("money", hasMoney.setScale(2).toString()); - data.put("usage", "棰嗗彇鎴愬姛锛屽凡瀛樺叆鈥滄垜鐨�-鎺ㄥ箍绾㈠寘鈥�"); - data.put("jumpName", "鍘讳娇鐢�"); - data.put("jumpDetail", jumpDetailV2Service.getByTypeCache("share_goods_hot")); - data.put("tip", configTaoLiJinService.getValueByKey("hongbao_newbies_tip")); - data.put("rules", configTaoLiJinService.getValueByKey("newbies_rules_link")); - - } else if (type.equals(TaoLiJinOriginEnum.rankWin.name())) { - boolean isRank = false; - BigDecimal hasMoney = null; - UserTaoLiJinOrigin userTaoLiJin = userTaoLiJinOriginService.getRankByThisMonth(uid, type); - if (userTaoLiJin != null) { // 宸查鍙� - isRank = true; - hasMoney = userTaoLiJin.getMoney(); - } else { - isRank = false; - UserRank userRank = userInfoExtraService.gerUserRank(uid); - if (userRank != null) { - try { - UserTaoLiJinOrigin origin = userTaoLiJinOriginService.addRankWinMoney(uid, userRank); - hasMoney = origin.getMoney(); - isRank = true; - } catch (UserTaoLiJinOriginException e) { - if (e.getCode() != 2) { - isRank = false; - out.print(JsonUtil.loadFalseResult(e.getMsg())); - return; - } - } - } - } - - // 绛夌骇涓嶈冻 - if (!isRank) { - data.put("title", "璐︽埛绛夌骇绂忓埄"); - data.put("content", "鎺ㄥ箍绾㈠寘锛屽ソ鍙嬬鍒╋紒"); - data.put("type", 2); - data.put("money", "鏈湀璐︽埛绛夌骇鏈揪鍒癨r\n缁х画鍔犳补"); - data.put("jumpName", "鍘绘煡鐪�"); - data.put("jumpDetail", jumpDetailV2Service.getByTypeCache("user_rank")); - data.put("tip", configTaoLiJinService.getValueByKey("hongbao_rank_not_enough_tip")); - data.put("rules", configTaoLiJinService.getValueByKey("rank_rules_link")); - out.print(JsonUtil.loadTrueResult(data)); - return; - } else { - data.put("title", "璐︽埛绛夌骇绂忓埄"); - data.put("content", "鎺ㄥ箍绾㈠寘锛屽ソ鍙嬬鍒╋紒"); - data.put("type", 1); - data.put("money", hasMoney.setScale(2).toString()); - data.put("usage", "棰嗗彇鎴愬姛锛屽凡瀛樺叆鈥滄垜鐨�-鎺ㄥ箍绾㈠寘鈥�"); - data.put("jumpName", "鍘讳娇鐢�"); - data.put("jumpDetail", jumpDetailV2Service.getByTypeCache("share_goods_hot")); - data.put("tip", configTaoLiJinService.getValueByKey("hongbao_rank_tip")); - data.put("rules", configTaoLiJinService.getValueByKey("rank_rules_link")); - } - - } else { - out.print(JsonUtil.loadFalseResult(1, "绫诲瀷涓嶅尮閰�")); - return; - } - - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鍒嗕韩鐖嗘鍟嗗搧-闄愪簬娣樼ぜ閲� - * - * @param acceptData - * @param uid - * @param out - */ - @RequestMapping(value = "getShareGoods", method = RequestMethod.POST) - public void getShareGoods(AcceptData acceptData, Long uid, PrintWriter out) { - if (uid == null || uid <= 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis()); - List<ShareHotGoods> listHot = shareHotGoodsService.listByDay(day); - if (listHot == null) { - listHot = new ArrayList<ShareHotGoods>(); - } - - JSONArray array = new JSONArray(); - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - - boolean isNewUser = userInfoExtraService.isNewUser(uid); - if (isNewUser) { - // 鍒ゅ畾涓鸿�佺敤鎴凤細 鏂颁汉鍙浣跨敤浜嗘柊浜虹孩鍖咃紝涔熷氨鏄偅1鍧楅挶锛岄偅涔堬紝浠栫湅鍒扮殑鍒嗕韩鐖嗘涓殑鍟嗗搧-灏卞彧鑳藉垎浜�� - long countRecord = userTaoLiJinRecordService.countRecordByUid(uid); - if (countRecord > 0) { - isNewUser = false; - } - } - - BigDecimal proportion = hongBaoManageService.getFanLiRate(); - for (ShareHotGoods hotGoods : listHot) { - TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods(); - if (taoBaoGoodsBrief == null) { - continue; - } - - // 璁$畻鎺ㄥ箍绾㈠寘 - String warningRate = configTaoLiJinService.getValueByKey("warning_value"); - BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, taoBaoGoodsBrief); - - // 鎺ㄥ箍绾㈠寘 涓嶈兘灏忎簬1 - if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) { - continue; - } - - TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), - null); - // 鍘绘帀鏍囩 - extra.setLabels(null); - - // 鏄剧ず绫诲瀷 - if (isNewUser) { - extra.setMoneyType(1); - extra.setSpreadMoney("鎺ㄥ箍绾㈠寘 楼" + 1); - } else { - extra.setMoneyType(2); - extra.setSpreadMoney("鎺ㄥ箍绾㈠寘 楼" + spreadMoney); - } - array.add(gson.toJson(extra)); - } - - executor.execute(new Runnable() { - @Override - public void run() { - // 杩囨湡 - userTaoLiJinOriginService.overdueHongBao(uid); - } - }); - - JSONObject data = new JSONObject(); - data.put("count", array.size()); - data.put("list", array); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鍒嗕韩鐖嗘鍟嗗搧-闄愪簬娣樼ぜ閲� - * - * @param acceptData - * @param uid - * @param out - */ - @RequestMapping(value = "getBuyGoods", method = RequestMethod.POST) - public void getBuyGoods(AcceptData acceptData, int page, PrintWriter out) { - - String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis()); - List<TLJBuyGoods> listHot = tljBuyGoodsService.listByDay(day); - if (listHot == null) { - listHot = new ArrayList<TLJBuyGoods>(); - } - - JSONArray array = new JSONArray(); - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - - BigDecimal proportion = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE; - for (TLJBuyGoods hotGoods : listHot) { - TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods(); - if (taoBaoGoodsBrief == null) { - continue; - } - - // 璁$畻鎺ㄥ箍绾㈠寘 - BigDecimal spreadMoney = TaoBaoUtil.getGoodsHongBaoMoney(taoBaoGoodsBrief, proportion); - - // 鎺ㄥ箍绾㈠寘 涓嶈兘灏忎簬1 - if (spreadMoney.compareTo(new BigDecimal(1.0)) < 0) { - continue; - } - - TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), - null); - // 鍘绘帀鏍囩 - extra.setLabels(null); - - String hongBao = spreadMoney.toString(); - TLJBuyHongBaoVO vo = new TLJBuyHongBaoVO(); - vo.setLeft(hotGoods.getLeftHongBaoCount()); - vo.setMoney(hongBao); - vo.setTagName("浠樻绔嬪噺 楼" + hongBao); - vo.setTip(""); - vo.setTotal(hotGoods.getTotalHongBaoCount()); - extra.setTljBuyHongBao(vo); - // 鏄剧ず绫诲瀷 - extra.setMoneyType(2); - extra.setSpreadMoney("浠樻绔嬪噺 楼" + spreadMoney); - - array.add(gson.toJson(extra)); - } - - if (page > 1) - array.clear(); - - JSONObject data = new JSONObject(); - data.put("count", array.size()); - data.put("list", array); - if (page == 1) { - try { - List<SwiperPicture> bannerList = swiperPictureService.getByBannerCard("zigoulijian_banner"); - if (bannerList != null && bannerList.size() > 0) - data.put("topPicture", bannerList.get(0).getSrc()); - else - data.put("topPicture", ""); - } catch (SwiperPictureException e) { - e.printStackTrace(); - } - data.put("ruleUrl", configService.get("zigoulijian_rule")); - } - out.print(JsonUtil.loadTrueResult(data)); - } - -} +package com.yeshi.fanli.controller.client.v2; + +import java.io.IOException; +import java.io.PrintWriter; +import java.lang.reflect.Type; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +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.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.yeshi.fanli.dto.ConfigParamsDTO; +import com.yeshi.fanli.entity.accept.AcceptData; +import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum; +import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinNewbies; +import com.yeshi.fanli.entity.bus.user.UserMoneyExtra; +import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.fanli.entity.taobao.ShareHotGoods; +import com.yeshi.fanli.entity.taobao.TLJBuyGoods; +import com.yeshi.fanli.entity.taobao.TLJFreeBuyGoods; +import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBriefExtra; +import com.yeshi.fanli.exception.user.UserInfoException; +import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.goods.ShareGoodsService; +import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService; +import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService; +import com.yeshi.fanli.service.inter.lable.QualityGoodsService; +import com.yeshi.fanli.service.inter.money.UserMoneyExtraService; +import com.yeshi.fanli.service.inter.monitor.BusinessEmergent110Service; +import com.yeshi.fanli.service.inter.monitor.MonitorService; +import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; +import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; +import com.yeshi.fanli.service.inter.redpack.UserTaoLiJinNewbiesService; +import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService; +import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; +import com.yeshi.fanli.service.inter.taobao.TLJFreeBuyGoodsService; +import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService; +import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService; +import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; +import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService; +import com.yeshi.fanli.service.inter.user.UserInfoExtraService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService; +import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.TaoBaoConstant; +import org.yeshi.utils.TimeUtil; +import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; +import com.yeshi.fanli.util.taobao.TaoBaoUtil; +import com.yeshi.fanli.util.taobao.TaoLiJinUtil; +import com.yeshi.fanli.vo.goods.GoodsDetailVO; +import com.yeshi.fanli.vo.goods.MoneyInfoVO; +import com.yeshi.fanli.vo.goods.OtherInfo; +import com.yeshi.goods.facade.entity.taobao.TLJBuyHongBaoVO; +import com.yeshi.fanli.vo.homemodule.BannerVO; +import com.yeshi.common.vo.ClientTextStyleVO; +import com.yeshi.fanli.vo.redpack.TaoLiJinWinDetailVO; +import com.yeshi.fanli.vo.tlj.ReduceHongBao; +import com.yeshi.fanli.vo.tlj.SpreadHongBao; +import com.yeshi.fanli.vo.tlj.TaoLiJinDetailVO; +import com.yeshi.fanli.vo.user.UserTaoLiJinRecordVO; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +@Controller +@RequestMapping("api/v2/taolijin") +public class TaoLiJinControllerV2 { + + @Resource + private UserTaoLiJinRecordService userTaoLiJinRecordService; + + @Resource + private ConfigService configService; + + @Resource + private ShareGoodsService shareGoodsService; + + @Resource + private UserInfoService userInfoService; + + @Resource + private UserShareGoodsRecordService userShareGoodsRecordService; + + @Resource + private HongBaoManageService hongBaoManageService; + + @Resource + private ShareGoodsTextTemplateService shareGoodsTextTemplateService; + + @Resource + private BusinessEmergent110Service businessEmergent110Service; + + @Resource + private MonitorService monitorService; + + @Resource + private UserInfoExtraService userInfoExtraService; + + @Resource + private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; + + @Resource + private UserTaoLiJinOriginService userTaoLiJinOriginService; + + @Resource + private UserTaoLiJinDetailService userTaoLiJinDetailService; + + @Resource + private UserMoneyExtraService userMoneyExtraService; + + @Resource + private ConfigTaoLiJinService configTaoLiJinService; + + @Resource + private QualityGoodsService qualityGoodsService; + + @Resource + private JumpDetailV2Service jumpDetailV2Service; + + @Resource(name = "taskExecutor") + private TaskExecutor executor; + + @Resource + private ShareHotGoodsService shareHotGoodsService; + + @Resource + private TLJBuyGoodsService tljBuyGoodsService; + + @Resource + private SwiperPictureService swiperPictureService; + + @Resource + private UserTaoLiJinNewbiesService userTaoLiJinNewbiesService; + + @Resource + private TLJFreeBuyGoodsService tljFreeBuyGoodsService; + + @Resource + private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; + + /** + * 鑾峰彇娣樼ぜ閲戝垎浜褰� + * + * @param acceptData + * @param uid + * @param page + * @param out + */ + @RequestMapping(value = "getShareRecord", method = RequestMethod.POST) + public void getShareRecord(AcceptData acceptData, Long uid, Integer page, PrintWriter out) { + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (page == null || page < 1) { + page = 1; + } + + int pageSize = Constant.PAGE_SIZE; + List<UserTaoLiJinRecordVO> list = userTaoLiJinRecordService.getRecordByUid((page - 1) * pageSize, pageSize, + uid); + if (list == null) { + list = new ArrayList<UserTaoLiJinRecordVO>(); + } + + long count = userTaoLiJinRecordService.countShareRecordByUid(uid); + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + gsonBuilder.registerTypeAdapter(Date.class, new JsonSerializer<Date>() { + @Override + public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { + if (value == null) { + return new JsonPrimitive(""); + } else { + return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm")); + } + } + }); + + Gson gson = gsonBuilder.create(); + + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("list", gson.toJson(list)); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 缁熻娣樼ぜ閲� + * + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "countHongBao", method = RequestMethod.POST) + public void countHongBao(AcceptData acceptData, Long uid, PrintWriter out) { + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + // 杩囨湡 -鍙栨秷鏀跺洖 + // userTaoLiJinOriginService.overdueHongBao(uid); + + // 鎴戠殑娣樼ぜ閲� + BigDecimal tlj = null; + UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid); + if (userMoneyExtra != null) { + tlj = userMoneyExtra.getTlj(); + } else { + tlj = new BigDecimal(0); + } + + // 浠婃棩鍒嗕韩涓暟 + long countShare = userTaoLiJinRecordService.countTodayNum(uid); + + // 鑾峰緱 + BigDecimal todayWin = userTaoLiJinOriginService.countMoneyByDate(uid, 1); + BigDecimal yesterdayWin = userTaoLiJinOriginService.countMoneyByDate(uid, 2); + BigDecimal thisMonthWin = userTaoLiJinOriginService.countMoneyByDate(uid, 3); + BigDecimal lastMonthWin = userTaoLiJinOriginService.countMoneyByDate(uid, 4); + + BigDecimal zero = new BigDecimal(0); + // 娑堣�� + BigDecimal todayUse = userTaoLiJinDetailService.countUseMoneyByDate(uid, 1); + if (todayUse == null || todayUse.compareTo(zero) > 0) { + todayUse = zero; + } + + BigDecimal yesterdayUse = userTaoLiJinDetailService.countUseMoneyByDate(uid, 2); + if (yesterdayUse == null || yesterdayUse.compareTo(zero) > 0) { + yesterdayUse = zero; + } + BigDecimal thisMonthUse = userTaoLiJinDetailService.countUseMoneyByDate(uid, 3); + if (thisMonthUse == null || thisMonthUse.compareTo(zero) > 0) { + thisMonthUse = zero; + } + BigDecimal lastMonthUse = userTaoLiJinDetailService.countUseMoneyByDate(uid, 4); + if (lastMonthUse == null || lastMonthUse.compareTo(zero) > 0) { + lastMonthUse = zero; + } + + String giveMin = configTaoLiJinService.getValueByKey("give_min_amount"); + + JSONObject data = new JSONObject(); + data.put("tlj", tlj.setScale(2).toString()); + data.put("giveMin", giveMin); + data.put("giveTip", "娉�:璧犻�佹帹骞跨孩鍖呴噾棰濊嚦灏�" + giveMin + "鍏�"); + data.put("helpLink", configTaoLiJinService.getValueByKey("hongbao_help_link")); + data.put("countShare", countShare); + data.put("todayWin", todayWin.setScale(2).toString()); + data.put("yesterdayWin", yesterdayWin.setScale(2).toString()); + data.put("thisMonthWin", thisMonthWin.setScale(2).toString()); + data.put("lastMonthWin", lastMonthWin.setScale(2).toString()); + data.put("todayUse", todayUse.setScale(2).toString().replaceAll("-", "")); + data.put("yesterdayUse", yesterdayUse.setScale(2).toString().replaceAll("-", "")); + data.put("thisMonthUse", thisMonthUse.setScale(2).toString().replaceAll("-", "")); + data.put("lastMonthUse", lastMonthUse.setScale(2).toString().replaceAll("-", "")); + + // IOS 鍒嗕韩涓暟 + ClientTextStyleVO textVo1 = new ClientTextStyleVO(); + textVo1.setContent("浠婃棩鍒涘缓鍒嗕韩"); + textVo1.setColor("#888888"); + ClientTextStyleVO textVo2 = new ClientTextStyleVO(); + textVo2.setContent(countShare + ""); + textVo2.setColor("#E5005C"); + ClientTextStyleVO textVo3 = new ClientTextStyleVO(); + textVo3.setContent("涓�"); + textVo3.setColor("#888888"); + + List<ClientTextStyleVO> listCountShare = new ArrayList<ClientTextStyleVO>(); + listCountShare.add(textVo1); + listCountShare.add(textVo2); + listCountShare.add(textVo3); + data.put("listShare", listCountShare); + + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鑾峰彇娣樼ぜ閲戞槑缁嗚鎯� + * + * @param acceptData + * @param uid + * @param index + * List鏈�鏈殑涓婚敭ID + * @param year + * 骞翠唤 + * @param month + * 鏈堜唤 + * @param out + */ + @RequestMapping(value = "getMoneyDetails") + public void getMoneyDetails(AcceptData acceptData, Long uid, Long index, Integer year, Integer month, + PrintWriter out) { + if (uid == null || uid == 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if ((year == null && month != null) || (year != null && month == null)) { + out.print(JsonUtil.loadFalseResult(1, "鏃ユ湡涓嶅畬鏁�")); + return; + } + + Date date = null; + + if (year != null && month != null) { + date = new Date(TimeUtil.convertToTimeTemp(year + "-" + month, "yyyy-M")); + Calendar ca = Calendar.getInstance(); + ca.setTime(date); + ca.add(Calendar.MONTH, 1); + date = new Date(ca.getTimeInMillis() - 1); + } + + // 鏌ヨ鍒楄〃 + List<TaoLiJinDetailVO> list = userTaoLiJinDetailService.listUserMoneyDetailForClient(uid, index, date); + // 缁熻鎬绘潯鏁� + long count = userTaoLiJinDetailService.countUserMoneyDetailForClient(uid, index, date); + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + gsonBuilder.registerTypeAdapter(TaoLiJinDetailTypeEnum.class, new TypeAdapter<TaoLiJinDetailTypeEnum>() { + @Override + public TaoLiJinDetailTypeEnum read(JsonReader arg0) throws IOException { + return null; + } + + @Override + public void write(JsonWriter out, TaoLiJinDetailTypeEnum arg1) throws IOException { + out.beginObject(); + out.name("portrait").value(arg1.getPicture()); + out.endObject(); + } + }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() { + @Override + public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { + if (value == null) { + return new JsonPrimitive(""); + } else { + return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm")); + } + } + }).registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { + @Override + public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { + if (value == null) { + return new JsonPrimitive(""); + } else { + // 淇濈暀2浣嶅皬鏁� + value = value.setScale(2); + return new JsonPrimitive(value.toString()); + } + } + }); + + Gson gson = gsonBuilder.create(); + + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("data", gson.toJson(list)); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鍒嗕韩鐖嗘鍟嗗搧-闄愪簬娣樼ぜ閲� + * + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "getShareGoods", method = RequestMethod.POST) + public void getShareGoods(AcceptData acceptData, Long uid, PrintWriter out) { + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis()); + List<ShareHotGoods> listHot = shareHotGoodsService.listByDay(day); + if (listHot == null) { + listHot = new ArrayList<ShareHotGoods>(); + } + + JSONArray array = new JSONArray(); + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + + boolean isNewUser = userInfoExtraService.isNewUser(uid); + if (isNewUser) { + // 鍒ゅ畾涓鸿�佺敤鎴凤細 鏂颁汉鍙浣跨敤浜嗘柊浜虹孩鍖咃紝涔熷氨鏄偅1鍧楅挶锛岄偅涔堬紝浠栫湅鍒扮殑鍒嗕韩鐖嗘涓殑鍟嗗搧-灏卞彧鑳藉垎浜�� + long countRecord = userTaoLiJinRecordService.countRecordByUid(uid); + if (countRecord > 0) { + isNewUser = false; + } + } + + BigDecimal proportion = hongBaoManageService.getTLJShareRate(System.currentTimeMillis(),acceptData.getSystem()); + for (ShareHotGoods hotGoods : listHot) { + TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods(); + if (taoBaoGoodsBrief == null) { + continue; + } + + // 璁$畻鎺ㄥ箍绾㈠寘 + String warningRate = configTaoLiJinService.getValueByKey("warning_value", new Date()); + BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, taoBaoGoodsBrief); + + // 鎺ㄥ箍绾㈠寘 涓嶈兘灏忎簬1 + if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) { + continue; + } + + TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), + null); + // 鍘绘帀鏍囩 + extra.setLabels(null); + + // 鏄剧ず绫诲瀷 + if (isNewUser) { + extra.setMoneyType(1); + extra.setSpreadMoney("鎺ㄥ箍绾㈠寘 楼" + 1); + } else { + extra.setMoneyType(2); + extra.setSpreadMoney("鎺ㄥ箍绾㈠寘 楼" + spreadMoney); + } + array.add(gson.toJson(extra)); + } + + /* + * // 杩囨湡 -鍙栨秷鏀跺洖 executor.execute(new Runnable() { + * + * @Override public void run() { + * userTaoLiJinOriginService.overdueHongBao(uid); } }); + */ + + JSONObject data = new JSONObject(); + data.put("count", array.size()); + data.put("list", array); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鍒嗕韩鐖嗘鍟嗗搧-闄愪簬娣樼ぜ閲� + * + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "getShareGoodsV2", method = RequestMethod.POST) + public void getShareGoodsV2(AcceptData acceptData, Long uid, PrintWriter out) { + String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis()); + List<ShareHotGoods> listHot = shareHotGoodsService.listByDay(day); + if (listHot == null) { + listHot = new ArrayList<ShareHotGoods>(); + } + + JSONArray array = new JSONArray(); + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + + // 鍙栨秷鏂颁汉鑷喘 + boolean isNewUser = false;// userInfoExtraService.isNewUser(uid); + if (isNewUser) { + // 鍒ゅ畾涓鸿�佺敤鎴凤細 鏂颁汉鍙浣跨敤浜嗘柊浜虹孩鍖咃紝涔熷氨鏄偅1鍧楅挶锛岄偅涔堬紝浠栫湅鍒扮殑鍒嗕韩鐖嗘涓殑鍟嗗搧-灏卞彧鑳藉垎浜�� + long countRecord = userTaoLiJinRecordService.countRecordByUid(uid); + if (countRecord > 0) { + isNewUser = false; + } + } + + ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(),acceptData.getSystem()); + + for (ShareHotGoods hotGoods : listHot) { + TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods(); + if (taoBaoGoodsBrief == null) { + continue; + } + + // 璁$畻鎺ㄥ箍绾㈠寘 + String warningRate = configTaoLiJinService.getValueByKey("warning_value", new Date()); + BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, taoBaoGoodsBrief); + + // 鎺ㄥ箍绾㈠寘 涓嶈兘灏忎簬1 + if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) { + continue; + } + + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO); + + // 澶т簬1.6.5鐨勬墠浼氭樉绀虹鍒╀环 + if (com.yeshi.fanli.util.VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) { + if (detailVO.getCouponPrice() != null && detailVO.getCouponPrice().compareTo(new BigDecimal(0)) > 0) + detailVO.setCouponPrice(detailVO.getCouponPrice().subtract(spreadMoney)); + else + detailVO.setZkPrice(detailVO.getZkPrice().subtract(spreadMoney)); + } + + // 鍘绘帀鏍囩 + detailVO.setLabels(null); + + MoneyInfoVO moneyInfo = detailVO.getMoneyInfo(); + OtherInfo otherInfo = new OtherInfo(); + SpreadHongBao spreadHongBao = new SpreadHongBao(); + + // 鏄剧ず绫诲瀷 + if (isNewUser) { + moneyInfo.setMoneyType(1); + spreadHongBao.setName("鎺ㄥ箍绾㈠寘"); + spreadHongBao.setMoney(" 楼1"); + } else { + moneyInfo.setMoneyType(2); + spreadHongBao.setName("鎺ㄥ箍绾㈠寘"); + spreadHongBao.setMoney(" 楼" + spreadMoney); + } + detailVO.setMoneyInfo(moneyInfo); + otherInfo.setSpreadHongBao(spreadHongBao); + detailVO.setOtherInfo(otherInfo); + + array.add(gson.toJson(detailVO)); + } + + /* + * executor.execute(new Runnable() { + * + * @Override public void run() { // 杩囨湡 + * userTaoLiJinOriginService.overdueHongBao(uid); } }); + */ + + JSONObject data = new JSONObject(); + data.put("count", array.size()); + data.put("list", array); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鍒嗕韩鐖嗘鍟嗗搧-闄愪簬娣樼ぜ閲� + * + * @param acceptData + * @param out + */ + @RequestMapping(value = "getBuyGoods", method = RequestMethod.POST) + public void getBuyGoods(AcceptData acceptData, int page, PrintWriter out) { + + String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis()); + List<TLJBuyGoods> listHot = tljBuyGoodsService.listByDay(day); + if (listHot == null) { + listHot = new ArrayList<TLJBuyGoods>(); + } + + JSONArray array = new JSONArray(); + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + + BigDecimal proportion = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE; + for (TLJBuyGoods hotGoods : listHot) { + TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods(); + if (taoBaoGoodsBrief == null) { + continue; + } + + // 璁$畻鎺ㄥ箍绾㈠寘 + BigDecimal spreadMoney = TaoBaoUtil.getGoodsHongBaoMoney(taoBaoGoodsBrief, proportion,true); + + // 鎺ㄥ箍绾㈠寘 涓嶈兘灏忎簬1 + if (spreadMoney.compareTo(new BigDecimal(1.0)) < 0) { + continue; + } + + TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), + null); + // 鍘绘帀鏍囩 + extra.setLabels(null); + + String hongBao = spreadMoney.toString(); + TLJBuyHongBaoVO vo = new TLJBuyHongBaoVO(); + vo.setLeft(hotGoods.getLeftHongBaoCount()); + vo.setMoney(hongBao); + vo.setTagName("浠樻绔嬪噺 楼" + hongBao); + vo.setTip(""); + vo.setTotal(hotGoods.getTotalHongBaoCount()); + extra.setTljBuyHongBao(vo); + // 鏄剧ず绫诲瀷 + extra.setMoneyType(2); + extra.setSpreadMoney("浠樻绔嬪噺 楼" + spreadMoney); + + array.add(gson.toJson(extra)); + } + + if (page > 1) + array.clear(); + + JSONObject data = new JSONObject(); + data.put("count", array.size()); + data.put("list", array); + if (page == 1) { + List<BannerVO> bannerList = swiperPictureService.getByBannerCardAndVersion("zigoulijian_banner", + acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem()); + + if (bannerList != null && bannerList.size() > 0) + data.put("topPicture", bannerList.get(0).getSrc()); + else + data.put("topPicture", ""); + + data.put("ruleUrl", configService.getValue(ConfigKeyEnum.zigoulijianRule.getKey(),acceptData.getSystem())); + } + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鍒嗕韩鐖嗘鍟嗗搧-闄愪簬娣樼ぜ閲� + * + * @param acceptData + * @param out + */ + @RequestMapping(value = "getBuyGoodsV2", method = RequestMethod.POST) + public void getBuyGoodsV2(AcceptData acceptData, int page, PrintWriter out) { + + String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis()); + List<TLJBuyGoods> listHot = tljBuyGoodsService.listByDay(day); + if (listHot == null) { + listHot = new ArrayList<TLJBuyGoods>(); + } + + JSONArray array = new JSONArray(); + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + + BigDecimal proportion = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE; + ConfigParamsDTO paramsDTO = new ConfigParamsDTO(proportion, proportion, Constant.MAX_REWARD_RATE, + hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP,acceptData.getSystem())); + for (TLJBuyGoods hotGoods : listHot) { + TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods(); + if (taoBaoGoodsBrief == null) { + continue; + } + + // 璁$畻鎺ㄥ箍绾㈠寘 + BigDecimal spreadMoney = TaoBaoUtil.getGoodsHongBaoMoney(taoBaoGoodsBrief, proportion,true); + + // 鎺ㄥ箍绾㈠寘 涓嶈兘灏忎簬1 + if (spreadMoney.compareTo(new BigDecimal(1.0)) < 0) { + continue; + } + + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO); + + // 澶т簬1.6.5鐨勬墠浼氭樉绀虹鍒╀环 + if (com.yeshi.fanli.util.VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) { + if (detailVO.getCouponPrice() != null && detailVO.getCouponPrice().compareTo(new BigDecimal(0)) > 0) + detailVO.setCouponPrice(detailVO.getCouponPrice().subtract(spreadMoney)); + else + detailVO.setZkPrice(detailVO.getZkPrice().subtract(spreadMoney)); + } + + // 鍘绘帀鏍囩 + detailVO.setLabels(null); + + MoneyInfoVO moneyInfo = detailVO.getMoneyInfo(); + moneyInfo.setMoneyType(2); + detailVO.setMoneyInfo(moneyInfo); + + String hongBao = spreadMoney.toString(); + ReduceHongBao vo = new ReduceHongBao(); + vo.setLeft(hotGoods.getLeftHongBaoCount()); + vo.setMoney(" 楼" + hongBao); + vo.setName("浠樻绔嬪噺 "); + vo.setTip(""); + vo.setTotal(hotGoods.getTotalHongBaoCount()); + + OtherInfo otherInfo = new OtherInfo(); + otherInfo.setReduceHongBao(vo); + detailVO.setOtherInfo(otherInfo); + + array.add(gson.toJson(detailVO)); + } + + if (page > 1) + array.clear(); + + JSONObject data = new JSONObject(); + data.put("count", array.size()); + data.put("list", array); + if (page == 1) { + List<BannerVO> bannerList = swiperPictureService.getByBannerCardAndVersion("zigoulijian_banner", + acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem()); + + if (bannerList != null && bannerList.size() > 0) + data.put("topPicture", bannerList.get(0).getSrc()); + else + data.put("topPicture", ""); + + data.put("ruleUrl", configService.getValue(ConfigKeyEnum.zigoulijianRule.getKey(),acceptData.getSystem())); + } + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 璧犻�佹窐绀奸噾 + * + * @param acceptData + * @param uid + * @param amount + * @param out + */ + @RequestMapping(value = "giveTLJ", method = RequestMethod.POST) + public void giveTLJ(AcceptData acceptData, Long uid, BigDecimal amount, PrintWriter out) { + out.print(JsonUtil.loadFalseResult(1, "鎶辨瓑锛屾帹骞跨孩鍖呯浉鍏冲姛鑳藉凡涓嬬嚎锛�")); + } + + /** + * 鏂颁汉绾㈠寘璇︽儏 + * + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "getWinDetail", method = RequestMethod.POST) + public void getWinDetail(AcceptData acceptData, Long uid, PrintWriter out) { + if (uid == null || uid <= 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + try { + TaoLiJinWinDetailVO winDetail = userTaoLiJinNewbiesService.receiveReward(uid); + if (winDetail == null) { + out.print(JsonUtil.loadFalseResult(1, "绾㈠寘宸茶鎶㈠厜")); + return; + } + + // 2銆侀《閮ㄨ疆鎾浘 + List<BannerVO> oldtopPicList = swiperPictureService.getByBannerCardAndVersion( + "redpack_win_detail_banner", acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem()); + List<BannerVO> topPicList = new ArrayList<>(); + if (oldtopPicList != null && oldtopPicList.size() > 0) + topPicList.addAll(oldtopPicList); + + JSONObject data = new JSONObject(); + data.put("detail", JsonUtil.getApiCommonGson().toJson(winDetail)); + data.put("banner", JsonUtil.getApiCommonGson().toJson(topPicList)); + out.print(JsonUtil.loadTrueResult(data)); + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult(1, "绾㈠寘宸茶鎶㈠厜鍟�")); + } + } + + /** + * 鏂颁汉鍏嶅崟鍒楄〃 + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "gerFreeList") + public void gerFreeList(String callback, AcceptData acceptData, int page, Long uid, PrintWriter out) { + if (uid == null || uid <= 0) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis()); + List<TLJFreeBuyGoods> listFree = tljFreeBuyGoodsService.listByDay(day); + if (listFree == null) { + listFree = new ArrayList<TLJFreeBuyGoods>(); + } + + JSONArray array = new JSONArray(); + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + + ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(),acceptData.getSystem()); + + for (TLJFreeBuyGoods freeGoods : listFree) { + TaoBaoGoodsBrief goods = freeGoods.getGoods(); + if (goods == null) + continue; + + // 璁$畻鍒稿悗浠� 1<= n <= 2 + BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(goods); + if (couplePrice.compareTo(new BigDecimal(1.0)) < 0 && couplePrice.compareTo(new BigDecimal(2.0)) > 0) + continue; + + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); + + // 涓撳睘鏍囩 + List<ClientTextStyleVO> labels = new ArrayList<ClientTextStyleVO>(); + labels.add(new ClientTextStyleVO("鏂颁汉涓撳睘", "#FE0014")); + labels.add(new ClientTextStyleVO("瀹炰粯0鍏�", "#FF9600")); + detailVO.setLabels(labels); + array.add(gson.toJson(detailVO)); + } + + if (page > 1) + array.clear(); + + JSONObject data = new JSONObject(); + data.put("count", array.size()); + data.put("list", array); + if (page == 1) { + try { + data.put("portrait", userInfoService.getUserInfo(uid).getPortrait()); + } catch (UserInfoException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, e.getMsg())); + return; + } + + String state = "宸茶繃鏈�"; + BigDecimal balance = new BigDecimal(0); + UserTaoLiJinNewbies winDetail = userTaoLiJinNewbiesService.selectByPrimaryKey(uid); + if (winDetail != null) { + balance = winDetail.getMoney(); + if (winDetail.getEndTime().getTime() > java.lang.System.currentTimeMillis()) { + try { + String remaining = DateUtil.dateDiff2(new Date(), winDetail.getEndTime()); + if (!remaining.equals("0鍒�")) + state = "鍓�" + remaining + "杩囨湡"; + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + String rule = configTaoLiJinService.getValueByKey("new_user_free_buy_list_rule"); + rule = rule.replace("{閾炬帴}", configService.getValue(ConfigKeyEnum.customerServiceLink.getKey(),acceptData.getSystem())); + + data.put("state", state); + data.put("balance", "鏂颁汉绾㈠寘锛�" + balance.setScale(2) + "鍏�"); + data.put("rule", rule); + } + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } +} -- Gitblit v1.8.0