From 81da61b828e29b7745e1382dfbbaeb685dc083ef Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 23 一月 2024 17:17:55 +0800 Subject: [PATCH] 抖音转链修改 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java | 1594 +++++++++++++++++++++++++++++++--------------------------- 1 files changed, 860 insertions(+), 734 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java index 6fa5452..7171b1b 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java @@ -1,734 +1,860 @@ -package com.yeshi.fanli.controller.client.v2; - -import java.io.PrintWriter; -import java.lang.reflect.Type; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -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.yeshi.fanli.dto.ConfigParamsDTO; -import com.yeshi.fanli.dto.aitaoker.QrcodeLoginDTO; -import com.yeshi.fanli.entity.accept.AcceptData; -import com.yeshi.fanli.entity.bus.user.UserInfo; -import com.yeshi.fanli.entity.bus.user.cloud.CloudOrderMenuEnum; -import com.yeshi.fanli.entity.bus.user.cloud.UserCloud; -import com.yeshi.fanli.entity.bus.user.cloud.UserCloudGoods; -import com.yeshi.fanli.entity.bus.user.cloud.UserCloudGroup; -import com.yeshi.fanli.entity.bus.user.cloud.UserCloudManage; -import com.yeshi.fanli.entity.bus.user.cloud.UserCloudOrder; -import com.yeshi.fanli.entity.dynamic.GoodsEvaluate; -import com.yeshi.fanli.entity.goods.CommonGoods; -import com.yeshi.fanli.entity.system.ConfigKeyEnum; -import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; -import com.yeshi.fanli.exception.taobao.TaoKeApiException; -import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; -import com.yeshi.fanli.exception.user.cloud.UserCloudException; -import com.yeshi.fanli.exception.user.cloud.UserCloudGroupException; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService; -import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; -import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.service.inter.user.cloud.UserCloudGoodsService; -import com.yeshi.fanli.service.inter.user.cloud.UserCloudGroupService; -import com.yeshi.fanli.service.inter.user.cloud.UserCloudManageService; -import com.yeshi.fanli.service.inter.user.cloud.UserCloudOrderService; -import com.yeshi.fanli.service.inter.user.cloud.UserCloudService; -import com.yeshi.fanli.service.manger.alipay.UserCloudAlipayManager; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.RedisKeyEnum; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.aitaoker.AitaokerApiUtil; -import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; -import com.yeshi.fanli.util.suning.SuningUtil; -import com.yeshi.fanli.util.taobao.TaoKeApiUtil; -import com.yeshi.fanli.vo.goods.GoodsDetailVO; -import com.yeshi.fanli.vo.user.cloud.CloudOrderMenuVO; -import com.yeshi.fanli.vo.user.cloud.UserCloudInfoVO; - -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -@Controller -@RequestMapping("api/v2/user/cloud") -public class UserCloudControllerV2 { - - @Resource - private UserCloudService userCloudService; - - @Resource - private UserCloudOrderService userCloudOrderService; - - @Resource - private UserCloudGroupService userCloudGroupService; - - @Resource - private UserCloudGoodsService userCloudGoodsService; - - @Resource - private UserInfoService userInfoService; - - @Resource - private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; - - @Resource - private UserCloudManageService userCloudManageService; - - @Resource - private UserCloudAlipayManager userCloudAlipayManager; - - @Resource - private GoodsEvaluateService goodsEvaluateService; - - @Resource - private ConfigService configService; - - @Resource - private RedisManager redisManager; - - - /** - * 鏌ヨ寮�閫氳褰� - * - * @param callback - * @param acceptData - * @param page - * @param uid - * @param out - */ - @RequestMapping(value = "getOrderRecord") - public void getOrderRecord(String callback, AcceptData acceptData, Integer page, Long uid, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (page == null) - page = 1; - - // 鏌ヨ鎴愬姛璁板綍 - int state = 1; - List<UserCloudOrder> list = userCloudOrderService.getOrderRecord(page, Constant.PAGE_SIZE, uid, state); - if (list == null) - list = new ArrayList<>(); - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - gsonBuilder.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, BigDecimal.ROUND_DOWN); - return new JsonPrimitive(value.toString()); - } - } - }).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.formatDate(value)); - } - } - }); - - long count = userCloudOrderService.countOrderRecord(uid, state); - - JSONObject data = new JSONObject(); - data.put("count", count); - data.put("list", gsonBuilder.create().toJson(list)); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } - - /** - * 鑾峰彇寮�閫氫俊鎭� - * - * @param callback - * @param acceptData - * @param uid - * @param out - */ - @RequestMapping(value = "getCloudInfo") - public void getCloudInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - UserInfo userInfo = userInfoService.getUserByIdWithMybatis(uid); - if (userInfo == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�")); - return; - } - - List<CloudOrderMenuVO> listMenu = new ArrayList<>(); - CloudOrderMenuEnum[] menus = CloudOrderMenuEnum.values(); - for (CloudOrderMenuEnum menuEnum: menus) { - CloudOrderMenuVO menuVO = new CloudOrderMenuVO(); - menuVO.setMoney(BigDecimal.valueOf(menuEnum.getMoney()) ); - menuVO.setType(menuEnum.name()); - menuVO.setDesc(menuEnum.getDescShow()); - listMenu.add(menuVO); - } - - - UserCloudInfoVO cloudInfoVO = new UserCloudInfoVO(); - cloudInfoVO.setNickName(userInfo.getNickName()); - cloudInfoVO.setPortrait(userInfo.getPortrait()); - cloudInfoVO.setOpenState(0); // 鏈紑閫� - cloudInfoVO.setListMenu(listMenu); - - - // 鏄惁寮�閫� - UserCloud userCloud = userCloudService.getLastByUid(uid); - if (userCloud == null) { - cloudInfoVO.setOpenState(0); // 鏈紑閫� - } else { - Date endTime = userCloud.getEndTime(); - if (endTime != null && endTime.getTime() > java.lang.System.currentTimeMillis()) { - cloudInfoVO.setOpenState(1); // 杩樻湭杩囨湡 - // 鐧诲綍寰俊 - cloudInfoVO.setWxName(userCloud.getWxName()); - if (userCloud.getStartTime() != null) - cloudInfoVO.setOpenTime(TimeUtil.formatDateDot(userCloud.getStartTime())); - if (userCloud.getEndTime() != null) { - try { - cloudInfoVO.setCountdown(DateUtil.daysBetween2(new Date(), userCloud.getEndTime()) + ""); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - } - - Integer robotId = userCloud.getRobotId(); - // 妫�娴嬫槸鍚﹀凡鐧诲綍 - if (AitaokerApiUtil.onlineCheck(robotId)) { - boolean circle = false; - List<UserCloudGroup> listGroup = new ArrayList<>(); - List<UserCloudGroup> list = userCloudGroupService.listByUid(uid); - if (list != null && list.size() > 0) { - for (UserCloudGroup cloudGroup : list) { - if (cloudGroup.getType() == UserCloudGroup.TYPE_CIRCLE) { - if (cloudGroup.getState() != null) - circle = cloudGroup.getState(); - } else { - listGroup.add(cloudGroup); - } - } - } - - cloudInfoVO.setLoginState(true); - cloudInfoVO.setCircle(circle); - cloudInfoVO.setListGroup(listGroup); - } - } - } - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(cloudInfoVO)); - } - - /** - * 鑾峰彇鐧诲綍浜岀淮鐮� - * - * @param callback - * @param acceptData - * @param uid - * @param out - */ - @RequestMapping(value = "getQrcodeMaclogin") - public void getQrcodeMaclogin(String callback, AcceptData acceptData, Long uid, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - UserCloud userCloud = userCloudService.getValidByUid(uid); - if (userCloud == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鏈紑閫氫簯鍙戝崟")); - return; - } - - // 鏈哄櫒浜篒D - Integer robotId = userCloud.getRobotId(); - if (robotId == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "姝e湪寮�閫氫腑锛屽鏈夌枒闂鑱旂郴瀹㈡湇")); - return; - } - - // 鑾峰彇鐧诲綍URL - QrcodeLoginDTO maclogin = AitaokerApiUtil.getQrcodeMaclogin(userCloud.getRobotId()); - if (maclogin == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鑾峰彇鐧诲綍浜岀淮鐮佸け璐�")); - return; - } - - JSONObject data = new JSONObject(); - data.put("wId", maclogin.getwId()); - data.put("qrCodeUrl", maclogin.getQrCodeUrl()); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } - - /** - * 妫�娴嬫槸鍚﹀井淇$櫥褰� - * - * @param callback - * @param acceptData - * @param uid - * @param wId - * @param out - */ - @RequestMapping(value = "macloginCheck") - public void macloginCheck(String callback, AcceptData acceptData, Long uid, String wId, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - UserCloud userCloud = userCloudService.getValidByUid(uid); - if (userCloud == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "浜戝彂鍗曞紑閫氬凡杩囨湡")); - return; - } - - // 鏈哄櫒浜篒D - Integer robotId = userCloud.getRobotId(); - if (robotId == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "姝e湪寮�閫氫腑锛屽鏈夌枒闂鑱旂郴瀹㈡湇")); - return; - } - - boolean state = false; - JSONObject data = new JSONObject(); - QrcodeLoginDTO dto = AitaokerApiUtil.getQrcodeMacloginCheck(robotId, wId); - if (dto != null) { - LogHelper.cloudInfo("鏂规硶macloginCheck: [uid=" + uid + "][wxID=" + dto.getWcId() + "][ NickName=" + dto.getNickName() + "]" ); - try { - // 鏇存柊寰俊淇℃伅 - userCloudService.updateWXInfo(uid, dto.getWcId(), dto.getNickName(), dto.getHeadUrl()); - } catch (UserCloudException e) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, e.getMsg())); - return; - } - - state = true; - boolean circle = false; - List<UserCloudGroup> listGroup = new ArrayList<>(); - List<UserCloudGroup> list = userCloudGroupService.listByUid(uid); - if (list != null && list.size() > 0) { - for (UserCloudGroup cloudGroup : list) { - if (cloudGroup.getType() == UserCloudGroup.TYPE_CIRCLE) { - if (cloudGroup.getState() != null) - circle = cloudGroup.getState(); - } else { - listGroup.add(cloudGroup); - } - } - } - data.put("wxName", dto.getNickName()); - data.put("circle", circle); - data.put("listGroup", listGroup); - } - data.put("state", state); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } - - /** - * 閫�鍑虹櫥褰� - * - * @param callback - * @param acceptData - * @param uid - * @param out - */ - @RequestMapping(value = "macloginOffline") - public void macloginOffline(String callback, AcceptData acceptData, Long uid, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - UserCloud userCloud = userCloudService.getLastByUid(uid); - if (userCloud == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浜戝彂鍗曞紑閫氬凡杩囨湡")); - return; - } - - // 鏈哄櫒浜篒D - Integer robotId = userCloud.getRobotId(); - if (robotId == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鏈粦瀹氭満鍣ㄤ汉")); - return; - } - - // 閫�鍑烘満鍣ㄤ汉 - boolean offline = AitaokerApiUtil.macloginOffline(robotId); - if (offline) { - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("閫�鍑烘垚鍔�")); - } else { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("閫�鍑哄け璐�")); - } - } - - /** - * 鍒囨崲鏈嬪弸鍦堢姸鎬� - * - * @param callback - * @param acceptData - * @param uid - * @param id - * @param out - */ - @RequestMapping(value = "switchCircleState") - public void switchCircleState(String callback, AcceptData acceptData, Long uid, Integer state, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - if (state == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐘舵�佷笉鑳戒负绌�")); - return; - } - - boolean reslut = false; - if (state == 1) { - reslut = true; - } - - try { - userCloudGroupService.switchCircleState(uid, reslut); - } catch (UserCloudGroupException e) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); - } - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鎿嶄綔鎴愬姛")); - } - - /** - * 妫�娴嬫槸鍚﹀井淇$櫥褰� - * - * @param callback - * @param acceptData - * @param uid - * @param wId - * @param out - */ - @RequestMapping(value = "searchGroup") - public void searchGroup(String callback, AcceptData acceptData, Long uid, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - try { - // 閲嶆柊鑾峰彇缇ゅ垪琛� - userCloudService.searchGroup(uid); - // 鑾峰彇鏈�鏂扮兢 - List<UserCloudGroup> list = userCloudGroupService.listGroupByUid(uid); - if (list == null) - list = new ArrayList<>(); - - JSONObject data = new JSONObject(); - data.put("listGroup", list); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } catch (UserCloudException e) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, e.getMsg())); - } - } - - /** - * 璁剧疆鐘舵�� - * - * @param callback - * @param acceptData - * @param uid - * @param type - * @param out - */ - @RequestMapping(value = "switchGroupState") - public void switchGroupState(String callback, AcceptData acceptData, Long uid, Long id, Integer state, - PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - if (id == null || state == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鍙傛暟涓嶈兘涓虹┖")); - return; - } - - boolean reslut = false; - if (state == 1) { - reslut = true; - } - - try { - userCloudGroupService.switchGroupState(uid, id, reslut); - } catch (UserCloudGroupException e) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); - } - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鎿嶄綔鎴愬姛")); - } - - /** - * 鑾峰彇浜戝彂鍗曞簱鍟嗗搧 - * - * @param callback - * @param acceptData - * @param uid - * @param page - * @param out - */ - @RequestMapping(value = "getGoodsList") - public void getGoodsList(String callback, AcceptData acceptData, Long uid, Integer page, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (page == null) - page = 1; - - List<UserCloudGoods> list = userCloudGoodsService.listByUid((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, - uid); - if (list == null) - list = new ArrayList<>(); - - JSONArray array = new JSONArray(); - JSONObject data = new JSONObject(); - if (list.size() > 0) { - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), - acceptData.getVersion()); - - for (UserCloudGoods cloudGoods : list) { - CommonGoods commonGoods = cloudGoods.getCommonGoods(); - if (commonGoods == null) { - continue; - } - - // 鍒ゆ柇鏄惁宸插垎浜紝 宸插垎浜樉绀哄凡涓嬫灦 - Integer state = cloudGoods.getState(); - if (state != null && state == UserCloudGoods.STATE_SHARED) { - Integer goodsState = commonGoods.getState(); - if (goodsState != null && goodsState != 1) { - commonGoods.setState(2); - } - } - - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertCommonGoods(commonGoods, paramsDTO); - detailVO.setId(commonGoods.getId()); - - JSONObject dataObject = new JSONObject(); - dataObject.put("id", cloudGoods.getId()); - dataObject.put("goods", gson.toJson(detailVO)); - array.add(dataObject); - } - } - - // 绗竴椤佃繑鍥炶缃俊鎭� - if (page == 1) { - boolean custom = false; - boolean official = false; - UserCloudManage cloudManage = userCloudManageService.selectByPrimaryKey(uid); - if (cloudManage != null) { - if (cloudManage.getOfficial() != null) - official = cloudManage.getOfficial(); - if (cloudManage.getCustom() != null) - custom = cloudManage.getCustom(); - } - data.put("custom", custom); - data.put("official", official); - } - data.put("count", userCloudGoodsService.countByUid(uid)); - data.put("list", array); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } - - - - /** - * 鍒犻櫎浜戝彂鍗曞閫夊簱 - * - * @param callback - * @param acceptData - * @param uid - * @param id - * @param out - */ - @RequestMapping(value = "deleteGoods") - public void deleteGoods(String callback, AcceptData acceptData, Long uid, Long id, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (id == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鍙傛暟涓嶅畬鏁�")); - return; - } - userCloudGoodsService.deleteByPrimaryKeyAndUid(id, uid); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鎿嶄綔鎴愬姛")); - } - - /** - * 璁剧疆鐘舵�� - * - * @param callback - * @param acceptData - * @param uid - * @param type - * @param out - */ - @RequestMapping(value = "switchState") - public void switchState(String callback, AcceptData acceptData, Long uid, Integer type, Boolean state, - PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - if (type == 1) { - userCloudManageService.save(uid, state, null); - } else { - userCloudManageService.save(uid, null, state); - } - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鎿嶄綔鎴愬姛")); - } - - /** - * 浜戝彂鍗曟敮浠� - * - * @param callback - * @param acceptData - * @param uid - * @param type 鏈哄櫒浜虹被鍨� - * @param response - * @param out - */ - @RequestMapping(value = "pay") - public void pay(String callback, AcceptData acceptData, Long uid, String type, PrintWriter out) { - try { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (StringUtil.isNullOrEmpty(type)) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "璇烽�夋嫨浜戝彂鍗曞椁�")); - return; - } - - // 鍒涘缓鏀粯淇℃伅 - String alipayForm = userCloudAlipayManager.getAlipayForm(uid, type); - - // 杩斿洖淇℃伅 - 缂撳瓨鍒皊ession - StringBuilder builder = new StringBuilder(); - builder.append("<html><head><title>alipay</title></head>"); - builder.append("<body>" + alipayForm + "</body></html>"); - - // 缂撳瓨鍒皉edis- 涓�鍒嗛挓 - String key = RedisKeyEnum.cloudAlipayLink.getKey() + uid + "_" + type; - key = StringUtil.Md5(key); - redisManager.cacheCommonString(key , builder.toString() , 60*10); - - String link = configService.get(ConfigKeyEnum.cloudAlipayNotifyLink.getKey()) +"?key=%s"; - JSONObject dataObject = new JSONObject(); - dataObject.put("link", String.format(link, key)); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dataObject)); - } catch (Exception e) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鍒涘缓鏀粯淇℃伅澶辫触")); - LogHelper.errorDetailInfo(e); - } - } - - - /** - * 鍔ㄦ�佷竴閿彂鍗� - * @param callback - * @param acceptData - * @param uid - * @param id - * @param out - */ - @RequestMapping(value = "sendCircle") - public void sendCircle(String callback, AcceptData acceptData, Long uid, String id, PrintWriter out) { - if (uid == null || StringUtil.isNullOrEmpty(id)) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖")); - return; - } - try { - userCloudService.sendByDynamic(uid, id); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("涓�閿彂鍗曟垚鍔�")); - } catch (UserCloudException e) { - if (e.getCode() > 1000 && e.getCode() < 1100) { - JSONObject data = new JSONObject(); - data.put("link", configService.get(ConfigKeyEnum.robotCloudLink.getKey())); - JsonUtil.printMode(out, callback, JsonUtil.loadTrue(e.getCode(), data, e.getMsg()).toString()); - } else { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(),e.getMsg())); - } - } - } - - - /** - * 鍟嗗搧璇︽儏涓�閿彂鍗� - * @param callback - * @param acceptData - * @param uid - * @param goodsId - * @param goodsType - * @param out - */ - @RequestMapping(value = "sendGoods") - public void sendGoods(String callback, AcceptData acceptData, Long uid, String goodsId, Integer goodsType, PrintWriter out) { - if (uid == null || goodsId == null || goodsType == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖")); - return; - } - - try { - GoodsEvaluate evaluate = goodsEvaluateService.queryExistSingle(goodsId, goodsType); - if (evaluate != null) { - userCloudService.sendByDynamic(uid, evaluate.getId()); - } else { - - Long gid = null; - Long sellerId = null; - if (goodsType == Constant.SOURCE_TYPE_SUNING) { // 鑻忓畞 - String[] ids = SuningUtil.getGoodsIdDetail(goodsId); - gid = Long.parseLong(ids[1]); - sellerId = Long.parseLong(ids[0]); - } else { - gid = Long.parseLong(goodsId); - } - userCloudService.sendCustomGoods(uid, gid, goodsType, sellerId); - } - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鍔犲叆鍙戝崟搴撴垚鍔�")); - } catch (UserCloudException e) { - if (e.getCode() > 1000 && e.getCode() < 1100) { - JSONObject data = new JSONObject(); - data.put("link", configService.get(ConfigKeyEnum.robotCloudLink.getKey())); - JsonUtil.printMode(out, callback, JsonUtil.loadTrue(e.getCode(), data, e.getMsg()).toString()); - } else { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(),e.getMsg())); - } - } - } -} +package com.yeshi.fanli.controller.client.v2; + +import java.io.PrintWriter; +import java.lang.reflect.Type; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.annotation.Resource; + +import com.yeshi.fanli.dto.vip.UserVIPLevel; +import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo; +import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +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.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO; +import com.yeshi.fanli.dto.aitaoker.QrcodeLoginDTO; +import com.yeshi.fanli.entity.accept.AcceptData; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.cloud.CloudOrderMenuEnum; +import com.yeshi.fanli.entity.bus.user.cloud.UserCloud; +import com.yeshi.fanli.entity.bus.user.cloud.UserCloudGoods; +import com.yeshi.fanli.entity.bus.user.cloud.UserCloudGroup; +import com.yeshi.fanli.entity.bus.user.cloud.UserCloudManage; +import com.yeshi.fanli.entity.bus.user.cloud.UserCloudOrder; +import com.yeshi.fanli.entity.dynamic.GoodsEvaluate; +import com.yeshi.fanli.entity.goods.CommonGoods; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.fanli.exception.user.cloud.UserCloudException; +import com.yeshi.fanli.exception.user.cloud.UserCloudGroupException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService; +import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService; +import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.cloud.UserCloudGoodsService; +import com.yeshi.fanli.service.inter.user.cloud.UserCloudGroupService; +import com.yeshi.fanli.service.inter.user.cloud.UserCloudManageService; +import com.yeshi.fanli.service.inter.user.cloud.UserCloudOrderService; +import com.yeshi.fanli.service.inter.user.cloud.UserCloudService; +import com.yeshi.fanli.service.manger.alipay.UserCloudAlipayManager; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.RedisKeyEnum; +import com.yeshi.fanli.util.RedisManager; +import com.yeshi.fanli.util.StringUtil; +import org.yeshi.utils.TimeUtil; +import com.yeshi.fanli.util.aitaoker.AitaokerApiUtil; +import com.yeshi.fanli.util.annotation.RequestSerializableByKey; +import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; +import com.yeshi.fanli.util.suning.SuningUtil; +import com.yeshi.fanli.vo.goods.GoodsDetailVO; +import com.yeshi.fanli.vo.homemodule.BannerVO; +import com.yeshi.fanli.vo.user.cloud.CloudOrderMenuVO; +import com.yeshi.fanli.vo.user.cloud.UserCloudInfoVO; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +@Controller +@RequestMapping("api/v2/user/cloud") +public class UserCloudControllerV2 { + + @Resource + private UserCloudService userCloudService; + + @Resource + private UserCloudOrderService userCloudOrderService; + + @Resource + private UserCloudGroupService userCloudGroupService; + + @Resource + private UserCloudGoodsService userCloudGoodsService; + + @Resource + private UserInfoService userInfoService; + + @Resource + private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; + + @Resource + private UserCloudManageService userCloudManageService; + + @Resource + private UserCloudAlipayManager userCloudAlipayManager; + + @Resource + private GoodsEvaluateService goodsEvaluateService; + + @Resource + private ConfigService configService; + + @Resource + private RedisManager redisManager; + + @Resource + private SwiperPictureService swiperPictureService; + + @Resource + private UserVIPPreInfoService userVIPPreInfoService; + + /** + * 鏌ヨ寮�閫氳褰� + * + * @param callback + * @param acceptData + * @param page + * @param uid + * @param out + */ + @RequestMapping(value = "getOrderRecord") + public void getOrderRecord(String callback, AcceptData acceptData, Integer page, Long uid, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (page == null) + page = 1; + + // 鏌ヨ鎴愬姛璁板綍 + int state = 1; + List<UserCloudOrder> list = userCloudOrderService.getOrderRecord(page, Constant.PAGE_SIZE, uid, state); + if (list == null) + list = new ArrayList<>(); + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + gsonBuilder.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, BigDecimal.ROUND_DOWN); + return new JsonPrimitive(value.toString()); + } + } + }).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.formatDate(value)); + } + } + }); + + long count = userCloudOrderService.countOrderRecord(uid, state); + + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("list", gsonBuilder.create().toJson(list)); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + /** + * 鑾峰彇寮�閫氫俊鎭� + * + * @param callback + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "getCloudInfo") + public void getCloudInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + UserInfo userInfo = userInfoService.getUserByIdWithMybatis(uid); + if (userInfo == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�")); + return; + } + + List<CloudOrderMenuVO> listMenu = new ArrayList<>(); + CloudOrderMenuEnum[] menus = CloudOrderMenuEnum.values(); + for (CloudOrderMenuEnum menuEnum : menus) { + CloudOrderMenuVO menuVO = new CloudOrderMenuVO(); + menuVO.setMoney(BigDecimal.valueOf(menuEnum.getMoney())); + menuVO.setType(menuEnum.name()); + menuVO.setDesc(menuEnum.getDescShow()); + listMenu.add(menuVO); + } + + + UserCloudInfoVO cloudInfoVO = new UserCloudInfoVO(); + cloudInfoVO.setNickName(userInfo.getNickName()); + cloudInfoVO.setPortrait(userInfo.getPortrait()); + cloudInfoVO.setOpenState(0); // 鏈紑閫� + cloudInfoVO.setListMenu(listMenu); + + + // 鏄惁寮�閫� + UserCloud userCloud = userCloudService.getLastByUid(uid); + if (userCloud == null) { + cloudInfoVO.setOpenState(0); // 鏈紑閫� + } else { + Date endTime = userCloud.getEndTime(); + if (endTime != null && endTime.getTime() > java.lang.System.currentTimeMillis()) { + cloudInfoVO.setOpenState(1); // 杩樻湭杩囨湡 + // 鐧诲綍寰俊 + cloudInfoVO.setWxName(userCloud.getWxName()); + if (userCloud.getStartTime() != null) + cloudInfoVO.setOpenTime(TimeUtil.formatDateDot(userCloud.getStartTime())); + if (userCloud.getEndTime() != null) { + try { + cloudInfoVO.setCountdown(DateUtil.daysBetween2(new Date(), userCloud.getEndTime()) + ""); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + Integer robotId = userCloud.getRobotId(); + // 妫�娴嬫槸鍚﹀凡鐧诲綍 + if (AitaokerApiUtil.onlineCheck(robotId)) { + boolean circle = false; + List<UserCloudGroup> listGroup = new ArrayList<>(); + List<UserCloudGroup> list = userCloudGroupService.listByUid(uid); + if (list != null && list.size() > 0) { + for (UserCloudGroup cloudGroup : list) { + if (cloudGroup.getType() == UserCloudGroup.TYPE_CIRCLE) { + if (cloudGroup.getState() != null) + circle = cloudGroup.getState(); + } else { + listGroup.add(cloudGroup); + } + } + } + + cloudInfoVO.setLoginState(true); + cloudInfoVO.setCircle(circle); + cloudInfoVO.setListGroup(listGroup); + } + } + } + + // 鏁欑▼ + List<BannerVO> listBanner = swiperPictureService.getByBannerCard("cloud_course", acceptData.getSystem()); + if (listBanner != null && listBanner.size() > 0) { + cloudInfoVO.setCourse(listBanner.get(0)); + } + GsonBuilder gsonBuilder = new GsonBuilder(); + + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(gsonBuilder.create().toJson(cloudInfoVO))); + } + + /** + * 鑾峰彇鐧诲綍浜岀淮鐮� + * + * @param callback + * @param acceptData + * @param uid + * @param out + */ + @RequestSerializableByKey(key = "'getQrcodeMaclogin-'+#uid") + @RequestMapping(value = "getQrcodeMaclogin") + public void getQrcodeMaclogin(String callback, AcceptData acceptData, Long uid, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + UserCloud userCloud = userCloudService.getValidByUid(uid); + if (userCloud == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鏈紑閫氫簯鍙戝崟")); + return; + } + + // 鏈哄櫒浜篒D + Integer robotId = userCloud.getRobotId(); + if (robotId == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "姝e湪寮�閫氫腑锛屽鏈夌枒闂鑱旂郴瀹㈡湇")); + return; + } + + // 鑾峰彇鐧诲綍URL + QrcodeLoginDTO maclogin = AitaokerApiUtil.getQrcodeMaclogin(userCloud.getRobotId()); + if (maclogin == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鑾峰彇鐧诲綍浜岀淮鐮佸け璐�")); + return; + } + + JSONObject data = new JSONObject(); + data.put("wId", maclogin.getwId()); + data.put("qrCodeUrl", maclogin.getQrCodeUrl()); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + /** + * 妫�娴嬫槸鍚﹀井淇$櫥褰� + * + * @param callback + * @param acceptData + * @param uid + * @param wId + * @param out + */ + @RequestMapping(value = "macloginCheck") + public void macloginCheck(String callback, AcceptData acceptData, Long uid, String wId, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + UserCloud userCloud = userCloudService.getValidByUid(uid); + if (userCloud == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "浜戝彂鍗曞紑閫氬凡杩囨湡")); + return; + } + + // 鏈哄櫒浜篒D + Integer robotId = userCloud.getRobotId(); + if (robotId == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "姝e湪寮�閫氫腑锛屽鏈夌枒闂鑱旂郴瀹㈡湇")); + return; + } + + boolean state = false; + JSONObject data = new JSONObject(); + QrcodeLoginDTO dto = AitaokerApiUtil.getQrcodeMacloginCheck(robotId, wId); + if (dto != null) { + LogHelper.cloudInfo("鏂规硶macloginCheck: [uid=" + uid + "][wxID=" + dto.getWcId() + "][ NickName=" + dto.getNickName() + "]"); + try { + // 鏇存柊寰俊淇℃伅 + userCloudService.updateWXInfo(uid, dto.getWcId(), dto.getNickName(), dto.getHeadUrl()); + } catch (UserCloudException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, e.getMsg())); + return; + } + + state = true; + boolean circle = false; + List<UserCloudGroup> listGroup = new ArrayList<>(); + List<UserCloudGroup> list = userCloudGroupService.listByUid(uid); + if (list != null && list.size() > 0) { + for (UserCloudGroup cloudGroup : list) { + if (cloudGroup.getType() == UserCloudGroup.TYPE_CIRCLE) { + if (cloudGroup.getState() != null) + circle = cloudGroup.getState(); + } else { + listGroup.add(cloudGroup); + } + } + } + data.put("wxName", dto.getNickName()); + data.put("circle", circle); + data.put("listGroup", listGroup); + } + data.put("state", state); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + /** + * 閫�鍑虹櫥褰� + * + * @param callback + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "macloginOffline") + public void macloginOffline(String callback, AcceptData acceptData, Long uid, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + UserCloud userCloud = userCloudService.getLastByUid(uid); + if (userCloud == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浜戝彂鍗曞紑閫氬凡杩囨湡")); + return; + } + + // 鏈哄櫒浜篒D + Integer robotId = userCloud.getRobotId(); + if (robotId == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鏈粦瀹氭満鍣ㄤ汉")); + return; + } + + // 閫�鍑烘満鍣ㄤ汉 + boolean offline = AitaokerApiUtil.macloginOffline(robotId); + if (offline) { + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("閫�鍑烘垚鍔�")); + } else { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("閫�鍑哄け璐�")); + } + } + + /** + * 鍒囨崲鏈嬪弸鍦堢姸鎬� + * + * @param callback + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "switchCircleState") + public void switchCircleState(String callback, AcceptData acceptData, Long uid, Integer state, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + if (state == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐘舵�佷笉鑳戒负绌�")); + return; + } + + boolean reslut = false; + if (state == 1) { + reslut = true; + } + + try { + userCloudGroupService.switchCircleState(uid, reslut); + } catch (UserCloudGroupException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); + } + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鎿嶄綔鎴愬姛")); + } + + /** + * 妫�娴嬫槸鍚﹀井淇$櫥褰� + * + * @param callback + * @param acceptData + * @param uid + * @param wId + * @param out + */ + @RequestMapping(value = "searchGroup") + public void searchGroup(String callback, AcceptData acceptData, Long uid, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + UserCloud userCloud = userCloudService.getValidByUid(uid); + if (userCloud == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "璇峰厛寮�閫氫簯鍙戝崟")); + return; + } + + try { + // 閲嶆柊鑾峰彇缇ゅ垪琛� + userCloudService.searchGroup(uid); + // 鑾峰彇鏈�鏂扮兢 + List<UserCloudGroup> list = userCloudGroupService.listGroupByUid(uid); + if (list == null) + list = new ArrayList<>(); + + JSONObject data = new JSONObject(); + data.put("listGroup", list); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } catch (UserCloudException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, e.getMsg())); + } + } + + /** + * 璁剧疆鐘舵�� + * + * @param callback + * @param acceptData + * @param uid + * @param type + * @param out + */ + @RequestMapping(value = "switchGroupState") + public void switchGroupState(String callback, AcceptData acceptData, Long uid, Long id, Integer state, + PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + if (id == null || state == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鍙傛暟涓嶈兘涓虹┖")); + return; + } + + UserCloud userCloud = userCloudService.getValidByUid(uid); + if (userCloud == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "璇峰厛寮�閫氫簯鍙戝崟")); + return; + } + + boolean reslut = false; + if (state == 1) { + reslut = true; + } + + try { + + + userCloudGroupService.switchGroupState(uid, id, reslut); + // 鑾峰彇鏈�鏂扮兢 + List<UserCloudGroup> list = userCloudGroupService.listGroupByUid(uid); + if (list == null) + list = new ArrayList<>(); + + JSONObject data = new JSONObject(); + data.put("listGroup", list); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } catch (UserCloudGroupException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); + } + } + + + /** + * 璁剧疆鐘舵�� + * + * @param callback + * @param acceptData + * @param uid + * @param type + * @param out + */ + @RequestMapping(value = "deleteGroup") + public void switchGroupState(String callback, AcceptData acceptData, Long uid, Long id, + PrintWriter out) { + if (uid == null || id == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鍙傛暟涓嶅畬鏁�")); + return; + } + + try { + userCloudGroupService.deleteGroup(uid, id); + + // 鑾峰彇鏈�鏂扮兢 + List<UserCloudGroup> list = userCloudGroupService.listGroupByUid(uid); + if (list == null) + list = new ArrayList<>(); + + JSONObject data = new JSONObject(); + data.put("listGroup", list); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } catch (UserCloudGroupException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); + } + } + + /** + * 鑾峰彇浜戝彂鍗曞簱鍟嗗搧 + * + * @param callback + * @param acceptData + * @param uid + * @param page + * @param out + */ + @RequestMapping(value = "getGoodsList") + public void getGoodsList(String callback, AcceptData acceptData, Long uid, Integer page, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (page == null) + page = 1; + + List<UserCloudGoods> list = userCloudGoodsService.listByUid((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, + uid); + if (list == null) + list = new ArrayList<>(); + + JSONArray array = new JSONArray(); + JSONObject data = new JSONObject(); + if (list.size() > 0) { + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + for (UserCloudGoods cloudGoods : list) { + CommonGoods commonGoods = cloudGoods.getCommonGoods(); + if (commonGoods == null) { + continue; + } + + // 鍒ゆ柇鏄惁宸插垎浜紝 宸插垎浜樉绀哄凡涓嬫灦 + Integer state = cloudGoods.getState(); + if (state != null && state == UserCloudGoods.STATE_SHARED) { + Integer goodsState = commonGoods.getState(); + if (goodsState != null && goodsState != 1) { + commonGoods.setState(2); + } + } + + if (state != null && state == UserCloudGoods.STATE_INVALID) { + commonGoods.setState(1); + } + + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertCommonGoods(commonGoods, paramsDTO); + detailVO.setId(commonGoods.getId()); + + JSONObject dataObject = new JSONObject(); + dataObject.put("id", cloudGoods.getId()); + dataObject.put("goods", gson.toJson(detailVO)); + array.add(dataObject); + } + } + + // 绗竴椤佃繑鍥炶缃俊鎭� + if (page == 1) { + boolean custom = false; + boolean official = false; + UserCloudManage cloudManage = userCloudManageService.selectByPrimaryKey(uid); + if (cloudManage != null) { + if (cloudManage.getOfficial() != null) + official = cloudManage.getOfficial(); + if (cloudManage.getCustom() != null) + custom = cloudManage.getCustom(); + } + data.put("custom", custom); + data.put("official", official); + } + data.put("count", userCloudGoodsService.countByUid(uid)); + data.put("list", array); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + + /** + * 鍒犻櫎浜戝彂鍗曞閫夊簱 + * + * @param callback + * @param acceptData + * @param uid + * @param id + * @param out + */ + @RequestMapping(value = "deleteGoods") + public void deleteGoods(String callback, AcceptData acceptData, Long uid, Long id, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (id == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鍙傛暟涓嶅畬鏁�")); + return; + } + userCloudGoodsService.deleteByPrimaryKeyAndUid(id, uid); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鎿嶄綔鎴愬姛")); + } + + /** + * 璁剧疆鐘舵�� + * + * @param callback + * @param acceptData + * @param uid + * @param type + * @param out + */ + @RequestMapping(value = "switchState") + public void switchState(String callback, AcceptData acceptData, Long uid, Integer type, Integer state, + PrintWriter out) { + if (uid == null || type == null || state == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鍙傛暟涓嶅畬鏁�")); + return; + } + + boolean reslut = false; + if (state == 1) { + reslut = true; + } + + if (type == 1) { + userCloudManageService.save(uid, reslut, null); + } else { + userCloudManageService.save(uid, null, reslut); + } + JSONObject data = new JSONObject(); + data.put("state", reslut); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } + + /** + * 浜戝彂鍗曟敮浠� + * + * @param callback + * @param acceptData + * @param uid + * @param type 鏈哄櫒浜虹被鍨� + * @param response + * @param out + */ + @RequestMapping(value = "pay") + public void pay(String callback, AcceptData acceptData, Long uid, String type, PrintWriter out) { + try { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (StringUtil.isNullOrEmpty(type)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "璇烽�夋嫨浜戝彂鍗曞椁�")); + return; + } + + CloudOrderMenuEnum typeEnum = CloudOrderMenuEnum.valueOf(type); + if (typeEnum == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "濂楅閫夋嫨鍑洪敊")); + return; + } + + if (typeEnum == CloudOrderMenuEnum.robotMonthVip) { + UserVIPPreInfo vip = userVIPPreInfoService.getLatestProcessInfo(uid); + if (vip == null || vip.getProcess() < UserVIPLevel.LEVEL_7) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛绛夌骇涓嶆弧瓒�")); + return; + } + } + + + // 鍒涘缓鏀粯淇℃伅 + String alipayForm = userCloudAlipayManager.getAlipayForm(uid, type); + + // 杩斿洖淇℃伅 - 缂撳瓨鍒皊ession + StringBuilder builder = new StringBuilder(); + builder.append("<html><head><title>alipay</title></head>"); + builder.append("<body>" + alipayForm + "</body></html>"); + + // 缂撳瓨鍒皉edis- 涓�鍒嗛挓 + String key = RedisKeyEnum.cloudAlipayLink.getKey() + uid + "_" + type; + key = StringUtil.Md5(key); + redisManager.cacheCommonString(key, builder.toString(), 60 * 10); + + String link = configService.getValue(ConfigKeyEnum.cloudAlipayJumpLink.getKey(), acceptData.getSystem()) + "?key=%s"; + JSONObject dataObject = new JSONObject(); + dataObject.put("link", String.format(link, key)); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dataObject)); + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鍒涘缓鏀粯淇℃伅澶辫触")); + LogHelper.errorDetailInfo(e); + } + } + + + /** + * 鏀粯瀹屾垚 + * + * @param id + * @param out + */ + @RequestMapping(value = "payEnd") + public void payEnd(String callback, AcceptData acceptData, Long uid, Long id, PrintWriter out) { + if (uid == null || id == null) { + out.print(JsonUtil.loadFalseResult(1, "鍙傛暟淇℃伅缂哄け")); + return; + } + + try { + // 妫�娴嬫槸鍚︽敮浠樺畬鎴� + userCloudAlipayManager.tradeQueryByOrderId(id); + + UserCloudOrder cloudOrder = userCloudOrderService.selectByPrimaryKey(id); + JSONObject dataObject = new JSONObject(); + dataObject.put("money", cloudOrder.getMoney()); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dataObject)); + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult(1, "鍥炶皟淇℃伅澶辫触")); + LogHelper.errorDetailInfo(e); + } + } + + + /** + * 鍔ㄦ�佷竴閿彂鍗� + * + * @param callback + * @param acceptData + * @param uid + * @param id + * @param out + */ + @RequestMapping(value = "sendCircle") + public void sendCircle(String callback, AcceptData acceptData, Long uid, String id, PrintWriter out) { + if (uid == null || StringUtil.isNullOrEmpty(id)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖")); + return; + } + try { + userCloudService.sendByDynamic(uid, id); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("涓�閿彂鍗曟垚鍔�")); + } catch (UserCloudException e) { + if (e.getCode() > 1000 && e.getCode() < 1100) { + JSONObject data = new JSONObject(); + data.put("link", configService.getValue(ConfigKeyEnum.robotCloudLink.getKey(), acceptData.getSystem())); + JsonUtil.printMode(out, callback, JsonUtil.loadTrue(e.getCode(), data, e.getMsg()).toString()); + } else { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); + } + } + } + + + /** + * 鍟嗗搧璇︽儏涓�閿彂鍗� + * + * @param callback + * @param acceptData + * @param uid + * @param goodsId + * @param goodsType + * @param out + */ + @RequestMapping(value = "sendGoods") + public void sendGoods(String callback, AcceptData acceptData, Long uid, String goodsId, Integer goodsType, PrintWriter out) { + if (uid == null || goodsId == null || goodsType == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖")); + return; + } + + try { + GoodsEvaluate evaluate = goodsEvaluateService.queryExistSingle(goodsId, goodsType, acceptData.getSystem()); + if (evaluate != null) { + userCloudService.sendByDynamic(uid, evaluate.getId()); + } else { + + String gid = null; + Long sellerId = null; + if (goodsType == Constant.SOURCE_TYPE_SUNING) { // 鑻忓畞 + String[] ids = SuningUtil.getGoodsIdDetail(goodsId); + gid = ids[1]; + sellerId = Long.parseLong(ids[0]); + } else { + gid = goodsId; + } + userCloudService.sendCustomGoods(uid, gid, goodsType, sellerId); + } + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鍔犲叆鍙戝崟搴撴垚鍔�")); + } catch (UserCloudException e) { + if (e.getCode() > 1000 && e.getCode() < 1100) { + JSONObject data = new JSONObject(); + data.put("link", configService.getValue(ConfigKeyEnum.robotCloudLink.getKey(), acceptData.getSystem())); + JsonUtil.printMode(out, callback, JsonUtil.loadTrue(e.getCode(), data, e.getMsg()).toString()); + } else { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); + } + } + } +} -- Gitblit v1.8.0