From 01955bc3f6e6eec6d82a5a3848efde1fa6cc8137 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 30 九月 2020 17:29:26 +0800
Subject: [PATCH] 云发单优化

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java | 1498 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 760 insertions(+), 738 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 78d7566..949c1bc 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
@@ -9,6 +9,10 @@
 
 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.UserVIPInfoService;
+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;
@@ -68,773 +72,791 @@
 @RequestMapping("api/v2/user/cloud")
 public class UserCloudControllerV2 {
 
-	@Resource
-	private UserCloudService userCloudService;
+    @Resource
+    private UserCloudService userCloudService;
 
-	@Resource
-	private UserCloudOrderService userCloudOrderService;
+    @Resource
+    private UserCloudOrderService userCloudOrderService;
 
-	@Resource
-	private UserCloudGroupService userCloudGroupService;
+    @Resource
+    private UserCloudGroupService userCloudGroupService;
 
-	@Resource
-	private UserCloudGoodsService userCloudGoodsService;
+    @Resource
+    private UserCloudGoodsService userCloudGoodsService;
 
-	@Resource
-	private UserInfoService userInfoService;
+    @Resource
+    private UserInfoService userInfoService;
 
-	@Resource
-	private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
+    @Resource
+    private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
 
-	@Resource
-	private UserCloudManageService userCloudManageService;
+    @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 UserCloudAlipayManager userCloudAlipayManager;
 
-	/**
-	 * 鏌ヨ寮�閫氳褰�
-	 * 
-	 * @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;
-		}
+    @Resource
+    private GoodsEvaluateService goodsEvaluateService;
 
-		if (page == null)
-			page = 1;
+    @Resource
+    private ConfigService configService;
 
-		// 鏌ヨ鎴愬姛璁板綍
-		int state = 1;
-		List<UserCloudOrder> list = userCloudOrderService.getOrderRecord(page, Constant.PAGE_SIZE, uid, state);
-		if (list == null)
-			list = new ArrayList<>();
+    @Resource
+    private RedisManager redisManager;
 
-		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));
-				}
-			}
-		});
+    @Resource
+    private SwiperPictureService swiperPictureService;
 
-		long count = userCloudOrderService.countOrderRecord(uid, state);
+    @Resource
+    private UserVIPPreInfoService userVIPPreInfoService;
 
-		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 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;
+        }
 
-	/**
-	 * 鑾峰彇寮�閫氫俊鎭�
-	 * 
-	 * @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;
-		}
+        if (page == null)
+            page = 1;
 
-		UserInfo userInfo = userInfoService.getUserByIdWithMybatis(uid);
-		if (userInfo == null) {
-			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�"));
-			return;
-		}
+        // 鏌ヨ鎴愬姛璁板綍
+        int state = 1;
+        List<UserCloudOrder> list = userCloudOrderService.getOrderRecord(page, Constant.PAGE_SIZE, uid, state);
+        if (list == null)
+            list = new ArrayList<>();
 
-		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);
-					}
-				}
+        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));
+                }
+            }
+        });
 
-				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);
-							}
-						}
-					}
+        long count = userCloudOrderService.countOrderRecord(uid, state);
 
-					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)));
-	}
+        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
-	 */
-	@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;
-		}
+    /**
+     * 鑾峰彇寮�閫氫俊鎭�
+     *
+     * @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;
+        }
 
-		UserCloud userCloud = userCloudService.getValidByUid(uid);
-		if (userCloud == 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;
+        }
 
-		// 鏈哄櫒浜篒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;
-		}
-
-		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();
-			ConfigParamsDTO 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));
-	}
+        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);
 
-	/**
-	 *  鍒犻櫎浜戝彂鍗曞閫夊簱
-	 * 
-	 * @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("鎿嶄綔鎴愬姛"));
-	}
+        // 鏄惁寮�閫�
+        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);
+                    }
+                }
 
-	/**
-	 * 璁剧疆鐘舵��
-	 * 
-	 * @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));
-	}
+                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);
+                            }
+                        }
+                    }
 
-	/**
-	 * 浜戝彂鍗曟敮浠�
-	 * 
-	 * @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;
-			}
+                    cloudInfoVO.setLoginState(true);
+                    cloudInfoVO.setCircle(circle);
+                    cloudInfoVO.setListGroup(listGroup);
+                }
+            }
+        }
 
-			if (StringUtil.isNullOrEmpty(type)) {
-				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "璇烽�夋嫨浜戝彂鍗曞椁�"));
-				return;
-			}
+        // 鏁欑▼
+        List<BannerVO> listBanner = swiperPictureService.getByBannerCard("cloud_course", acceptData.getSystem());
+        if (listBanner != null && listBanner.size() > 0) {
+            cloudInfoVO.setCourse(listBanner.get(0));
+        }
+        GsonBuilder gsonBuilder = new GsonBuilder();
 
-			// 鍒涘缓鏀粯淇℃伅
-			String alipayForm = userCloudAlipayManager.getAlipayForm(uid, type);
+        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(gsonBuilder.create().toJson(cloudInfoVO)));
+    }
 
-			// 杩斿洖淇℃伅 - 缂撳瓨鍒皊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 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;
+        }
 
-	
-	/**
-	 * 鏀粯瀹屾垚
-	 * 
-	 * @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 {
-				
-				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.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()));
-			}
-		}
-	}
+        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;
+        }
+
+        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();
+            ConfigParamsDTO 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 {
+
+                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.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