ProbationOrderHandler.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. package com.iamberry.wechat.handles.cart;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import javax.servlet.http.HttpServletRequest;
  8. import com.iamberry.wechat.tools.SendMessageUtil;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestMethod;
  13. import org.springframework.web.bind.annotation.RequestParam;
  14. import org.springframework.web.bind.annotation.ResponseBody;
  15. import com.iamberry.wechat.core.entity.ResultMsg;
  16. import com.iamberry.wechat.core.entity.WechatUtils;
  17. import com.iamberry.wechat.core.entity.drp.PlaceInfo;
  18. import com.iamberry.wechat.core.entity.member.Member;
  19. import com.iamberry.wechat.core.entity.mq.MQMessage;
  20. import com.iamberry.wechat.core.entity.order.ProbationOrderDto;
  21. import com.iamberry.wechat.core.entity.probation.ProbationUserDto;
  22. import com.iamberry.wechat.core.entity.product.Product;
  23. import com.iamberry.wechat.face.drp.PlaceInfoService;
  24. import com.iamberry.wechat.face.member.MemberService;
  25. import com.iamberry.wechat.face.order.CodeService;
  26. import com.iamberry.wechat.face.order.ProbationShopOrderService;
  27. import com.iamberry.wechat.handles.mq.MQServiceProxy;
  28. import com.iamberry.wechat.tools.NameUtils;
  29. import com.iamberry.wechat.tools.OrderNOUtil;
  30. import com.iamberry.wechat.tools.ResponseJson;
  31. import com.iamberry.wechat.tools.ResultInfo;
  32. @Controller
  33. @RequestMapping("/wechat/probationOrder")
  34. public class ProbationOrderHandler {
  35. @Autowired
  36. private ProbationShopOrderService probationShopOrderService;
  37. @Autowired
  38. private CodeService codeService;
  39. @Autowired
  40. private SendMessageUtil sendMessageUtil;
  41. @Autowired
  42. private MQServiceProxy mQservice;
  43. @Autowired
  44. private PlaceInfoService placeInfoService;
  45. @Autowired
  46. private MemberService memberService;
  47. /**
  48. * 获取会员试用订单
  49. * @param request
  50. * @param openId
  51. * @return
  52. * @throws Exception
  53. */
  54. @ResponseBody
  55. @RequestMapping(value = "/membersProbationOrder",method = RequestMethod.POST)
  56. public ResultMsg membersProbationOrder(HttpServletRequest request) throws Exception {
  57. ResultMsg remsg=new ResultMsg();
  58. Member member = WechatUtils.getUserBySession(request);
  59. if (member == null || member.getUserOpenid() == null) {
  60. remsg.setMessage(ResultInfo.loginOutError);
  61. remsg.setResultCode(ResultInfo.loginOutError);
  62. remsg.setStatus(false);
  63. return remsg;
  64. }
  65. List<ProbationOrderDto> probationOrderDtoList= probationShopOrderService.selectProbationOrderByOpenid(member.getUserOpenid());
  66. Map<String, Object> map = new HashMap<String, Object>();
  67. map.put("probationOrderDtoList", probationOrderDtoList);
  68. remsg.setData(map);
  69. remsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  70. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  71. remsg.setStatus(true);
  72. return remsg;
  73. }
  74. /**
  75. * 添加试用订单接口
  76. * @param request
  77. * @return
  78. * @throws Exception
  79. */
  80. @ResponseBody
  81. @RequestMapping("/addProbationOrder")
  82. public ResultMsg addProbationOrder(HttpServletRequest request, ProbationUserDto probationUserDto) throws Exception {
  83. ResultMsg resultMsg = new ResultMsg();
  84. Member member = WechatUtils.getUserBySession(request);
  85. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  86. ProbationOrderDto probationOrderDto = new ProbationOrderDto();
  87. probationOrderDto.setProbationProductId(Integer.parseInt(probationUserDto.getPuserProductid()));
  88. probationOrderDto.setProbationReceiveTel(probationUserDto.getPuserTel());
  89. probationOrderDto.setProbationReceiveName(probationUserDto.getPuserName());
  90. probationOrderDto.setProbationAddressInfo(probationUserDto.getPuserAddress());
  91. String colorId = request.getParameter("colorId");
  92. if (colorId != null && !"".equals(colorId)) {
  93. probationOrderDto.setProbationColorId(Integer.parseInt(colorId));
  94. } else {
  95. resultMsg.setMessage("产品颜色id为空");
  96. resultMsg.setStatus(false);
  97. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  98. resultMsg.setData(0);
  99. return resultMsg;
  100. }
  101. if (member == null || member.getUserOpenid() == null || "null".equals(member.getUserOpenid())) {
  102. resultMsg.setMessage(NameUtils.getConfig("ERRORINFO"));
  103. resultMsg.setStatus(false);
  104. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  105. resultMsg.setData(0);
  106. return resultMsg;
  107. }
  108. //查询用户信息
  109. Member user= memberService.getMemberByUserOpenId(member.getUserOpenid());
  110. //判断该手机号是否已经生成过订单,如果有,则不能再次申请
  111. int num = probationShopOrderService.selectProbationOrderCountByTel(probationOrderDto.getProbationReceiveTel());
  112. if (num > 0) {
  113. resultMsg.setMessage("该用户有试用订单,不能再次申请");
  114. resultMsg.setStatus(false);
  115. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  116. resultMsg.setData(0);
  117. return resultMsg;
  118. }
  119. probationOrderDto.setProbationOpenid(member.getUserOpenid());
  120. //生成订单orderId
  121. probationOrderDto.setProbationOrderid(OrderNOUtil.createOrderCode(member.getUserId()));
  122. if (probationOrderDto == null || probationOrderDto.getProbationProductId() == null || "".equals(probationOrderDto.getProbationProductId())) {
  123. resultMsg.setData(0);
  124. resultMsg.setMessage(NameUtils.getConfig("ERRORINFO"));
  125. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  126. resultMsg.setStatus(false);
  127. return resultMsg;
  128. }
  129. //查询商品信息
  130. Product product = probationShopOrderService.selectProductInfo(probationOrderDto.getProbationProductId(),probationOrderDto.getProbationColorId());
  131. if (product == null) {
  132. resultMsg.setData(0);
  133. resultMsg.setMessage(NameUtils.getConfig("ERRORINFO"));
  134. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  135. resultMsg.setStatus(false);
  136. return resultMsg;
  137. }
  138. // 不再优惠
  139. probationOrderDto.setProbationYetAmount(product.getProductDiscount());
  140. probationOrderDto.setProbationAmount(product.getProductDiscount());
  141. probationOrderDto.setProbationStatus(1);
  142. probationUserDto.setPuserOpenid(member.getUserOpenid());
  143. //添加试用人信息
  144. probationShopOrderService.addProbationUser(probationUserDto);
  145. //将信息加入到试用订单表中
  146. probationShopOrderService.addProbationOrder(probationOrderDto);
  147. try {
  148. MQMessage message = new MQMessage();
  149. message.setServiceToMessage(probationOrderDto.getProbationOrderid());
  150. message.setServiceOtherMessage("efast.trade.new.add");
  151. message.setServiceIsSend(2); // 没有推送的信息
  152. message.setServiceStatus(1); // 推送成功
  153. message.setServiceType(1); // 添加订单信息
  154. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  155. message.setServiceHandlerMethodName("addProbationOrderToEfast");
  156. mQservice.insertMQMessage(message);
  157. } catch (Exception e) {
  158. System.out.println("===========试用订单插入mq表失败==============");
  159. }
  160. try {
  161. //试用订单生成,给试用人推送消息
  162. sendMessageUtil.probationApplyNotice(ResultInfo.PROBATION_START_FIRST, product.getProductName(),probationOrderDto.getProbationOrderid(), ResultInfo.PROBATION_END_FIRST, probationOrderDto.getProbationOpenid(), ResultInfo.TRY_ORDER_DETAIL+"?orderId="+probationOrderDto.getProbationOrderid());
  163. } catch (Exception e) {
  164. System.out.println("试用订单生成,消息提示失败!");
  165. }
  166. try {
  167. //查询上级商户层信息
  168. PlaceInfo placeInfo = placeInfoService.selectPlaceByPlacePids(user.getUserDealers());
  169. //试用订单生成,给上级商户层推送消息
  170. if (placeInfo.getOpenid() != null && !"".equals(placeInfo.getOpenid())) {
  171. sendMessageUtil.probationApplyNotice(ResultInfo.ADDPROBATIONORDER, product.getProductName(),format.format(new Date()), "", placeInfo.getOpenid(),null);
  172. }
  173. } catch (Exception e) {
  174. System.out.println("===========试用订单生成,给上级商户推送消息失败==============");
  175. }
  176. resultMsg.setData(1);
  177. resultMsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  178. resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
  179. resultMsg.setStatus(true);
  180. return resultMsg;
  181. }
  182. /**
  183. * 发送手机验证码
  184. * @param phone 手机号
  185. * @param
  186. * @return
  187. */
  188. @RequestMapping(value = "/send_code", method = RequestMethod.GET)
  189. @ResponseBody
  190. private ResponseJson sendCode(@RequestParam("phone") String phone) {
  191. //amqtask.probationRewardPush();
  192. ResponseJson json = new ResponseJson();
  193. json = codeService.sendCode(phone);
  194. return json;
  195. }
  196. /**
  197. * 手机号验证
  198. * @param phone 手机号
  199. * @param code 验证码
  200. * @param
  201. * @return
  202. */
  203. @RequestMapping(value = "/validation_code", method = RequestMethod.GET)
  204. @ResponseBody
  205. private ResponseJson sendCode(@RequestParam("phone") String phone,@RequestParam("code") String validationCode) {
  206. ResponseJson json = codeService.validCode(phone,validationCode);
  207. return json;
  208. }
  209. }