ThanksGivingHandler.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. package com.iamberry.wechat.handles.thanksgiving;
  2. import com.iamberry.wechat.core.entity.ResultMsg;
  3. import com.iamberry.wechat.core.entity.WechatUtils;
  4. import com.iamberry.wechat.core.entity.coupon.CouponItemDto;
  5. import com.iamberry.wechat.core.entity.coupon.CouponType;
  6. import com.iamberry.wechat.core.entity.member.Member;
  7. import com.iamberry.wechat.core.entity.thanksgiving.ThanksGiving;
  8. import com.iamberry.wechat.face.coupon.CouponItemService;
  9. import com.iamberry.wechat.face.coupon.CouponTypeService;
  10. import com.iamberry.wechat.face.home.HomeService;
  11. import com.iamberry.wechat.face.member.MemberService;
  12. import com.iamberry.wechat.face.order.CodeService;
  13. import com.iamberry.wechat.face.thanksgiving.ThanksGivingService;
  14. import com.iamberry.wechat.service.ImberryConfig;
  15. import com.iamberry.wechat.tools.NameUtils;
  16. import com.iamberry.wechat.tools.payUtil.RandomUtil;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Controller;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.springframework.web.bind.annotation.RequestMethod;
  23. import org.springframework.web.bind.annotation.ResponseBody;
  24. import javax.servlet.ServletException;
  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpServletResponse;
  27. import javax.servlet.http.HttpSession;
  28. import java.io.IOException;
  29. import java.text.MessageFormat;
  30. import java.util.Calendar;
  31. import java.util.Date;
  32. import java.util.List;
  33. /**
  34. * 感恩活动
  35. */
  36. @Controller
  37. @RequestMapping("/wechat/tanksgiv")
  38. public class ThanksGivingHandler {
  39. private Logger logger = LoggerFactory.getLogger(ThanksGivingHandler.class);
  40. @Autowired
  41. private CodeService codeService;
  42. @Autowired
  43. private ThanksGivingService thanksGivingService;
  44. @Autowired
  45. private MemberService memberService;
  46. @Autowired
  47. private HomeService homeService;
  48. /**
  49. * 免费送滤芯
  50. * @param request
  51. * @param response
  52. * @throws ServletException
  53. * @throws IOException
  54. */
  55. @RequestMapping(value = "/free_collection", method = RequestMethod.GET)
  56. public void freeCollection(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  57. request.getRequestDispatcher(NameUtils.getConfig("WECHAT_GO_FREE_COLLECTION")).forward(request, response);return;
  58. }
  59. /**
  60. * 免费领取滤芯
  61. * @param request
  62. * @param response
  63. * @throws ServletException
  64. * @throws IOException
  65. */
  66. @RequestMapping(value = "/receiving_filter", method = RequestMethod.GET)
  67. public void receivingFilter(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  68. request.getRequestDispatcher(NameUtils.getConfig("WECHAT_GO_RECEIVING_FILTER_CARTRIDGE")).forward(request, response);return;
  69. }
  70. /**
  71. * 发送验证码
  72. * 2016年4月21日
  73. * @author 穆再兴
  74. * @return
  75. */
  76. @ResponseBody
  77. @RequestMapping("/attention_veri")
  78. public ResultMsg attentionVeri(HttpServletRequest requeste){
  79. ResultMsg rm = new ResultMsg();
  80. Member member = WechatUtils.getUserBySession(requeste);
  81. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  82. if(member == null){
  83. // 创建新的用户
  84. member = new Member();
  85. member.setUserOpenid(member.getUserOpenid());
  86. member.setUserSex(0);
  87. member.setUserStatus(1);
  88. int flag = homeService.insertMemberInfo(member);
  89. if (flag < 1) {
  90. return new ResultMsg(false, ResultMsg.ERROR, "请先关注“Watero水时代”公众号,并联系客服添加用户!",null);
  91. }
  92. }
  93. rm.setMessage(ResultMsg.SUCCESS);
  94. rm.setStatus(true);
  95. return rm;
  96. }
  97. /**
  98. * 发送验证码
  99. * 2016年4月21日
  100. * @author 穆再兴
  101. * @return
  102. */
  103. @ResponseBody
  104. @RequestMapping("/send_veri")
  105. public ResultMsg sendPhone(HttpServletRequest request,String phone){
  106. ResultMsg rm = new ResultMsg();
  107. Member member = WechatUtils.getUserBySession(request);
  108. if(phone.length() != 11){
  109. rm.setMessage(ResultMsg.ERROR);
  110. rm.setMessage("电话号码错误!");
  111. logger.info("openid="+member.getUserOpenid()+"phone:"+phone+"==电话号码错误!");
  112. System.out.println("openid="+member.getUserOpenid()+"phone:"+phone+"==电话号码错误!");
  113. return rm;
  114. }
  115. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  116. if(member == null){
  117. // 创建新的用户
  118. member = new Member();
  119. member.setUserOpenid(member.getUserOpenid());
  120. member.setUserSex(0);
  121. member.setUserStatus(1);
  122. int flag = homeService.insertMemberInfo(member);
  123. if (flag < 1) {
  124. logger.info("openid="+member.getUserOpenid()+"phone:"+phone+"==请先关注“Watero水时代”公众号,并联系客服添加用户!");
  125. System.out.println("openid="+member.getUserOpenid()+"phone:"+phone+"==请先关注“Watero水时代”公众号,并联系客服添加用户!");
  126. return new ResultMsg(false, ResultMsg.ERROR, "请先关注“Watero水时代”公众号,并联系客服添加用户!",null);
  127. }
  128. }
  129. ThanksGiving thanksGiving = new ThanksGiving();
  130. thanksGiving.setThanksGivingPhone(phone);
  131. List<ThanksGiving> thanksGivingList = thanksGivingService.getThanksGivingList(thanksGiving);
  132. if(thanksGivingList == null || thanksGivingList.size() < 1){
  133. logger.info("openid="+member.getUserOpenid()+"phone:"+phone+"=您的手机号码未录入到老客户行列,暂时无法领取,详情请联系客服人员!");
  134. System.out.println("openid="+member.getUserOpenid()+"phone:"+phone+"==您的手机号码未录入到老客户行列,暂时无法领取,详情请联系客服人员!");
  135. return new ResultMsg(false, ResultMsg.ERROR, "您的手机号码未录入到老客户行列,暂时无法领取,详情请联系客服人员!",null);
  136. }
  137. //获取验证码
  138. String num = RandomUtil.getRandom();
  139. //使用request对象的getSession()获取session,如果session不存在则创建一个
  140. HttpSession session = request.getSession();
  141. String text = MessageFormat.format(ImberryConfig.PROBATION_VERIFICATION_CODE, num);
  142. String result = codeService.sendOtherCMS(phone, text);
  143. //将数据存储到session中
  144. session.setAttribute("verification_code",num );
  145. session.setAttribute("verification_tel",phone );
  146. session.setAttribute("verification_date",new Date());
  147. rm.setMessage(ResultMsg.SUCCESS);
  148. rm.setStatus(true);
  149. return rm;
  150. }
  151. /**
  152. * 领取优惠券
  153. * 2016年4月21日
  154. * @author 穆再兴
  155. * @return
  156. */
  157. @ResponseBody
  158. @RequestMapping("/receive_coupon")
  159. public ResultMsg receiveCoupon(HttpServletRequest request,String phone,String code){
  160. ResultMsg rm = new ResultMsg();
  161. Member member = WechatUtils.getUserBySession(request);
  162. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  163. if(member == null){
  164. // 创建新的用户
  165. member = new Member();
  166. member.setUserOpenid(member.getUserOpenid());
  167. member.setUserSex(0);
  168. member.setUserStatus(1);
  169. int flag = homeService.insertMemberInfo(member);
  170. if (flag < 1) {
  171. logger.info("openid="+member.getUserOpenid()+"phone:"+phone+"=请先关注“Watero水时代”公众号,并联系客服添加用户!");
  172. return new ResultMsg(false, ResultMsg.ERROR, "请先关注“Watero水时代”公众号,并联系客服添加用户!",null);
  173. }
  174. }
  175. //判断验证码
  176. //使用request对象的getSession()获取session,如果session不存在则创建一个
  177. HttpSession session = request.getSession();
  178. String verificationTel = (String) session.getAttribute("verification_tel");
  179. String verificationCode = (String) session.getAttribute("verification_code");
  180. Date verificationDate = (Date) session.getAttribute("verification_date");
  181. if(verificationTel == null || verificationCode == null || verificationDate == null){
  182. logger.info("openid="+member.getUserOpenid()+"phone:"+phone+"=领取出错,请重新获取验证码");
  183. return new ResultMsg(false, ResultMsg.ERROR, "领取出错,请重新获取验证码!",null);
  184. }
  185. if(phone.length() != 11 && phone.equals(verificationTel)){
  186. rm.setMessage(ResultMsg.ERROR);
  187. rm.setMessage("电话号码错误!");
  188. return rm;
  189. }
  190. if(code == null || "".equals(code)){
  191. return new ResultMsg(false, ResultMsg.ERROR, "验证码为空!",null);
  192. }
  193. Calendar nowTime = Calendar.getInstance();
  194. nowTime.setTime(verificationDate);
  195. nowTime.add(Calendar.MINUTE, 5);
  196. Date verData = nowTime.getTime();
  197. if(!verificationCode.equals(code)){
  198. logger.info("openid="+member.getUserOpenid()+"phone:"+phone+"=验证码不正确,请重新输入");
  199. return new ResultMsg(false, ResultMsg.ERROR, "验证码不正确,请重新输入!",null);
  200. }
  201. if((verData.getTime() < System.currentTimeMillis())){
  202. return new ResultMsg(false, ResultMsg.ERROR, "验证码已失效,请重新获取!",null);
  203. }
  204. ThanksGiving thanksGiving = new ThanksGiving();
  205. thanksGiving.setThanksGivingPhone(phone);
  206. List<ThanksGiving> thanksGivingList = thanksGivingService.getThanksGivingList(thanksGiving);
  207. if(thanksGivingList == null){
  208. logger.info("openid="+member.getUserOpenid()+"phone:"+phone+"=您的手机号码未录入到老客户行列,暂时无法领取,详情请联系客服人员");
  209. return new ResultMsg(false, ResultMsg.ERROR, "您的手机号码未录入到老客户行列,暂时无法领取,详情请联系客服人员!",null);
  210. }
  211. thanksGiving = thanksGivingList.get(0);
  212. if(thanksGiving.getThanksGivingStatus() != 1 ){
  213. logger.info("openid="+member.getUserOpenid()+"phone:"+phone+"=领取失败,该电话号码已领取优惠券!==="+thanksGiving.getThanksGivingStatus());
  214. return new ResultMsg(false, ResultMsg.ERROR, "领取失败,该电话号码已领取优惠券!",null);
  215. }
  216. ThanksGiving tg = new ThanksGiving();
  217. tg.setThanksGivingPhone(phone);
  218. tg.setThanksGivingId(thanksGivingList.get(0).getThanksGivingId());
  219. tg.setThanksGivingOpenId(member.getUserOpenid());
  220. Integer flag = 0;
  221. try{
  222. flag = thanksGivingService.update(tg);
  223. }catch (Exception e){
  224. e.printStackTrace();
  225. return new ResultMsg(false, ResultMsg.ERROR, e.getMessage(),null);
  226. }
  227. if(flag < 1){
  228. logger.info("openid="+member.getUserOpenid()+"phone:"+phone+"=领取失败,请重新领取!");
  229. return new ResultMsg(false, ResultMsg.ERROR, "领取失败,请重新领取!",null);
  230. }
  231. //领取成功 验证码失效,
  232. session.setAttribute("verification_code",null );
  233. session.setAttribute("verification_tel",null );
  234. session.setAttribute("verification_date",null );
  235. return new ResultMsg(true, ResultMsg.SUCCESS, "领取成功!",null);
  236. }
  237. }