AgentHandler.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. package com.iamberry.wechat.handles.agent;
  2. import java.text.MessageFormat;
  3. import java.util.*;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpSession;
  6. import com.iamberry.wechat.core.entity.activity.ActivityDate;
  7. import com.iamberry.wechat.core.entity.coupon.CouponItemDto;
  8. import com.iamberry.wechat.face.coupon.CouponItemService;
  9. import com.iamberry.wechat.face.order.CodeService;
  10. import com.iamberry.wechat.handles.thanksgiving.ThanksGivingHandler;
  11. import com.iamberry.wechat.service.ActivityUtil;
  12. import com.iamberry.wechat.service.ImberryConfig;
  13. import com.iamberry.wechat.tools.payUtil.RandomUtil;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Controller;
  18. import org.springframework.web.bind.annotation.RequestMapping;
  19. import org.springframework.web.bind.annotation.RequestParam;
  20. import org.springframework.web.bind.annotation.ResponseBody;
  21. import com.iamberry.wechat.core.entity.ResultMsg;
  22. import com.iamberry.wechat.core.entity.WechatUtils;
  23. import com.iamberry.wechat.core.entity.agent.AgentMemberDto;
  24. import com.iamberry.wechat.core.entity.agent.AgentOrderDto;
  25. import com.iamberry.wechat.core.entity.cart.ShopSalesOrderDto;
  26. import com.iamberry.wechat.core.entity.member.Member;
  27. import com.iamberry.wechat.core.entity.mq.MQMessage;
  28. import com.iamberry.wechat.face.agent.AgentMemberService;
  29. import com.iamberry.wechat.face.agent.AgentOrderService;
  30. import com.iamberry.wechat.face.cart.CartService;
  31. import com.iamberry.wechat.face.member.MemberService;
  32. import com.iamberry.wechat.handles.mq.MQServiceProxy;
  33. import com.iamberry.wechat.tools.NameUtils;
  34. import com.iamberry.wechat.tools.ResultInfo;
  35. /**
  36. * 微代理 handler 类
  37. * @author 穆再兴
  38. * 2016年4月19日
  39. */
  40. @Controller
  41. @RequestMapping("/wechat/agent")
  42. public class AgentHandler {
  43. private Logger logger = LoggerFactory.getLogger(AgentHandler.class);
  44. @Autowired
  45. private AgentOrderService agentOrderService; //微代理订单service
  46. @Autowired
  47. private MemberService memberService; //会员service
  48. @Autowired
  49. private AgentMemberService agentMemberService; //微代理会员service
  50. @Autowired
  51. private CartService cartService;
  52. @Autowired
  53. private MQServiceProxy mQservice;
  54. @Autowired
  55. private ActivityUtil activityUtil;
  56. @Autowired
  57. private CodeService codeService;
  58. @Autowired
  59. private CouponItemService couponItemService;
  60. /**
  61. * 获取当前用户<微代理> 的订单记录
  62. * 2016年4月19日
  63. * @author 穆再兴
  64. * @return json格式
  65. */
  66. @RequestMapping("/agentOrder")
  67. @ResponseBody
  68. public ResultMsg getAgentOrderJson(HttpServletRequest req,
  69. @RequestParam(value="rebackStatus",defaultValue= "4", required=false)Integer rebackStatus,
  70. @RequestParam(value="pageSize",defaultValue= "6", required=false)String pageSize,
  71. @RequestParam(value="pageNO",defaultValue= "1", required=false)String pageNO){
  72. ResultMsg rm = new ResultMsg();
  73. Member member = WechatUtils.getUserBySession(req);
  74. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  75. //查当前用户<微代理>userid 所有订单
  76. AgentOrderDto orderDto = new AgentOrderDto();
  77. orderDto.setOrderOpenid(member.getUserOpenid());
  78. orderDto.getPage().setPageSize(Integer.parseInt(pageSize));
  79. orderDto.getPage().setPageNumber(Integer.parseInt(pageNO));
  80. orderDto.setRebackStatus(rebackStatus);
  81. orderDto.getPage().initRecordBegin();
  82. Map<String, Object> map = agentOrderService.getOrderListAndCountByOpenid(orderDto);
  83. map.put("userIncome", member.getUserIncome() == null ? 0 : member.getUserIncome().intValue());
  84. rm.setResultCode(ResultInfo.SUCCESSCODE);
  85. rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  86. rm.setStatus(true);
  87. rm.setData(map);
  88. return rm;
  89. }
  90. /**
  91. * 会员中心页面
  92. * 2016年4月21日
  93. * @author 穆再兴
  94. * @return
  95. */
  96. @RequestMapping("/member")
  97. @ResponseBody
  98. public ResultMsg getMemberInfo(HttpServletRequest req){
  99. ResultMsg rm = new ResultMsg();
  100. Member member = new Member();
  101. String openId = req.getParameter("openId");
  102. if(openId != null && !openId.equals("")){
  103. member = memberService.getMemberByUserOpenId(openId);
  104. }else{
  105. member = WechatUtils.getUserBySession(req);
  106. }
  107. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  108. AgentMemberDto agentMember = agentMemberService.getMemberInfo(member);
  109. agentMember.setUserIsVip(member.getUserIsVip());
  110. agentMember.setUserArrange(member.getUserArrange());
  111. agentMember.setUser38Interests(2);
  112. agentMember.setUserSurplusIntegral(member.getUserSurplusIntegral()); //userSurplusIntegral
  113. agentMember.setUserTel(member.getUserTel());
  114. agentMember.setUserSex(member.getUserSex());
  115. agentMember.setUserBirthDate(member.getUserBirthDate());
  116. agentMember.setUserName(member.getUserName());
  117. CouponItemDto couponItemDto = new CouponItemDto();
  118. couponItemDto.setCouponVipExclusive(1);
  119. couponItemDto.setUseropenid(member.getUserOpenid());
  120. couponItemDto.setBeginDate(new Date());
  121. couponItemDto.setCouponUseStatus(1);
  122. Integer couponCount = couponItemService.getCouponItemCount(couponItemDto);
  123. CouponItemDto vipCouponItemDto = new CouponItemDto();
  124. vipCouponItemDto.setCouponVipExclusive(2);
  125. vipCouponItemDto.setUseropenid(member.getUserOpenid());
  126. vipCouponItemDto.setBeginDate(new Date());
  127. vipCouponItemDto.setCouponUseStatus(1);
  128. Integer couponVipCount = couponItemService.getCouponItemCount(vipCouponItemDto);
  129. agentMember.setCouponCount(couponCount);
  130. agentMember.setCouponVipCount(couponVipCount);
  131. rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  132. rm.setStatus(true);
  133. rm.setData(agentMember);
  134. return rm;
  135. }
  136. /**
  137. * 完善用户信息
  138. * @return
  139. */
  140. @RequestMapping("/updateMemberInfo")
  141. @ResponseBody
  142. public ResultMsg updateMemberInfo(HttpServletRequest request,Member member,String code){
  143. ResultMsg rm = new ResultMsg();
  144. Member m = WechatUtils.getUserBySession(request);
  145. m = memberService.getMemberByUserOpenId(m.getUserOpenid());
  146. if(m.getUserIsVip() == 2 && m.getUserArrange() == 1){
  147. return new ResultMsg(false, ResultMsg.ERROR, "您已经是会员了!",null);
  148. }
  149. if(m.getUserOpenid()== null || "".equals(m.getUserOpenid())){
  150. return new ResultMsg(false, ResultMsg.ERROR, "完善信息失败-用户OpenId为空",null);
  151. }
  152. if(member == null){
  153. return new ResultMsg(false, ResultMsg.ERROR, "完善信息失败,用户信息为空,请联系公众号客服!",null);
  154. }
  155. //姓名
  156. if(member.getUserName() == null){
  157. return new ResultMsg(false, ResultMsg.ERROR, "完善信息失败,姓名不能为空!",null);
  158. }
  159. //性别
  160. if(member.getUserSex() == null){
  161. return new ResultMsg(false, ResultMsg.ERROR, "完善信息失败,性别不能为空!",null);
  162. }
  163. //生日 userBirthDate
  164. if(member.getUserBirthDate() == null){
  165. return new ResultMsg(false, ResultMsg.ERROR, "完善信息失败,生日不能为空!",null);
  166. }
  167. //手机号码
  168. if(member.getUserTel() == null){
  169. return new ResultMsg(false, ResultMsg.ERROR, "完善信息失败,手机号码为空!",null);
  170. }
  171. //验证码
  172. if(code == null || "".equals(code)){
  173. return new ResultMsg(false, ResultMsg.ERROR, "完善信息失败,验证码为空!",null);
  174. }
  175. //使用request对象的getSession()获取session,如果session不存在则创建一个
  176. HttpSession session = request.getSession();
  177. Map verificMemberPhoneMap = (Map) session.getAttribute("verification_tel_"+m.getUserOpenid());
  178. String verificationTel = (String) verificMemberPhoneMap.get("verification_tel");
  179. String verificationCode = (String) verificMemberPhoneMap.get("verification_code");
  180. Date verificationDate = (Date) verificMemberPhoneMap.get("verification_date");
  181. if(verificationTel == null || verificationCode == null || verificationDate == null){
  182. logger.info("openid="+member.getUserOpenid()+"phone:"+member.getUserTel()+"=完善信息失败,请重新获取验证码");
  183. return new ResultMsg(false, ResultMsg.ERROR, "完善信息失败,请重新获取验证码!",null);
  184. }
  185. if(member.getUserTel().length() != 11 && member.getUserTel().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:"+member.getUserTel()+"=验证码不正确,请重新输入");
  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. ResultMsg msg = new ResultMsg();
  205. member.setUserOpenid(m.getUserOpenid());
  206. member.setUserIsVip(2); //是否为vip :1:非vip 2:vip
  207. member.setUserArrange(1); ////1:已整理 2:未整理
  208. Integer flag = memberService.becomeVipByOpenId(member);
  209. if (flag > 0 ) {
  210. msg.setResultCode(ResultInfo.SUCCESSCODE);
  211. msg.setStatus(true);
  212. return msg;
  213. } else {
  214. msg.setResultCode(ResultInfo.ERRORCODE);
  215. msg.setStatus(false);
  216. msg.setMessage("成为会员失败");
  217. return msg;
  218. }
  219. }
  220. /**
  221. * 修改手机号码
  222. * @return
  223. */
  224. @RequestMapping("/updateMemberPhone")
  225. @ResponseBody
  226. public ResultMsg updateMemberPhone(HttpServletRequest request,Member member,String code){
  227. ResultMsg rm = new ResultMsg();
  228. Member m = WechatUtils.getUserBySession(request);
  229. //手机号码
  230. if(member.getUserTel() == null){
  231. return new ResultMsg(false, ResultMsg.ERROR, "修改手机号码失败,手机号码为空!",null);
  232. }
  233. //验证码
  234. if(code == null || "".equals(code)){
  235. return new ResultMsg(false, ResultMsg.ERROR, "修改手机号码失败,验证码为空!",null);
  236. }
  237. //使用request对象的getSession()获取session,如果session不存在则创建一个
  238. HttpSession session = request.getSession();
  239. Map verificMemberPhoneMap = (Map) session.getAttribute("verification_tel_"+m.getUserOpenid());
  240. String verificationTel = (String) verificMemberPhoneMap.get("verification_tel");
  241. String verificationCode = (String) verificMemberPhoneMap.get("verification_code");
  242. Date verificationDate = (Date) verificMemberPhoneMap.get("verification_date");
  243. if(verificationTel == null || verificationCode == null || verificationDate == null){
  244. logger.info("openid="+member.getUserOpenid()+"phone:"+member.getUserTel()+"=修改手机号码失败,请重新获取验证码");
  245. return new ResultMsg(false, ResultMsg.ERROR, "修改手机号码失败,请重新获取验证码!",null);
  246. }
  247. if(member.getUserTel().length() != 11 && member.getUserTel().equals(verificationTel)){
  248. rm.setMessage(ResultMsg.ERROR);
  249. rm.setMessage("修改手机号码失败-手机号码错误!");
  250. return rm;
  251. }
  252. if(code == null || "".equals(code)){
  253. return new ResultMsg(false, ResultMsg.ERROR, "验证码不能为空!",null);
  254. }
  255. Calendar nowTime = Calendar.getInstance();
  256. nowTime.setTime(verificationDate);
  257. nowTime.add(Calendar.MINUTE, 5);
  258. Date verData = nowTime.getTime();
  259. if(!verificationCode.equals(code)){
  260. logger.info("openid="+member.getUserOpenid()+"phone:"+member.getUserTel()+"=验证码不正确,请重新输入");
  261. return new ResultMsg(false, ResultMsg.ERROR, "验证码不正确,请重新输入!",null);
  262. }
  263. if((verData.getTime() < System.currentTimeMillis())){
  264. return new ResultMsg(false, ResultMsg.ERROR, "验证码已失效,请重新获取!",null);
  265. }
  266. ResultMsg msg = new ResultMsg();
  267. member.setUserOpenid(m.getUserOpenid());
  268. Integer flag = memberService.nowUpdateUserByOpenId(member);
  269. if (flag > 0 ) {
  270. msg.setResultCode(ResultInfo.SUCCESSCODE);
  271. msg.setStatus(true);
  272. return msg;
  273. } else {
  274. msg.setResultCode(ResultInfo.ERRORCODE);
  275. msg.setStatus(false);
  276. msg.setMessage("修改电话号码失败");
  277. return msg;
  278. }
  279. }
  280. /**
  281. * 发送短信
  282. * @param request
  283. * @return
  284. * @throws Exception
  285. */
  286. @ResponseBody
  287. @RequestMapping("/send_phone")
  288. public ResultMsg sendPhone(HttpServletRequest request,String phone) throws Exception {
  289. ResultMsg msg = new ResultMsg();
  290. if(phone.trim().length() != 11){
  291. msg.setMessage("电话号码错误!");
  292. return msg;
  293. }
  294. Member m = WechatUtils.getUserBySession(request);
  295. //获取验证码
  296. String num = RandomUtil.getRandom();
  297. //使用request对象的getSession()获取session,如果session不存在则创建一个
  298. HttpSession session = request.getSession();
  299. String text = MessageFormat.format(ImberryConfig.PROBATION_VERIFICATION_CODE, num);
  300. String result = codeService.sendOtherCMS(phone, text);
  301. //将数据存储到session中
  302. Map verificMemberPhoneMap = new HashMap();
  303. verificMemberPhoneMap.put("verification_code",num);
  304. verificMemberPhoneMap.put("verification_tel",phone);
  305. verificMemberPhoneMap.put("verification_date",new Date());
  306. session.setAttribute("verification_tel_"+m.getUserOpenid(),verificMemberPhoneMap);
  307. if ("SUCCESS".equals(result)) {
  308. logger.info("短信发送成功,验证码为:" + num);
  309. msg.setResultCode(ResultInfo.SUCCESSCODE);
  310. msg.setStatus(true);
  311. return msg;
  312. } else {
  313. logger.info("短信发送失败:" + result);
  314. msg.setResultCode(ResultInfo.ERRORCODE);
  315. msg.setStatus(false);
  316. msg.setMessage("短信发送失败");
  317. return msg;
  318. }
  319. }
  320. /**
  321. * 前台根据openid获取用户信息
  322. * create date 2016年6月2日
  323. * @param openid
  324. * @return
  325. */
  326. @RequestMapping("/memberInfo")
  327. @ResponseBody
  328. public ResultMsg getMemberInfo(HttpServletRequest req,
  329. @RequestParam(value="openid",defaultValue= "", required=false)String openid){
  330. ResultMsg rm = new ResultMsg();
  331. Member member = WechatUtils.getUserBySession(req);
  332. member = memberService.getMemberByUserOpenId(member.getUserOpenid());
  333. rm.setStatus(true);
  334. rm.setResultCode(ResultInfo.SUCCESSCODE);
  335. rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  336. rm.setData(member);
  337. return rm;
  338. }
  339. }