From 2147d023563a7c9d05d97547c00d6b0162c0644c Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 09 十一月 2020 18:37:24 +0800 Subject: [PATCH] 刷单风险规则优化 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v1/h5/AppH5CouponController.java | 368 +++++++++++++++++++++++++++++++++------------------- 1 files changed, 235 insertions(+), 133 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/h5/AppH5CouponController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/h5/AppH5CouponController.java index 8d2ea35..4777986 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/h5/AppH5CouponController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/h5/AppH5CouponController.java @@ -7,28 +7,38 @@ import javax.annotation.Resource; +import com.yeshi.fanli.util.SystemInfoUtil; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.yeshi.fanli.dto.ConfigParamsDTO; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.lable.QualityFactory; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; -import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.fanli.entity.bus.user.vip.TearcherInfo; +import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; +import com.yeshi.fanli.entity.goods.FreeGoodsCoupon; +import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.exception.taobao.TaoKeApiException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; +import com.yeshi.fanli.service.inter.goods.FreeGoodsCouponService; import com.yeshi.fanli.service.inter.lable.QualityGoodsService; -import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; +import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.UserSystemCouponService; +import com.yeshi.fanli.service.inter.user.vip.TearcherService; +import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; +import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import com.yeshi.fanli.vo.goods.GoodsDetailVO; +import com.yeshi.fanli.vo.goods.OtherInfo; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -37,152 +47,244 @@ @RequestMapping("api/apph5/v1/coupon") public class AppH5CouponController { - @Resource - private QualityGoodsService qualityGoodsService; + @Resource + private QualityGoodsService qualityGoodsService; - @Resource - private HongBaoManageService hongBaoManageService; + @Resource + private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; - @Resource - private UserInfoService userInfoService; + @Resource + private UserInfoService userInfoService; - @Resource - private UserSystemCouponService userSystemCouponService; - - @Resource - private UserInfoExtraService userInfoExtraService; + @Resource + private UserSystemCouponService userSystemCouponService; - @RequestMapping("getMianDanGoodsList") - public void getMianDanGoodsList(AcceptData acceptData, PrintWriter out, int page, int pageSize, String callback) { - List<QualityFactory> listQuery = qualityGoodsService.listFreeGoods((page - 1) * pageSize, pageSize); - if (listQuery == null || listQuery.size() == 0) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "娌℃湁鏇村浜�")); - return; - } + @Resource + private UserInfoExtraService userInfoExtraService; - List<Long> listGid = new ArrayList<Long>(); - for (QualityFactory qualityFactory : listQuery) { - TaoBaoGoodsBrief taoBaoGoodsBrief = qualityFactory.getTaoBaoGoodsBrief(); - if (taoBaoGoodsBrief == null) { - continue; - } - listGid.add(taoBaoGoodsBrief.getAuctionId()); - } + @Resource + private UserVIPInfoService userVIPInfoService; - // API缃戠粶鎺ュ彛楠岃瘉鏄惁鍦ㄥ敭 - List<TaoBaoGoodsBrief> listTaoKeGoods = null; - try { - listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid); - } catch (TaoKeApiException e) { - e.printStackTrace(); - } catch (TaobaoGoodsDownException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } + @Resource + private FreeGoodsCouponService freeGoodsCouponService; - JSONArray array = new JSONArray(); - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + @Resource + private TearcherService tearcherService; - BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); - BigDecimal shareRate = hongBaoManageService.getShareRate(); - /* 閬嶅巻鍒楄〃鏁版嵁 */ - for (QualityFactory selectionGoods : listQuery) { + @RequestMapping("getMianDanGoodsList") + public void getMianDanGoodsList(AcceptData acceptData, PrintWriter out, int page, int pageSize, String callback) { + if (acceptData.getSystem() == null) + acceptData.setSystem(SystemInfoUtil.getSystem(acceptData)); - TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief(); + List<QualityFactory> listQuery = qualityGoodsService.listFreeGoods((page - 1) * pageSize, pageSize); + if (listQuery == null || listQuery.size() == 0) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "娌℃湁鏇村浜�")); + return; + } - if (taoBaoGoodsBrief == null) { - continue; - } + List<Long> listGid = new ArrayList<Long>(); + for (QualityFactory qualityFactory : listQuery) { + TaoBaoGoodsBrief taoBaoGoodsBrief = qualityFactory.getTaoBaoGoodsBrief(); + if (taoBaoGoodsBrief == null) { + continue; + } + listGid.add(taoBaoGoodsBrief.getAuctionId()); + } - if (listTaoKeGoods != null && listTaoKeGoods.size() > 0) { - boolean stateSale = false; // 榛樿鍋滃敭 - Long goodsId = taoBaoGoodsBrief.getAuctionId(); - for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) { - Long auctionId = taoKeGoods.getAuctionId(); - if (goodsId == auctionId || goodsId.equals(auctionId)) { - stateSale = true; // 鍦ㄥ敭 - break; - } - } + // API缃戠粶鎺ュ彛楠岃瘉鏄惁鍦ㄥ敭 + List<TaoBaoGoodsBrief> listTaoKeGoods = null; + try { + listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid); + } catch (TaoKeApiException e) { + e.printStackTrace(); + } catch (TaobaoGoodsDownException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } - if (!stateSale) { - continue; - } - } + JSONArray array = new JSONArray(); + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief); - if (couplePrice.compareTo(new BigDecimal("9.9")) == 1) { - continue; // 鍒稿悗浠峰ぇ浜�10 - } - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate); - array.add(gson.toJson(detailVO)); - } - JSONObject data = new JSONObject(); - data.put("goodsList", array); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } + ConfigParamsDTO configParamsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), UserLevelEnum.daRen, acceptData.getSystem()); + /* 閬嶅巻鍒楄〃鏁版嵁 */ + for (QualityFactory selectionGoods : listQuery) { - @RequestMapping("getMianDanInfo") - public void getMianDanInfo(AcceptData acceptData, PrintWriter out, Long uid, String callback) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); - return; - } - // 鑾峰彇鐢ㄦ埛淇℃伅 - UserInfo user = userInfoService.getUserById(uid); - if (user == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛涓嶅瓨鍦�")); - return; - } - // 鑾峰彇鍏嶅崟鍒告暟閲� - long couponCount = userSystemCouponService.countUsableFreeCouponForBuy(uid); - JSONObject userJson = new JSONObject(); - userJson.put("nickName", user.getNickName()); - userJson.put("portrait", user.getPortrait()); - userJson.put("id", user.getId()); + TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief(); - JSONObject data = new JSONObject(); - data.put("user", userJson); - data.put("couponCount", couponCount); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } + if (taoBaoGoodsBrief == null) { + continue; + } - /** - * 鑾峰彇杩斿埄濂栧姳鍒镐俊鎭� - * - * @param acceptData - * @param out - * @param uid - * @param callback - */ - @RequestMapping("getRewardCouponInfo") - public void getRewardCouponInfo(AcceptData acceptData, PrintWriter out, Long uid, String callback) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); - return; - } - // 鑾峰彇鐢ㄦ埛淇℃伅 - UserInfo user = userInfoService.getUserById(uid); - if (user == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛涓嶅瓨鍦�")); - return; - } - // 鑾峰彇鍏嶅崟鍒告暟閲� - long couponCount = userSystemCouponService.countUsableRewardCoupon(uid); - UserInfoExtra extraInfo=userInfoExtraService.getUserInfoExtra(uid); - long integralCount=extraInfo!=null?extraInfo.getGoldCoin():0L; - JSONObject userJson = new JSONObject(); - userJson.put("nickName", user.getNickName()); - userJson.put("portrait", user.getPortrait()); - userJson.put("id", user.getId()); + if (listTaoKeGoods != null && listTaoKeGoods.size() > 0) { + boolean stateSale = false; // 榛樿鍋滃敭 + Long goodsId = taoBaoGoodsBrief.getAuctionId(); + for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) { + Long auctionId = taoKeGoods.getAuctionId(); + if (goodsId == auctionId || goodsId.equals(auctionId)) { + stateSale = true; // 鍦ㄥ敭 + break; + } + } - JSONObject data = new JSONObject(); - data.put("user", userJson); - data.put("couponCount", couponCount); - data.put("integralCount", integralCount); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } + if (!stateSale) { + continue; + } + } -} + BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief); + if (couplePrice.compareTo(new BigDecimal("9.9")) == 1) { + continue; // 鍒稿悗浠峰ぇ浜�10 + } + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, configParamsDTO); + array.add(gson.toJson(detailVO)); + } + JSONObject data = new JSONObject(); + data.put("goodsList", array); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + @RequestMapping("getMianDanInfo") + public void getMianDanInfo(AcceptData acceptData, PrintWriter out, Long uid, String callback) { + if (acceptData.getSystem() == null) + acceptData.setSystem(SystemInfoUtil.getSystem(acceptData)); + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + // 鑾峰彇鐢ㄦ埛淇℃伅 + UserInfo user = userInfoService.getUserById(uid); + if (user == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛涓嶅瓨鍦�")); + return; + } + // 鑾峰彇鍏嶅崟鍒告暟閲� + long couponCount = userSystemCouponService.countUsableFreeCouponForBuy(uid); + JSONObject userJson = new JSONObject(); + userJson.put("nickName", user.getNickName()); + userJson.put("portrait", user.getPortrait()); + userJson.put("id", user.getId()); + + JSONObject data = new JSONObject(); + data.put("user", userJson); + data.put("couponCount", couponCount); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + /** + * 鑾峰彇杩斿埄濂栧姳鍒镐俊鎭� + * + * @param acceptData + * @param out + * @param uid + * @param callback + */ + @RequestMapping("getRewardCouponInfo") + public void getRewardCouponInfo(AcceptData acceptData, PrintWriter out, Long uid, String callback) { + if (acceptData.getSystem() == null) + acceptData.setSystem(SystemInfoUtil.getSystem(acceptData)); + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + // 鑾峰彇鐢ㄦ埛淇℃伅 + UserInfo user = userInfoService.getUserById(uid); + if (user == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛涓嶅瓨鍦�")); + return; + } + // 鑾峰彇鍏嶅崟鍒告暟閲� + long couponCount = userSystemCouponService.countUsableRewardCoupon(uid); + UserInfoExtra extraInfo = userInfoExtraService.getUserInfoExtra(uid); + long integralCount = extraInfo != null ? extraInfo.getGoldCoin() : 0L; + JSONObject userJson = new JSONObject(); + userJson.put("nickName", user.getNickName()); + userJson.put("portrait", user.getPortrait()); + userJson.put("id", user.getId()); + userJson.put("vip", userVIPInfoService.isVIP(user.getId())); + + JSONObject data = new JSONObject(); + data.put("user", userJson); + data.put("couponCount", couponCount); + data.put("integralCount", integralCount); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + /** + * 鏂扮増鍏嶅崟鍟嗗搧鍒楄〃 + * + * @param acceptData + * @param callback + * @param page + * @param goodsType + * @param out + */ + @RequestMapping("getFreeGoodsList") + public void getFreeGoodsList(AcceptData acceptData, String callback, Long uid, int page, int goodsType, + PrintWriter out) { + if (acceptData.getSystem() == null) + acceptData.setSystem(SystemInfoUtil.getSystem(acceptData)); + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + // 鑾峰彇鐢ㄦ埛淇℃伅 + UserInfo user = userInfoService.getUserById(uid); + if (user == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛涓嶅瓨鍦�")); + return; + } + + String tearcherWX = null; + TearcherInfo tearcherInfo = tearcherService.selectByUid(uid); + if (tearcherInfo != null) { + tearcherWX = tearcherInfo.getWxID(); + } + + // 鑾峰彇鍏嶅崟鍒告暟閲� + long couponNum = userSystemCouponService.countUsableFreeCouponForBuy(uid); + + JSONArray array = new JSONArray(); + List<FreeGoodsCoupon> list = freeGoodsCouponService.listByType((page - 1) * Constant.PAGE_SIZE, + Constant.PAGE_SIZE, goodsType); + if (list != null && list.size() > 0) { + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create(); + for (FreeGoodsCoupon freeGoods : list) { + GoodsDetailVO goods = freeGoods.getGoods(); + if (goods == null) + continue; + + // 瀹炰粯娆�0 + OtherInfo otherInfo = goods.getOtherInfo(); + if (otherInfo == null) + otherInfo = new OtherInfo(); + otherInfo.setActualPay(BigDecimal.ZERO); + + // 琛ラ綈閲戦 + if (goods.isHasCoupon()) { + otherInfo.setMendMoney(goods.getCouponPrice()); + } else { + otherInfo.setMendMoney(goods.getZkPrice()); + } + goods.setOtherInfo(otherInfo); + array.add(gson.toJson(goods)); + } + } + + JSONObject userJson = new JSONObject(); + userJson.put("nickName", user.getNickName()); + userJson.put("portrait", user.getPortrait()); + userJson.put("couponNum", couponNum); + userJson.put("tearcherWX", tearcherWX); + + JSONObject data = new JSONObject(); + data.put("user", userJson); + data.put("count", freeGoodsCouponService.countByType(goodsType)); + data.put("list", array); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + +} \ No newline at end of file -- Gitblit v1.8.0