BindingAppHandler.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. package com.iamberry.wechat.handles.binding;
  2. import java.io.File;
  3. import java.util.Date;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. import javax.servlet.ServletContext;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import org.apache.commons.io.FileUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.http.HttpHeaders;
  12. import org.springframework.http.HttpStatus;
  13. import org.springframework.http.MediaType;
  14. import org.springframework.http.ResponseEntity;
  15. import org.springframework.stereotype.Controller;
  16. import org.springframework.web.bind.annotation.PathVariable;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.ResponseBody;
  19. import org.springframework.web.context.ContextLoader;
  20. import org.springframework.web.context.WebApplicationContext;
  21. import com.iamberry.wechat.core.entity.ResultMsg;
  22. import com.iamberry.wechat.core.entity.WechatUtils;
  23. import com.iamberry.wechat.core.entity.bindingApp.BindingMac;
  24. import com.iamberry.wechat.core.entity.member.Member;
  25. import com.iamberry.wechat.core.entity.relationship.DealerRelation;
  26. import com.iamberry.wechat.face.bindingapp.BindingMacService;
  27. import com.iamberry.wechat.face.member.MemberService;
  28. import com.iamberry.wechat.face.relationship.DealerRelationService;
  29. import com.iamberry.wechat.tools.NameUtils;
  30. import com.iamberry.wechat.tools.ResultInfo;
  31. /**
  32. * @description 用户app绑定微信商城的微信用户
  33. * @author 欧阳明
  34. * @date 2016-06-08
  35. */
  36. @Deprecated
  37. @Controller
  38. @RequestMapping("/wechat/qrcode/")
  39. public class BindingAppHandler {
  40. @Autowired
  41. private BindingMacService bindingMacMapper;
  42. @Autowired
  43. private MemberService memberService;
  44. @Autowired
  45. private DealerRelationService dealerRelationService;
  46. /**
  47. *
  48. * @param request
  49. * @param macId 请求的mac码
  50. * @return
  51. * @throws Exception
  52. */
  53. @ResponseBody
  54. @RequestMapping("/{macId}")
  55. public void getMACDownLoad(@PathVariable String macId, HttpServletResponse response,HttpServletRequest requestion) throws Exception{
  56. requestion.getRequestDispatcher(NameUtils.getConfig("BINDINGDOWNLOD")).forward(requestion,response);
  57. }
  58. /**
  59. *
  60. * @param request
  61. * @param macId 请求的mac码
  62. * @return
  63. * @throws Exception
  64. */
  65. @ResponseBody
  66. @RequestMapping("/binding")
  67. public ResultMsg bingdingMac(HttpServletResponse response,HttpServletRequest request) throws Exception{
  68. ResultMsg rm = getSuccessResult();
  69. String macId = request.getParameter("macId");
  70. String openid = getOpenid(request);
  71. if(macId.equals("0000000000001606120000")){
  72. rm.setStatus(false);
  73. return rm;
  74. }
  75. Pattern pattern = Pattern.compile("^[0-9a-zA-Z-]{22,28}$");
  76. Matcher matcher = pattern.matcher(macId);
  77. if(!matcher.matches()){
  78. rm.setMessage("机器码无效,请确认是否是真实有效的机器码");
  79. return rm;
  80. }
  81. if(macId==null || macId.equals("")){
  82. rm.setMessage("机器码丢失,请重新扫描");
  83. return rm;
  84. }
  85. if(openid.equals("false")){
  86. rm.setMessage("若需绑定app与微信端的信息,请通过微信端扫码,本页面可供下载!");
  87. return rm;
  88. }
  89. Member member=memberService.getMemberByUserOpenId(openid);
  90. if(member==null){
  91. rm.setMessage("请先关注爱贝源,再绑定关系");
  92. return rm;
  93. }
  94. Date date=new Date();
  95. BindingMac bindingMac=new BindingMac();
  96. bindingMac.setCreateDate(date);
  97. bindingMac.setUpdateDate(date);
  98. bindingMac.setMacId(macId);
  99. bindingMac.setOpenid(openid);
  100. if(member.getUserResType()==3 && member.getUserDealers()>0){
  101. DealerRelation dealerRelation = dealerRelationService.getDealerRelationById(member.getUserDealers());
  102. int drpId=0;
  103. switch(dealerRelation.getDealerCount()){
  104. case 1:
  105. drpId=dealerRelation.getDealerFirst();
  106. break;
  107. case 2:
  108. drpId=dealerRelation.getDealerSecond();
  109. break;
  110. case 3:
  111. drpId=dealerRelation.getDealerThird();
  112. break;
  113. case 4:
  114. drpId=dealerRelation.getDealerFourth();
  115. break;
  116. case 5:
  117. drpId=dealerRelation.getDealerFifth();
  118. break;
  119. case 6:
  120. drpId=dealerRelation.getDealerSixth();
  121. break;
  122. }
  123. bindingMac.setDrpId(drpId);
  124. }
  125. int num=bindingMacMapper.testExist(macId);
  126. if(num>0){
  127. rm.setMessage("关系已经绑定,若需要重新绑定,请联系公众号客服");
  128. return rm;
  129. }
  130. num=bindingMacMapper.insert(bindingMac);
  131. if(num>0){
  132. rm.setMessage("设备绑定成功!");
  133. }else{
  134. rm.setMessage("设备绑定失败!");
  135. }
  136. return rm;
  137. }
  138. /**
  139. * App下载
  140. * @param request
  141. * @param url
  142. */
  143. @RequestMapping(value="/downLoad")
  144. public synchronized ResponseEntity<byte[]> downLoad(HttpServletRequest request,HttpServletResponse response) {
  145. WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
  146. ServletContext servletContext = webApplicationContext.getServletContext();
  147. String path1="/common/downLoad/iamberry_release.apk";
  148. String name="bibimeng.apk";
  149. String realPath = servletContext.getRealPath(path1);
  150. try{
  151. //创建HttpHeaders对象
  152. HttpHeaders headers = new HttpHeaders();
  153. //添加一个头消息
  154. headers.add("Content-Disposition", "attachment;filename=\"" + new String((name).getBytes("UTF-8"), "ISO-8859-1") + "\"");
  155. headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
  156. //创建一个响应吗
  157. HttpStatus httpStatus = HttpStatus.OK;
  158. //创建对象
  159. ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File(realPath)), headers, httpStatus);
  160. //手动释放资源
  161. return entity;
  162. }catch(Exception e) {
  163. e.printStackTrace();
  164. }
  165. return null;
  166. }
  167. //获取openid
  168. public String getOpenid(HttpServletRequest request){
  169. try {
  170. return WechatUtils.getUserBySession(request).getUserOpenid();
  171. } catch (Exception e) {
  172. System.out.println("无法获取openid,可能是其他浏览器打开!");
  173. return "false";
  174. }
  175. }
  176. //返回处理结果
  177. public ResultMsg getSuccessResult(){
  178. ResultMsg remsg=new ResultMsg();
  179. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  180. remsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  181. remsg.setStatus(true);
  182. return remsg;
  183. }
  184. }