ApparatusHandler.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. package com.iamberry.wechat.handles.apparatus;
  2. import com.iamberry.app.tool.util.HttpUtility;
  3. import com.iamberry.wechat.core.entity.PageBean;
  4. import com.iamberry.wechat.core.entity.ResultMsg;
  5. import com.iamberry.wechat.core.entity.WechatUtils;
  6. import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
  7. import com.iamberry.wechat.core.entity.apparatus.Apparatus;
  8. import com.iamberry.wechat.core.entity.member.Member;
  9. import com.iamberry.wechat.face.admin.SystemService;
  10. import com.iamberry.wechat.face.apparatus.ApparatusService;
  11. import com.iamberry.wechat.face.member.MemberService;
  12. import com.iamberry.wechat.face.order.CodeService;
  13. import com.iamberry.wechat.service.ImberryConfig;
  14. import com.iamberry.wechat.tools.HttpClient431Util;
  15. import com.iamberry.wechat.tools.NameUtils;
  16. import com.iamberry.wechat.tools.ResultInfo;
  17. import com.iamberry.wechat.tools.SendMessageUtil;
  18. import com.iamberry.wechat.tools.payUtil.RandomUtil;
  19. import com.iamberry.wechat.tools.payUtil.StringUtil;
  20. import net.sf.json.JSONObject;
  21. import org.apache.commons.lang3.StringEscapeUtils;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Controller;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.RequestParam;
  28. import org.springframework.web.bind.annotation.ResponseBody;
  29. import javax.servlet.http.HttpServletRequest;
  30. import javax.servlet.http.HttpSession;
  31. import java.text.MessageFormat;
  32. import java.text.SimpleDateFormat;
  33. import java.util.*;
  34. import java.util.regex.Matcher;
  35. import java.util.regex.Pattern;
  36. /**
  37. * Created by liuzhiwei on 2017/12/28.
  38. */
  39. @Controller
  40. @RequestMapping("/wechat/apparatus")
  41. public class ApparatusHandler {
  42. private Logger logger = LoggerFactory.getLogger(ApparatusHandler.class);
  43. @Autowired
  44. private SendMessageUtil sendMessageUtil;
  45. @Autowired
  46. private ApparatusService apparatusService;
  47. @Autowired
  48. private SystemService systemService;
  49. @Autowired
  50. private CodeService codeService;
  51. @Autowired
  52. private MemberService memberService;
  53. /**
  54. * 分页查询用户机器信息
  55. * @param request
  56. * @param pageNO
  57. * @param pageSize
  58. * @return
  59. * @throws Exception
  60. */
  61. @ResponseBody
  62. @RequestMapping("/select_apparatus_page")
  63. public ResultMsg selectApparatusPage(HttpServletRequest request,
  64. @RequestParam(value = "pageNO", defaultValue = "1", required = false) int pageNO,
  65. @RequestParam(value = "pageSize", defaultValue = "5", required = false) int pageSize) throws Exception {
  66. ResultMsg msg = new ResultMsg();
  67. Member member = WechatUtils.getUserBySession(request);
  68. Apparatus apparatus = new Apparatus();
  69. apparatus.setUserOpenid(member.getUserOpenid());
  70. apparatus.setApparatusStatus(1);
  71. PageBean page = new PageBean();
  72. page.setPageNumber(pageNO);
  73. page.setPageSize(pageSize);
  74. page.initRecordBegin();
  75. apparatus.setPage(page);
  76. //分页查询用户绑定机器信息
  77. List<Apparatus> apparatusList = apparatusService.listApparatusPage(apparatus);
  78. msg.setData(apparatusList);
  79. msg.setResultCode(ResultInfo.SUCCESSCODE);
  80. msg.setStatus(true);
  81. return msg;
  82. }
  83. /**
  84. * 发送短信
  85. * @param request
  86. * @return
  87. * @throws Exception
  88. */
  89. @ResponseBody
  90. @RequestMapping("/send_phone")
  91. public ResultMsg sendPhone(HttpServletRequest request,String phone) throws Exception {
  92. ResultMsg msg = new ResultMsg();
  93. if(phone.length() != 11){
  94. msg.setMessage("电话号码错误!");
  95. return msg;
  96. }
  97. //获取验证码
  98. String num = RandomUtil.getRandom();
  99. //使用request对象的getSession()获取session,如果session不存在则创建一个
  100. HttpSession session = request.getSession();
  101. String text = MessageFormat.format(ImberryConfig.SEND_VERIFICATION_PHONE, num);
  102. String result = codeService.informShipping(phone, text);
  103. //将数据存储到session中
  104. session.setAttribute("verification_code",num );
  105. session.setAttribute("verification_tel",phone );
  106. session.setAttribute("verification_date",new Date());
  107. if ("SUCCESS".equals(result)) {
  108. logger.info("短信发送成功,验证码为:" + num);
  109. msg.setResultCode(ResultInfo.SUCCESSCODE);
  110. msg.setStatus(true);
  111. } else {
  112. logger.info("短信发送失败:" + result);
  113. msg.setResultCode(ResultInfo.ERRORCODE);
  114. msg.setStatus(false);
  115. msg.setMessage("短信发送失败");
  116. return msg;
  117. }
  118. return msg;
  119. }
  120. /**
  121. * 注册会员
  122. * @param request
  123. * @param member userBirthDate
  124. * @return
  125. * @throws Exception
  126. */
  127. @ResponseBody
  128. @RequestMapping("/add_apparatus")
  129. public ResultMsg addApparatus(HttpServletRequest request,Member member,String code,String userBirthDateString) throws Exception {
  130. ResultMsg msg = new ResultMsg();
  131. Member memberInfo = WechatUtils.getUserBySession(request);
  132. memberInfo = memberService.getMemberByUserOpenId(memberInfo.getUserOpenid());
  133. boolean isRegistered = false;
  134. if(memberInfo.getUserIdentity() == 1){
  135. isRegistered = true;
  136. }
  137. if(userBirthDateString != null && userBirthDateString != "" ){
  138. String[] ubds = userBirthDateString.split("-");
  139. Calendar calendar = Calendar.getInstance();
  140. calendar.set(Integer.valueOf(ubds[0]),Integer.valueOf(ubds[1])-1,Integer.valueOf(ubds[2]));
  141. calendar.set(Calendar.HOUR_OF_DAY, 0);//时
  142. calendar.set(Calendar.MINUTE, 0);//分
  143. calendar.set(Calendar.SECOND, 0);//秒
  144. member.setUserBirthDate(calendar.getTime());
  145. }
  146. if(memberInfo.getUserTel() == null || !memberInfo.getUserTel().equals(member.getUserTel())){
  147. //判断验证码
  148. //使用request对象的getSession()获取session,如果session不存在则创建一个
  149. HttpSession session = request.getSession();
  150. String verificationTel = (String) session.getAttribute("verification_tel");
  151. if(member.getUserTel() == null || !member.getUserTel().equals(verificationTel)){
  152. return new ResultMsg(false, ResultInfo.ERRORCODE, "手机验证失败!",null);
  153. }
  154. String verificationCode = (String) session.getAttribute("verification_code");
  155. if(code == null){
  156. return new ResultMsg(false, ResultInfo.ERRORCODE, "未填写验证码!",null);
  157. }
  158. code = code.trim();
  159. Date verificationDate = (Date) session.getAttribute("verification_date");
  160. Calendar nowTime = Calendar.getInstance();
  161. nowTime.setTime(verificationDate);
  162. nowTime.add(Calendar.MINUTE, 5);
  163. Date verData = nowTime.getTime();
  164. if(!verificationCode.equals(code) || (verData.getTime() < new Date().getTime()) ){
  165. return new ResultMsg(false, ResultInfo.ERRORCODE, "验证码不正确或已失效,请重新获取!",null);
  166. }
  167. }
  168. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  169. //获取换新时间期限
  170. ShopSystemRule renewRule = systemService.selectOneShopRuleById(246);
  171. member.setUserOpenid(memberInfo.getUserOpenid());
  172. String barCode = request.getParameter("barCode");
  173. String apparatusStore = request.getParameter("apparatusStore");
  174. String buyDate = request.getParameter("buyDate");
  175. if (!StringUtil.isNotEmpty(barCode)
  176. ||!StringUtil.isNotEmpty(apparatusStore)
  177. ||!StringUtil.isNotEmpty(buyDate)) {
  178. return new ResultMsg(false, ResultInfo.ERRORCODE, "注册数据为空,请重新提交!",null);
  179. }
  180. //拼接日期信息
  181. buyDate = buyDate+" 00:00:00";
  182. Apparatus apparatus = new Apparatus();
  183. apparatus.setApparatusStatus(1);
  184. apparatus.setApparatusBarcode(barCode);
  185. //获取机器信息
  186. List<Apparatus> apparatusList = apparatusService.listApparatusPage(apparatus);
  187. if (apparatusList != null && apparatusList.size() > 0) {
  188. return new ResultMsg(false, ResultInfo.ERRORCODE, "该机器已被绑定!",null);
  189. }
  190. //获取rst系统产品信息,根据获取到的产品id查出对呀的产品颜色id
  191. Integer productColorId = 0;
  192. String json = HttpUtility.httpsGet(ResultInfo.GET_MACHINE_INFO+barCode);
  193. if(json == null){
  194. return new ResultMsg(false, ResultInfo.ERRORCODE, "会员注册失败,获取机器信息失败!",null);
  195. }
  196. JSONObject machineJson = JSONObject.fromObject(json);
  197. JSONObject message = machineJson.getJSONObject("message");
  198. String isBeing = message.getString("isBeing");
  199. if(isBeing.equals("1")){
  200. String productId = message.getString("productId");//产品id
  201. productColorId = apparatusService.getColorIdByProductId(productId);
  202. }else{
  203. return new ResultMsg(false, ResultInfo.ERRORCODE, "会员注册失败,未找到该机器!",null);
  204. }
  205. apparatus.setColorId(productColorId);
  206. apparatus.setUserOpenid(memberInfo.getUserOpenid());
  207. apparatus.setApparatusBuyDate(format.parse(buyDate));
  208. apparatus.setApparatusWarrantyDate(updateDate(format.parse(buyDate),renewRule.getRuleNum().intValue()));
  209. apparatus.setApparatusStore(Integer.valueOf(apparatusStore));
  210. //注册会员
  211. boolean flag = apparatusService.registerMember(apparatus,member);
  212. if (flag) {
  213. if(!isRegistered){
  214. logger.info("新用户注册推送信息,用户openid为"+memberInfo.getUserOpenid());
  215. Date date = new Date();
  216. String dataText = format.format(date);
  217. try {
  218. sendMessageUtil.registeredTemplate(
  219. ResultInfo.REGISTERED_TITLE,
  220. memberInfo.getUserNickname(),
  221. "100",
  222. dataText,
  223. ResultInfo.REGISTERED,
  224. memberInfo.getUserOpenid(),
  225. ResultInfo.INDEX_DETAIL);
  226. } catch (Exception e) {
  227. logger.info("注册推送信息失败,用户openid为"+memberInfo.getUserOpenid());
  228. }
  229. }
  230. msg.setResultCode(ResultInfo.SUCCESSCODE);
  231. msg.setStatus(true);
  232. } else {
  233. return new ResultMsg(false, ResultInfo.ERRORCODE, "会员注册失败,请重新注册!",null);
  234. }
  235. return msg;
  236. }
  237. /**
  238. * 修改日期 增加月
  239. * @param date
  240. * @param month
  241. * @return
  242. * @throws Exception
  243. */
  244. public Date updateDate(Date date,int month) throws Exception {
  245. Calendar calendar = Calendar.getInstance();
  246. calendar.setTime(date);
  247. calendar.add(Calendar.MONTH, month);
  248. return calendar.getTime();
  249. }
  250. }