MQTask.java 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. package com.iamberry.rst.controllers.mq;
  2. import com.iamberry.rst.controllers.sys.SysController;
  3. import com.iamberry.rst.core.cm.SalesOrder;
  4. import com.iamberry.rst.core.cm.SalesOrderItem;
  5. import com.iamberry.rst.core.cm.StoreInfo;
  6. import com.iamberry.rst.core.order.ProductColor;
  7. import com.iamberry.rst.core.sms.OrderMessage;
  8. import com.iamberry.rst.core.sms.SmsMessage;
  9. import com.iamberry.rst.faces.cm.StoreInfoService;
  10. import com.iamberry.rst.faces.order.EfastOrderService;
  11. import com.iamberry.rst.faces.product.ProductService;
  12. import com.iamberry.rst.faces.sms.MessageService;
  13. import com.iamberry.rst.faces.sms.SmsService;
  14. import com.iamberry.rst.service.sms.mapper.MessageMapper;
  15. import com.iamberry.wechat.tools.ResponseJson;
  16. import net.sf.json.JSONArray;
  17. import net.sf.json.JSONObject;
  18. import org.apache.commons.lang.StringUtils;
  19. import org.slf4j.Logger;
  20. import org.slf4j.LoggerFactory;
  21. import org.springframework.beans.factory.InitializingBean;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.context.annotation.Lazy;
  24. import org.springframework.scheduling.annotation.Scheduled;
  25. import org.springframework.stereotype.Component;
  26. import java.text.SimpleDateFormat;
  27. import java.util.ArrayList;
  28. import java.util.Date;
  29. import java.util.List;
  30. import java.util.concurrent.locks.Lock;
  31. import java.util.concurrent.locks.ReentrantLock;
  32. @Component(value="mqTask")
  33. @Lazy(false)
  34. public class MQTask implements InitializingBean {
  35. private static Logger logger = LoggerFactory.getLogger(SysController.class);
  36. @Autowired
  37. private MessageService messageService;
  38. @Autowired
  39. private SmsService smsService;
  40. @Autowired
  41. private EfastOrderService efastOrderService;
  42. @Autowired
  43. private ProductService productService;
  44. @Autowired
  45. private StoreInfoService storeInfoService;
  46. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  47. public void afterPropertiesSet() throws Exception {
  48. }
  49. //@Scheduled(cron = "*/10 * * * * ?")
  50. //@Scheduled(cron = "0 0 9,11,14,16,18,20 * * ? ")//推送时间分别为每天早上九点、中午十一点、下午三点、下午六点、晚上八点
  51. //@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
  52. // @Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次
  53. public void auditMessagePush(){
  54. logger.info("------------执行消息提醒,推送待处理订单短信 start-----------");
  55. List<SmsMessage> smsMessageList = messageService.listOrderMessages();
  56. if(smsMessageList != null && smsMessageList.size() > 0){
  57. //循环推送短信
  58. for(SmsMessage smsMessage : smsMessageList){
  59. ResponseJson json = smsService.sms(smsMessage.getTel(),smsMessage.getTypes(),smsMessage.getCounts());
  60. if(json.getReturnCode() == 200){
  61. logger.info("------------推送到+"+smsMessage.getTel()+"一条"+(smsMessage.getTypes() == 1?"待处理":"驳回")+"短信成功");
  62. //设置审核通过记录为无效
  63. if(smsMessage.getTypes() == 3){
  64. OrderMessage orderMessage = new OrderMessage();
  65. orderMessage.setMessageStatus(2);
  66. orderMessage.setMessageType(3);
  67. messageService.updateOrderMessageStatus(orderMessage);
  68. }
  69. }else{
  70. logger.info("------------推送到+"+smsMessage.getTel()+"一条"+(smsMessage.getTypes() == 1?"待处理":"驳回")+"短信失败"+json.getReturnMsg());
  71. }
  72. }
  73. }
  74. }
  75. /**
  76. * 批量同步百胜订单信息
  77. * @throws Exception
  78. */
  79. //@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
  80. @Scheduled(cron = "*/10 * * * * ?")
  81. public void syncEfastOrderList() throws Exception {
  82. int pageNo = 1;
  83. int pageSize = 20;
  84. boolean flag = false; //控制是否还需要获取百胜订单信息
  85. String date = "2016-04-01";
  86. do {
  87. //批量获取百胜订单信息
  88. JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize,date);
  89. System.out.println("obj="+obj);
  90. if (obj == null) {
  91. return;
  92. }
  93. int pageSize1 = obj.getInt("page_size"); //百胜返回数据条目数
  94. if (pageSize <= pageSize1) {
  95. flag = true;
  96. pageNo++;
  97. } else {
  98. flag = false;
  99. }
  100. this.addSalesOrderList(obj);
  101. } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
  102. }
  103. /**
  104. * 添加订单信息
  105. * @param obj
  106. * @throws Exception
  107. */
  108. public void addSalesOrderList(JSONObject obj) throws Exception {
  109. if (obj == null) {
  110. return;
  111. }
  112. JSONArray orderList = obj.getJSONArray("list");
  113. if (orderList == null || orderList.size() == 0) {
  114. return;
  115. }
  116. for (int i = 0;i < orderList.size();i++) {
  117. JSONObject order = orderList.getJSONObject(i);
  118. //获取订单详情
  119. JSONObject orderInfo = efastOrderService.getOrderFormEfast(order.getString("order_sn"));
  120. if (orderInfo == null) {
  121. return;
  122. }
  123. //获取订单项集合
  124. JSONArray itemArray = orderInfo.getJSONArray("orders");
  125. if (itemArray == null || itemArray.size() == 0) {
  126. return;
  127. }
  128. SalesOrder salesOrder = new SalesOrder();
  129. salesOrder.setSalesOrderId(order.getString("order_sn"));//订单编号
  130. int payStatus = order.getInt("pay_status"); //是否付款 0:未付款,2:已付款
  131. int orderStatus = order.getInt("order_status"); //订单状态 0:未确认,1:已确认,2:挂起,3:作废
  132. int shippingStatus = order.getInt("shipping_status"); //发货状态 0:未发货,1:已发货,3:备货中
  133. if (payStatus == 2 && (orderStatus == 0 || orderStatus == 1)) {
  134. if (shippingStatus == 0) {
  135. salesOrder.setSalesStatus(2);
  136. } else if (shippingStatus == 1) {
  137. salesOrder.setSalesStatus(5);
  138. }
  139. }
  140. salesOrder.setSalesPostFirm(order.getString("shipping_name"));//快递方式代码
  141. salesOrder.setSalesPostNum(order.getString("invoice_no"));//快递单号
  142. salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name")));//支付方式
  143. salesOrder.setSalesPayTime(format.parse(order.getString("pay_time")));//支付时间
  144. salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言
  145. salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言
  146. salesOrder.setSalesAmount(order.getInt("order_amount")*100);//应付款
  147. salesOrder.setSalesPayMoney(order.getInt("money_paid")*100);//已付款
  148. salesOrder.setSalesAddressName(order.getString("consignee"));//收货人
  149. salesOrder.setSalesAddressTel(order.getString("mobile"));//收货人电话
  150. salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址
  151. salesOrder.setSalesShippingFee(order.getInt("shipping_fee")*100);//邮费
  152. salesOrder.setSalesCreateTime(format.parse(order.getString("create_time")));//创建时间
  153. if (StringUtils.isNotEmpty(order.getString("delivery_time"))) {
  154. salesOrder.setSalesSendTime(format.parse(order.getString("delivery_time")));//发货时间
  155. }
  156. salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
  157. salesOrder.setSalesPledgeMoney(0);//押金金额
  158. salesOrder.setSalesRemainDeposit(0);//待提取金额
  159. salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
  160. salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
  161. salesOrder.setSalesWaitMoney(0);//待付金额
  162. salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
  163. salesOrder.setSalesPayNumber("0000");//支付尾号
  164. salesOrder.setSalesType(1);//订单类型
  165. //查询店铺信息
  166. StoreInfo storeInfo = new StoreInfo();
  167. storeInfo.setStoreEfast(order.getString("sd_id"));
  168. List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
  169. int storeId = 0;
  170. int companyId = 0;
  171. if (storeList == null || storeList.size() == 0) {
  172. storeInfo = storeList.get(0);
  173. storeId = storeInfo.getStoreId();
  174. companyId = storeInfo.getCompanyId();
  175. }
  176. salesOrder.setSalesStoreId(storeId);//店铺id
  177. salesOrder.setSalesCompanyId(companyId);//销售公司id
  178. List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
  179. for (int j = 0;j < itemArray.size();j++) {
  180. ProductColor color = new ProductColor();
  181. JSONObject itemJson = itemArray.getJSONObject(j);
  182. SalesOrderItem item = new SalesOrderItem();
  183. color.setColorBar(itemJson.getString("goods_sn"));
  184. List<ProductColor> colorList = productService.listproductAndColor(color);
  185. if (colorList == null || colorList.size() == 0) {
  186. return;
  187. }
  188. color = colorList.get(0);
  189. item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
  190. item.setItemNum(itemJson.getInt("sn"));//商品数量
  191. item.setItemCreateTime(salesOrder.getSalesCreateTime());
  192. item.setItemColorId(color.getColorId());
  193. item.setItemProductColor(color.getColorName());
  194. item.setItemProductDiscount(color.getColorDiscount());
  195. item.setItemProductId(color.getColorProductId());
  196. item.setItemProductName(color.getProductName());
  197. item.setItemProductPic(color.getColorPicture());
  198. item.setItemProductType(color.getProductType());
  199. item.setItemProductPrice(color.getColorPrice());
  200. itemList.add(item);
  201. }
  202. }
  203. }
  204. }