MemberHandler.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. package com.iamberry.wechat.handles.member;
  2. import java.io.IOException;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import com.iamberry.wechat.core.entity.integral.MemberIntegral;
  9. import com.iamberry.wechat.face.integral.UseIntegralService;
  10. import org.apache.commons.lang.StringUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Controller;
  13. import org.springframework.web.bind.annotation.RequestMapping;
  14. import org.springframework.web.bind.annotation.RequestMethod;
  15. import org.springframework.web.bind.annotation.RequestParam;
  16. import org.springframework.web.bind.annotation.ResponseBody;
  17. import com.iamberry.wechat.core.entity.Page;
  18. import com.iamberry.wechat.core.entity.ResultMsg;
  19. import com.iamberry.wechat.core.entity.WechatUtils;
  20. import com.iamberry.wechat.core.entity.drp.PlaceInfo;
  21. import com.iamberry.wechat.core.entity.member.Member;
  22. import com.iamberry.wechat.core.entity.qrcode.QrcodeResult;
  23. import com.iamberry.wechat.face.drp.PlaceInfoService;
  24. import com.iamberry.wechat.face.home.HomeService;
  25. import com.iamberry.wechat.face.member.MemberService;
  26. import com.iamberry.wechat.face.qrcode.QrcodeService;
  27. import com.iamberry.wechat.face.qrcode.TemporaryQrcodeService;
  28. import com.iamberry.wechat.tools.NameUtils;
  29. import com.iamberry.wechat.tools.ResultInfo;
  30. import com.iamberry.wechat.tools.StaticInfo;
  31. /**
  32. *
  33. * description:
  34. * @author: 张应真
  35. * @createDate: 2016年4月21日
  36. */
  37. @Controller
  38. @RequestMapping("/wechat/member")
  39. public class MemberHandler {
  40. @Autowired
  41. private MemberService memberService;
  42. @Autowired
  43. private PlaceInfoService placeInfoService;
  44. @Autowired
  45. private QrcodeService qrcodeService;
  46. @Autowired
  47. private HomeService homeService;
  48. @Autowired
  49. private TemporaryQrcodeService temporaryQrcodeService;
  50. @Autowired
  51. private UseIntegralService useIntegralService; //会员积分service
  52. /**
  53. * 微代理查看下线
  54. * @return
  55. * @throws Exception
  56. */
  57. @ResponseBody
  58. @RequestMapping(value = "/porxyCheckUser", method = RequestMethod.POST)
  59. public ResultMsg porxyCheckUser(
  60. @RequestParam(defaultValue = "10", value = "pageSize", required = false) Integer pageSize,
  61. HttpServletRequest request) throws Exception {
  62. ResultMsg msg = new ResultMsg();
  63. Member member = WechatUtils.getUserBySession(request);
  64. Page page = new Page();
  65. page.setPageSize(pageSize);
  66. page.setTotalRecord(member.getUserId());
  67. String beginNo=request.getParameter("beginNo");
  68. if(beginNo!=null){
  69. page.getParams().put("beginNo",beginNo);
  70. }
  71. String endNo=request.getParameter("endNo");
  72. if(endNo!=null){
  73. page.getParams().put("endNo",endNo);
  74. }
  75. Map<String, Object> map = memberService.getDownInfoAndBuyedCount(page);
  76. msg.setData(map);
  77. msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  78. msg.setResultCode(ResultInfo.SUCCESSCODE);
  79. msg.setStatus(true);
  80. return msg;
  81. }
  82. /**
  83. * 前台获取会员二维码接口
  84. * @return
  85. * @throws Exception
  86. */
  87. @ResponseBody
  88. @RequestMapping(value = "/shareProxyMemberUrl", method = RequestMethod.POST)
  89. public ResultMsg shareMemberUrl(
  90. @RequestParam(value = "share", required = false) String share,
  91. @RequestParam(value = "isDefault", required = false) String isDefault,
  92. HttpServletResponse response,
  93. HttpServletRequest request) throws Exception {
  94. ResultMsg msg = new ResultMsg();
  95. if(share != null) {// 是否为分享,不为空表示分享
  96. Map<String, Object> map = new HashMap<String, Object>();
  97. if ("true".equals(isDefault)) { // 是否分享了默认的二维码,true表示分享默认的二维码
  98. map.put("shareUrl", NameUtils.getConfig("WECHAT_MEMBER_SHARE_QRCODE") + "?isDefault=true");
  99. map.put("qrcodeUrl", NameUtils.getConfig("WECHAT_DEFAULT_QRCODE"));
  100. } else {
  101. try {
  102. Member tempMember = memberService.getMemberByUserId(Integer.parseInt(StaticInfo.md5.decrypt(share)));
  103. if (tempMember != null && tempMember.getUserIdentity() == 2) {
  104. StringBuffer shareUrl = new StringBuffer(NameUtils.getConfig("WECHAT_MEMBER_SHARE_QRCODE"));
  105. shareUrl.append("?share=" + StaticInfo.md5.encrypt(tempMember.getUserId().toString()));
  106. //当前用户
  107. Member member = WechatUtils.getUserBySession(request);
  108. // 绑定用户关系
  109. memberService.buildChildUser(tempMember.getUserOpenid(), member,1,1);
  110. map.put("shareUrl", shareUrl.toString());
  111. QrcodeResult qr = temporaryQrcodeService.getTempQrcodeUrlByOpenid(tempMember.getUserOpenid());
  112. if(qr.isSuccess()){
  113. map.put("qrcodeUrl", qr.getQroceUrl());
  114. }else{
  115. map.put("qrcodeUrl", NameUtils.getConfig("WECHAT_DEFAULT_QRCODE"));
  116. }
  117. map.put("data", tempMember);
  118. } else {
  119. map.put("shareUrl", NameUtils.getConfig("WECHAT_MEMBER_SHARE_QRCODE") + "?isDefault=true");
  120. map.put("qrcodeUrl", NameUtils.getConfig("WECHAT_DEFAULT_QRCODE"));
  121. }
  122. } catch (Exception e) {
  123. e.printStackTrace();
  124. map.put("shareUrl", NameUtils.getConfig("WECHAT_MEMBER_SHARE_QRCODE") + "?isDefault=true");
  125. map.put("qrcodeUrl", NameUtils.getConfig("WECHAT_DEFAULT_QRCODE"));
  126. }
  127. }
  128. msg.setData(map);
  129. msg.setResultCode(ResultInfo.SUCCESSCODE);
  130. msg.setStatus(true);
  131. return msg;
  132. }
  133. Member member = WechatUtils.getUserBySession(request);
  134. Map<String, Object> map = new HashMap<String, Object>();
  135. if (member.getUserIdentity() != null && member.getUserIdentity() == 2) { // 1:会员 ; 2:微代理
  136. if (member.getUserNickname() == null) {
  137. Member tempMember = memberService.getMemberByUserId(member.getUserId());
  138. member.setUserNickname(tempMember.getUserNickname());
  139. member.setUserHead(tempMember.getUserHead());
  140. map.put("data", tempMember);
  141. } else {
  142. map.put("data", member);
  143. }
  144. } else {
  145. Member tempMember = memberService.getMemberByUserId(member.getUserId());
  146. //if (tempMember == null || tempMember.getUserIdentity() != 2) {
  147. if (tempMember == null){
  148. msg.setStatus(false);
  149. msg.setResultCode(ResultInfo.ERRORCODE);
  150. msg.setMessage(NameUtils.getConfig("ERRORINFO"));
  151. return msg;
  152. }
  153. map.put("data", tempMember);
  154. member.setUserNickname(tempMember.getUserNickname());
  155. member.setUserHead(tempMember.getUserHead());
  156. member.setUserIdentity(2); // 代理
  157. }
  158. StringBuffer shareUrl = new StringBuffer(NameUtils.getConfig("WECHAT_MEMBER_SHARE_QRCODE"));
  159. shareUrl.append("?share=" + StaticInfo.md5.encrypt(member.getUserId().toString()));
  160. map.put("shareUrl", shareUrl.toString());
  161. QrcodeResult qr = temporaryQrcodeService.getTempQrcodeUrlByOpenid(member.getUserOpenid());
  162. if(qr.isSuccess()){
  163. map.put("qrcodeUrl", qr.getQroceUrl());
  164. }else{
  165. map.put("qrcodeUrl", NameUtils.getConfig("WECHAT_DEFAULT_QRCODE"));
  166. }
  167. msg.setData(map);
  168. msg.setResultCode(ResultInfo.SUCCESSCODE);
  169. msg.setStatus(true);
  170. return msg;
  171. }
  172. /**
  173. * 获取分销商二维码
  174. * @return
  175. * @throws Exception
  176. */
  177. @ResponseBody
  178. @RequestMapping(value = "/shareDrpUrl", method = RequestMethod.POST)
  179. public ResultMsg shareDrpUrl(
  180. @RequestParam(value = "share", required = false) String share, // 如果此参数存在,表示别人查看的二维码,否则表示自己查看二维码
  181. @RequestParam(value = "isDefault", required = false) String isDefault,
  182. HttpServletRequest request) throws Exception {
  183. ResultMsg msg = new ResultMsg();
  184. // 就算失败,也返回默认二维码
  185. Map<String, String> map = new HashMap<String, String>();
  186. map.put("shareUrl", NameUtils.getConfig("WECHAT_MEMBER_PROXY_QRCODE") + "?isDefault=true");
  187. map.put("qrcodeUrl", NameUtils.getConfig("WECHAT_DEFAULT_QRCODE"));
  188. msg.setData(map);
  189. Member member = WechatUtils.getUserBySession(request);
  190. // 是否默认
  191. if ("true".equals(isDefault)) {
  192. msg.setData(map);
  193. msg.setResultCode(ResultInfo.SUCCESSCODE);
  194. msg.setStatus(true);
  195. return msg;
  196. }
  197. // 判断是否查看分享连接
  198. if (share != null) {
  199. try {
  200. // 解析加密值
  201. Integer placeId = Integer.parseInt(StaticInfo.md5.decrypt(share));
  202. String qrcodeUrl = qrcodeService.selectQrcodeUrlByReplaceUser(placeId);
  203. if (qrcodeUrl == null) {
  204. msg.setMessage(ResultInfo.userNoDrpError);
  205. msg.setResultCode(ResultInfo.ERRORCODE);
  206. return msg;
  207. }
  208. // 拼装数据
  209. StringBuffer shareUrl = new StringBuffer(NameUtils.getConfig("WECHAT_MEMBER_PROXY_QRCODE"));
  210. shareUrl.append("?share=" + StaticInfo.md5.encrypt(placeId.toString()));
  211. map.put("shareUrl", shareUrl.toString());
  212. map.put("qrcodeUrl", qrcodeUrl);
  213. // 代理商管理元的信息
  214. Member tempMember = homeService.selectUserInfoByPlaceId(placeId);
  215. //绑定关系
  216. memberService.buildChildUser(tempMember.getUserOpenid(), member,2,1);
  217. map.put("userHeadImage", tempMember.getUserHead());
  218. map.put("userNickName", tempMember.getUserNickname());
  219. msg.setData(map);
  220. return msg;
  221. } catch (Exception e) {
  222. e.printStackTrace();
  223. msg.setMessage(ResultInfo.userNoDrpError);
  224. msg.setResultCode(ResultInfo.ERRORCODE);
  225. return msg;
  226. }
  227. }
  228. // 判断用户是否为分销商
  229. PlaceInfo placeInfo=placeInfoService.getPlaceInfoByOpenId(member.getUserOpenid());
  230. if(null == placeInfo){
  231. msg.setMessage(ResultInfo.userNoDrpError);
  232. msg.setResultCode(ResultInfo.ERRORCODE);
  233. return msg;
  234. }
  235. // 查询当前分销商的二维码
  236. String qrcodeUrl = qrcodeService.selectQrcodeUrlByReplaceUser(placeInfo.getId());
  237. if (qrcodeUrl == null) {
  238. msg.setMessage(ResultInfo.userNoDrpError);
  239. msg.setResultCode(ResultInfo.ERRORCODE);
  240. return msg;
  241. }
  242. // 代理商管理的信息
  243. Member tempMember = memberService.getMemberByUserId(member.getUserId());
  244. if (tempMember == null) {
  245. msg.setMessage(ResultInfo.userNoDrpError);
  246. msg.setResultCode(ResultInfo.ERRORCODE);
  247. return msg;
  248. }
  249. map.put("userHeadImage", tempMember.getUserHead());
  250. map.put("userNickName", tempMember.getUserNickname());
  251. StringBuffer shareUrl = new StringBuffer(NameUtils.getConfig("WECHAT_MEMBER_PROXY_QRCODE"));
  252. shareUrl.append("?share=" + StaticInfo.md5.encrypt(placeInfo.getId()+""));
  253. map.put("shareUrl", shareUrl.toString());
  254. map.put("qrcodeUrl", qrcodeUrl);
  255. msg.setData(map);
  256. msg.setResultCode(ResultInfo.SUCCESSCODE);
  257. msg.setStatus(true);
  258. return msg;
  259. }
  260. /**
  261. * 通过openid获取用户二维码
  262. */
  263. @ResponseBody
  264. @RequestMapping("/getQrcode")
  265. public ResultMsg getQrcode(@RequestParam(value="openid",defaultValue= "", required=false)String openid){
  266. ResultMsg rm = new ResultMsg();
  267. if(StringUtils.isEmpty(openid)){
  268. rm.setStatus(false);
  269. rm.setResultCode(ResultInfo.ERRORCODE);
  270. rm.setMessage(NameUtils.getConfig("ERRORINFO"));
  271. }
  272. PlaceInfo placeInfo = placeInfoService.getPlaceInfoByOpenId(openid);
  273. String qrcode = "";
  274. if(placeInfo == null){
  275. qrcode = qrcodeService.selectQrcodeUrlByReplaceUser(openid);
  276. }else{
  277. qrcode = qrcodeService.selectQrcodeUrlByReplaceUser(placeInfo.getId());
  278. }
  279. if(StringUtils.isNotEmpty(qrcode)){
  280. rm.setStatus(true);
  281. rm.setResultCode(ResultInfo.SUCCESSCODE);
  282. rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  283. rm.setData(qrcode);
  284. }else{
  285. rm.setStatus(false);
  286. rm.setResultCode(ResultInfo.ERRORCODE);
  287. rm.setMessage(NameUtils.getConfig("ERRORINFO"));
  288. }
  289. return rm;
  290. }
  291. /**
  292. * 查看二维码
  293. * @param request
  294. * @throws IOException
  295. * @throws ServletException
  296. */
  297. @RequestMapping(value = "/showQrcode", method = RequestMethod.GET)
  298. public void showQrcode(
  299. HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  300. request.getRequestDispatcher(NameUtils.getConfig("WECHAT_SHOP_MEMGER_INDEX")).forward(request, response);
  301. }
  302. /**
  303. * 通过openid查询user
  304. * @param request
  305. * @return
  306. * @throws Exception
  307. */
  308. @ResponseBody
  309. @RequestMapping("/getUser")
  310. public ResultMsg getUser(HttpServletRequest request
  311. ) throws Exception {
  312. String openId = WechatUtils.getUserBySession(request).getUserOpenid();
  313. ResultMsg resultMsg = new ResultMsg();
  314. Member member = memberService.getMemberByUserOpenId(openId);
  315. if (member == null) {
  316. resultMsg.setData("");
  317. resultMsg.setMessage(NameUtils.getConfig("ERRORINFO"));
  318. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  319. resultMsg.setStatus(false);
  320. return resultMsg;
  321. } else {
  322. if (2 == member.getUserStatus()){ // 1:未关注,默认 2:已关注 0:已取消关注
  323. resultMsg.setData(member.getUserId());
  324. resultMsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  325. resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
  326. resultMsg.setStatus(true);
  327. return resultMsg;
  328. }else{
  329. resultMsg.setData("");
  330. resultMsg.setMessage(NameUtils.getConfig("ERRORINFO"));
  331. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  332. resultMsg.setStatus(false);
  333. return resultMsg;
  334. }
  335. }
  336. }
  337. }