admin
2022-04-27 3340ed122e19e3943ce4f93eb52103b623a3fc2c
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java
@@ -5,10 +5,7 @@
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import javax.annotation.Resource;
@@ -19,13 +16,16 @@
import com.yeshi.fanli.lijin.manager.GoodsLijinMnager;
import com.yeshi.fanli.lijin.manager.UserLijinMnager;
import com.yeshi.fanli.service.inter.pdd.PDDAuthService;
import com.yeshi.fanli.service.inter.user.*;
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.manger.PIDManager;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.goods.GoodsJumpUtil;
import com.yeshi.fanli.vo.common.WXXCXJumpInfoVO;
import com.yeshi.fanli.vo.pdd.PDDConvertLinkResultVO;
import com.yeshi.fanli.vo.goods.GoodsJumpLinkVO;
import com.yeshi.fanli.vo.suning.SuningConvertLinkResult;
import com.yeshi.goods.facade.dto.taobao.TaoBaoGoodsImportantInfo;
import org.json.simple.JSONArray;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -87,10 +87,6 @@
import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.service.inter.user.ShamUserService;
import com.yeshi.fanli.service.inter.user.TBPidService;
import com.yeshi.fanli.service.inter.user.UserGoodsStorageService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService;
@@ -229,6 +225,9 @@
    @Resource
    private UserLijinMnager userLijinMnager;
    @Resource
    private UserFunctionsLimitService userFunctionsLimitService;
    private GoodsMoneyConfigParamsDTO getParamsDTO(String platform, String version, Long uid, SystemEnum system) {
        UserLevelEnum level = UserLevelEnum.daRen;
@@ -631,7 +630,7 @@
        } else {// 普通购买
            OtherInfo otherInfo = new OtherInfo();
            RewardCouponVO rewardCoupon = new RewardCouponVO();
            rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
            rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
            JSONObject params1 = new JSONObject();
            if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
                params1.put("url", configService.getValue(ConfigKeyEnum.specialGuideRewardCouponLink.getKey(), acceptData.getSystem()));
@@ -788,7 +787,7 @@
        // 奖励券返利
        RewardCouponVO rewardCoupon = new RewardCouponVO();
        rewardCoupon.setMaxMoneyPlus(maxMoneyPlus);
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
        JSONObject params1 = new JSONObject();
        if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
            params1.put("url", configService.getValue(ConfigKeyEnum.specialGuideRewardCouponLink.getKey(), acceptData.getSystem()));
@@ -985,7 +984,7 @@
        // 附加信息
        OtherInfo otherInfo = new OtherInfo();
        RewardCouponVO rewardCoupon = new RewardCouponVO();
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
        JSONObject params1 = new JSONObject();
        if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
            params1.put("url", configService.getValue(ConfigKeyEnum.specialGuideRewardCouponLink.getKey(), acceptData.getSystem()));
@@ -1192,7 +1191,7 @@
        // 附加信息
        OtherInfo otherInfo = new OtherInfo();
        RewardCouponVO rewardCoupon = new RewardCouponVO();
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
        JSONObject params1 = new JSONObject();
        if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
            params1.put("url", configService.getValue(ConfigKeyEnum.specialGuideRewardCouponLink.getKey(), acceptData.getSystem()));
@@ -1332,7 +1331,7 @@
        // 附加信息
        OtherInfo otherInfo = new OtherInfo();
        RewardCouponVO rewardCoupon = new RewardCouponVO();
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web"));
        rewardCoupon.setJumpDetail(jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()));
        JSONObject params1 = new JSONObject();
        params1.put("url", userVipConfigService.getValueByKey("vip_link"));
@@ -1624,7 +1623,7 @@
            List<GoodsDetailVO> listExtra = new ArrayList<GoodsDetailVO>();
            GoodsMoneyConfigParamsDTO paramsDTO = getParamsDTO(acceptData.getPlatform(), acceptData.getVersion(), null, acceptData.getSystem());
            listExtra = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO);
            listExtra = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO,false);
            List<GoodsDetailVO> listQuality = new ArrayList<GoodsDetailVO>();
            // 取偶数个数据
@@ -1689,7 +1688,7 @@
            }
        }
        GoodsJumpLinkVO vo = new GoodsJumpLinkVO();
        GoodsJumpLinkVO vo = GoodsJumpUtil.getJDJumpInfo(jumpLink);
        vo.set_native(true);
        vo.setJumpLink(jumpLink);
        vo.setNativeJumpLink(jumpLink);
@@ -1730,6 +1729,11 @@
            getJDLinkWithoutFanLi(acceptData, id, couponUrl, source, out);
            return;
        }
        //未登录领券
        if (uid == null) {
            getJDLinkWithoutFanLi(acceptData, id, couponUrl, source, out);
            return;
        }
        if (uid == null || uid <= 0) {
            out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
@@ -1740,6 +1744,11 @@
        UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
        if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
            out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
            return;
        }
        if (userFunctionsLimitService.isLimit(uid, SystemFunction.fanli, new Date())) {
            out.print(JsonUtil.loadFalseResult(1, "该功能限制使用"));
            return;
        }
@@ -1773,23 +1782,11 @@
            }
        }
        GoodsJumpLinkVO vo = new GoodsJumpLinkVO();
        vo.set_native(true);
        vo.setJumpLink(jumpLink);
        vo.setNativeJumpLink(jumpLink);
        try {
            String wxPage = "pages/union/proxy/proxy?spreadUrl=" + URLEncoder.encode(jumpLink, "UTF-8");
            WXXCXJumpInfoVO wxxcxJumpInfoVO = new WXXCXJumpInfoVO();
            wxxcxJumpInfoVO.setUserName("gh_45b306365c3d");
            wxxcxJumpInfoVO.setPath(wxPage);
            vo.setWxxcxJumpInfo(wxxcxJumpInfoVO);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        GoodsJumpLinkVO vo = GoodsJumpUtil.getJDJumpInfo(jumpLink);
        JSONObject data = JSONObject.fromObject(new Gson().toJson(vo));
        data.put("native", vo.is_native());
        data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
        if (uid != null)
            data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
        out.print(JsonUtil.loadTrueResult(data));
        // 获得金币
@@ -1844,15 +1841,26 @@
            pid = pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.coupon);
            uid = null;
        } else {
            if (uid == null || uid <= 0) {
                out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
                return;
            }
            UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
            if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
                out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
                return;
            if (uid == null) {
                pid = pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.coupon);
                uid = null;
            } else {
                if (uid == null || uid <= 0) {
                    out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
                    return;
                }
                UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
                if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
                    out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
                    return;
                }
                if (userFunctionsLimitService.isLimit(uid, SystemFunction.fanli, new Date())) {
                    out.print(JsonUtil.loadFalseResult(1, "该功能限制使用"));
                    return;
                }
            }
        }
@@ -1864,7 +1872,7 @@
            return;
        }
        String customParams = pddAuthService.getFanliCustomParams(uid);
        String customParams = uid == null ? Constant.PDD_SEARCH_CUSTOMER_PARAMS : pddAuthService.getFanliCustomParams(uid);
        boolean auth = PinDuoDuoApiUtil.isAuth(pid, customParams);
        JSONObject data = new JSONObject();
        PDDConvertLinkResultVO convertUrl = null;
@@ -1875,19 +1883,11 @@
            LogHelper.test(String.format("拼多多转链:uid:%s data:%s", uid + "", data.toString()));
        }
        GoodsJumpLinkVO vo = new GoodsJumpLinkVO();
        vo.set_native(true);
        vo.setNativeJumpLink(PinDuoDuoUtil.getAndroidNativeURI(convertUrl.getUrl()));
        vo.setJumpLink(convertUrl.getUrl());
        if (convertUrl.getWe_app_info() != null) {
            WXXCXJumpInfoVO wxxcxJumpInfoVO = new WXXCXJumpInfoVO();
            wxxcxJumpInfoVO.setPath(convertUrl.getWe_app_info().getPage_path());
            wxxcxJumpInfoVO.setUserName(convertUrl.getWe_app_info().getUser_name());
            vo.setWxxcxJumpInfo(wxxcxJumpInfoVO);
        }
        GoodsJumpLinkVO vo = GoodsJumpUtil.getPDDJumpInfo(convertUrl);
        data = JSONObject.fromObject(new Gson().toJson(vo));
        data.put("native", vo.is_native());
        data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
        if (uid != null)
            data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
        out.print(JsonUtil.loadTrueResult(data));
        // 获得金币
@@ -1915,18 +1915,28 @@
        if (!SystemInfoUtil.hasFunctions(acceptData.getSystem(), SystemFunction.fanli)) {
            tag = VipShopUtil.getCouponChanTag();
        } else {
            if (uid == null || uid <= 0) {
                out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
                return;
            }
            //只是领券
            if (uid == null) {
                tag = VipShopUtil.getCouponChanTag();
            } else {
                if (uid == null || uid <= 0) {
                    out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
                    return;
                }
            UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
            if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
                out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
                return;
            }
                UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
                if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
                    out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
                    return;
                }
            tag = VipShopUtil.getBuyChanTag(uid);
                if (userFunctionsLimitService.isLimit(uid, SystemFunction.fanli, new Date())) {
                    out.print(JsonUtil.loadFalseResult(1, "该功能限制使用"));
                    return;
                }
                tag = VipShopUtil.getBuyChanTag(uid);
            }
        }
        VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(id + "");
@@ -1936,21 +1946,12 @@
        }
        VIPConvertResultDTO convertUrl = VipShopApiUtil.convertLink(id + "", tag);
        GoodsJumpLinkVO vo = new GoodsJumpLinkVO();
        vo.set_native(true);
        vo.setJumpLink(convertUrl.getUrl());
        vo.setNativeJumpLink(convertUrl.getDeeplinkUrl());
        if (!StringUtil.isNullOrEmpty(convertUrl.getVipWxUrl())) {
            WXXCXJumpInfoVO wxxcxJumpInfoVO = new WXXCXJumpInfoVO();
            wxxcxJumpInfoVO.setUserName("gh_8ed2afad9972");
            wxxcxJumpInfoVO.setPath(convertUrl.getVipWxUrl());
            vo.setWxxcxJumpInfo(wxxcxJumpInfoVO);
        }
        GoodsJumpLinkVO vo = GoodsJumpUtil.getVIPShopJumpInfo(convertUrl);
        JSONObject data = JSONObject.fromObject(new Gson().toJson(vo));
        data.put("native", vo.is_native());
        data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
        if (uid != null)
            data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
        out.print(JsonUtil.loadTrueResult(data));
        // 获得金币
        integralGetService.addCouponRebate(uid);
@@ -1968,14 +1969,24 @@
            pid = pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_SUNING, SystemPIDInfo.PidType.coupon);
            uid = null;
        } else {
            if (uid == null || uid <= 0) {
                out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
                return;
            }
            UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
            if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
                out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
                return;
            if (uid == null) {
                pid = pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_SUNING, SystemPIDInfo.PidType.coupon);
                uid = null;
            } else {
                if (uid == null || uid <= 0) {
                    out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
                    return;
                }
                UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
                if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
                    out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
                    return;
                }
                if (userFunctionsLimitService.isLimit(uid, SystemFunction.fanli, new Date())) {
                    out.print(JsonUtil.loadFalseResult(1, "该功能限制使用"));
                    return;
                }
            }
        }
@@ -1996,27 +2007,12 @@
        SuningConvertLinkResult link = SuningApiUtil.convertLinkNew(goodsCode, supplierCode,
                pid, uid + "");
        GoodsJumpLinkVO vo = new GoodsJumpLinkVO();
        vo.set_native(false);
        try {
            vo.setJumpLink(URLDecoder.decode(link.getWapExtendUrl(), "UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        if (!StringUtil.isNullOrEmpty(link.getSpPageUrl())) {
            WXXCXJumpInfoVO wxxcxJumpInfoVO = new WXXCXJumpInfoVO();
            wxxcxJumpInfoVO.setUserName("gh_1d1e15e90afc");
            try {
                wxxcxJumpInfoVO.setPath(URLDecoder.decode(link.getSpPageUrl(), "UTF-8"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            vo.setWxxcxJumpInfo(wxxcxJumpInfoVO);
        }
        GoodsJumpLinkVO vo = GoodsJumpUtil.getSuningJumpInfo(link);
        JSONObject data = JSONObject.fromObject(new Gson().toJson(vo));
        data.put("native", vo.is_native());
        data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
        if (uid != null)
            data.put("userLevel", userLijinMnager.getUserLevelInfo(uid, acceptData.getSystem()));
        out.print(JsonUtil.loadTrueResult(data));
@@ -2205,24 +2201,44 @@
        link = JDApiUtil.convertLinkWithSubUnionId(link, null, null, pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.fanli), uid + "");
        GoodsJumpLinkVO vo = new GoodsJumpLinkVO();
        vo.set_native(true);
        vo.setJumpLink(link);
        vo.setNativeJumpLink(link);
        try {
            String wxPage = "pages/union/proxy/proxy?spreadUrl=" + URLEncoder.encode(link, "UTF-8");
            WXXCXJumpInfoVO wxxcxJumpInfoVO = new WXXCXJumpInfoVO();
            wxxcxJumpInfoVO.setUserName("gh_45b306365c3d");
            wxxcxJumpInfoVO.setPath(wxPage);
            vo.setWxxcxJumpInfo(wxxcxJumpInfoVO);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        GoodsJumpLinkVO vo = GoodsJumpUtil.getJDJumpInfo(link);
        JSONObject data = JSONObject.fromObject(new Gson().toJson(vo));
        data.put("native", vo.is_native());
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
    }
    @RequestMapping(value = "convertPDDLink")
    public void convertPDDLink(AcceptData acceptData, String resourceType, String channelType, Long uid, PrintWriter out) {
        if (StringUtil.isNullOrEmpty(resourceType)&&StringUtil.isNullOrEmpty(channelType)) {
            out.print(JsonUtil.loadFalseResult(1, "resourceType|channelType为空"));
            return;
        }
        String customParams = null;
        if (uid != null)
            customParams = pddAuthService.getFanliCustomParams(uid);
        String pid = pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.fanli);
        PDDConvertLinkResultVO pddConvertLinkResultVO = null;
        if (!StringUtil.isNullOrEmpty(resourceType)) {
            pddConvertLinkResultVO = PinDuoDuoApiUtil.convertActivity(resourceType, null, pid, customParams);
        } else if (!StringUtil.isNullOrEmpty(channelType)) {
            pddConvertLinkResultVO = PinDuoDuoApiUtil.convertChannel(channelType, pid, customParams);
        }
        GoodsJumpLinkVO vo = GoodsJumpUtil.getPDDJumpInfo(pddConvertLinkResultVO);
        JSONObject data = JSONObject.fromObject(new Gson().toJson(vo));
        data.put("native", vo.is_native());
        out.print(JsonUtil.loadTrueResult(data));
    }
    @RequestMapping(value = "getTaoBaoGoodsDetailImgs")
    public void getTaoBaoGoodsDetailImgs(AcceptData acceptData, Long id, PrintWriter out) {
        TaoBaoGoodsImportantInfo info = DaTaoKeApiUtil.getGoodsImportantInfo(id);
        if (info == null || info.getDetailImages() == null) {
            out.print(JsonUtil.loadFalseResult(""));
            return;
        }
        out.print(JsonUtil.loadTrueResult(new Gson().toJson(info.getDetailImages())));
    }
}