Browse Source

修改订单状态

wangxiaoming 7 years ago
parent
commit
92d41192a1

+ 2 - 0
iamberry-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -129,6 +129,8 @@ public class ResultInfo {
 	public static final String PAYSUCCESS = "尊敬的用户,您好,您已成功支付";
 	public static final String PAYSUCCESSFOOT = "感谢您的支持,祝您使用愉快!";
 	public static final String sendRemark1 = "如有问题请致电400-800-6692或直接在微信留言,Aiberle爱贝源将第一时间为您服务!(点击查看订单详情)";
+	public static final String returnRemark =  "点击查看退款退货详情。如有问题请致电400-800-6692或直接在微信留言,Aiberle爱贝源将第一时间为您服务!";
+	public static final String exchangeRemark =  "请确认您的换货申请信息填写无误!如有问题请致电400-800-6692或直接在微信留言,Aiberle爱贝源将第一时间为您服务!";
 
 	/**
 	 * 订单详情连接

+ 11 - 0
iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/cart/CartService.java

@@ -1,6 +1,7 @@
 package com.iamberry.wechat.face.cart;
 
 import java.util.List;
+import java.util.Map;
 
 import com.iamberry.wechat.core.entity.PaperBean;
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
@@ -178,4 +179,14 @@ public interface CartService {
 	 * 根据商品id和openid查询购物车数量和ID
 	 * **/
 	CartDto getCartByOpenId(CartDto cartDto);
+
+	/**
+	 * 修改订单状态
+	 * @param orderId   订单号
+	 * @param status    订单原状态
+	 * @param remark    备注
+	 * @param operation 操作  1:取消订单,2:申请退款,3:取消退款,4:申请退货,5:取消申请退货,6:取消退货,7:申请换货,8:取消换货
+	 * @return
+	 */
+	Map<String,Object> updateOrderStatus(String orderId, Integer status, String remark, int operation);
 }

+ 223 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/CartServiceImpl.java

@@ -1,12 +1,19 @@
 package com.iamberry.wechat.service.cart;
 
+import java.text.DecimalFormat;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import com.iamberry.app.tool.log.RatFWLogger;
 import com.iamberry.wechat.core.entity.product.ProductColor;
 import com.iamberry.wechat.core.entity.product.ProductFittings;
 import com.iamberry.wechat.core.entity.product.SalesUserGift;
+import com.iamberry.wechat.face.order.AdminOrderService;
 import com.iamberry.wechat.tools.ResultInfo;
+import com.iamberry.wechat.tools.SendMessageUtil;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -51,6 +58,12 @@ public class CartServiceImpl implements CartService {
 	private RebackServices rebackServices;
 	@Autowired
 	ProductInfoService productInfoService;
+	@Autowired
+	private AdminOrderService adminOrderService;
+	@Autowired
+	private RatFWLogger logger;
+	@Autowired
+	private SendMessageUtil sendMessageUtil;
 	
 	
 	@Override
@@ -312,4 +325,214 @@ public class CartServiceImpl implements CartService {
 	public CartDto getCartByOpenId(CartDto cartDto) {
 		return cartDao.getCartByOpenId(cartDto);
 	}
+
+	@Override
+	public Map<String, Object> updateOrderStatus(String orderId, Integer status, String remark, int operation) {
+		Map<String, Object> map = new HashMap<String, Object>();
+		String txtOpera = getOrderOperation(operation);//获取操作信息
+		boolean flag = false;
+		StringBuilder msg = new StringBuilder();
+		Order order = new Order();
+		order.setSalesOrderid(orderId);
+		order.setOldStatus(status);
+		if (StringUtils.isNotEmpty(remark)) {
+			order.setSalesReturnDes(remark);
+		}
+		switch (status) {	//通过原始订单状态分配可执行的操作
+			case 1: //待支付
+				if (operation == 1) {	//取消订单
+					order.setSalesStatus(0);	//订单取消
+					//修改订单状态
+					int num = cartDao.updateOrderByOrder(order);
+					if (num > 0) {
+						flag = true;
+					}
+				} else {
+					msg.append("该订单不支持");
+					msg.append(txtOpera);
+					msg.append("操作,请重新确认!");
+				}
+				break;
+			case 2:	//已支付待发货
+				if (operation == 2) {	//申请退款
+					order.setSalesStatus(3);	//退款申请中
+					//修改订单状态
+					int num = cartDao.updateOrderByOrder(order);
+					if (num > 0) {
+						//推送微信发货消息
+						//给用户发送消息-已发货的通知
+						DecimalFormat df=new DecimalFormat("0.00");
+						Order order2 = adminOrderService.selectOrderStatusByOrderId(order.getSalesOrderid());
+						String payMoney = df.format((float)order2.getSalesYetAmount()/100) + "元";
+						//获取当前订单订单项
+						List<OrderItem> itemList = adminOrderService.getShopOrderItemByOrderId(order.getSalesOrderid());
+						try {
+							sendMessageUtil.orderApplyRefund(
+									"尊敬的用户,我们已收到您的退款申请,我们正在积极处理:",
+									payMoney,
+									itemList.get(0).getItemProductName(),
+									order.getSalesOrderid(),
+									ResultInfo.sendRemark1,
+									order2.getSalesOpenid(),
+									ResultInfo.ORDER_DETAIL+order.getSalesOrderid()
+							);
+						} catch (Exception e) {
+							logger.info("订单号:"+ orderId +"的订单驳回退款,发送微信消息失败!");
+						}
+						flag = true;
+					}
+				} else {
+					msg.append("该订单不支持");
+					msg.append(txtOpera);
+					msg.append("操作,请重新确认!");
+				}
+				break;
+			case 3:	//退款申请中
+				if (operation == 3) {	//取消退款
+					order.setSalesStatus(2);	//已支付,待发货
+					//修改订单状态
+					int num = cartDao.updateOrderByOrder(order);
+					if (num > 0) {
+						flag = true;
+					}
+				} else {
+					msg.append("该订单不支持");
+					msg.append(txtOpera);
+					msg.append("操作,请重新确认!");
+				}
+				break;
+			case 5:	//已发货
+				if (operation == 4) {	//申请退货
+					order.setSalesStatus(6);	//申请退货中
+					//修改订单状态
+					int num = cartDao.updateOrderByOrder(order);
+					if (num > 0) {
+						DecimalFormat df=new DecimalFormat("0.00");
+						Order order2 = adminOrderService.selectOrderStatusByOrderId(order.getSalesOrderid());
+						//获取当前订单订单项
+						List<OrderItem> itemList = adminOrderService.getShopOrderItemByOrderId(orderId);
+						String payMoney = df.format((float)order2.getSalesYetAmount()/100) + "元";
+						int productNum = 0;
+						for (OrderItem item : itemList) {
+							productNum += item.getItemNum();
+						}
+						try {
+							sendMessageUtil.orderApplyReturn(
+									"尊敬的用户,已收到您的【退货申请】",
+									orderId,
+									payMoney,
+									productNum+"件",order2.getSalesReturnDes(),
+									ResultInfo.returnRemark,
+									order2.getSalesOpenid(),
+									ResultInfo.ORDER_DETAIL+orderId
+							);
+						} catch (Exception e) {
+							logger.info("订单号:"+ orderId +"的订单申请退货,发送微信消息失败!");
+						}
+
+
+						flag = true;
+					}
+				} else if (operation == 7) {	//申请换货
+					order.setSalesStatus(11);	//申请换货中
+					//修改订单状态
+					int num = cartDao.updateOrderByOrder(order);
+					if (num > 0) {
+						Order order2 = adminOrderService.selectOrderStatusByOrderId(orderId);
+						//获取当前订单订单项
+						List<OrderItem> itemList = adminOrderService.getShopOrderItemByOrderId(orderId);
+						try {
+							sendMessageUtil.orderApplyBarter(
+									"尊敬的用户,已收到您的【换货申请】,我们正在确认换货信息。",
+									orderId,
+									itemList.get(0).getItemProductName(),
+									ResultInfo.exchangeRemark,
+									order2.getSalesOpenid(),
+									ResultInfo.ORDER_DETAIL+orderId
+							);
+						} catch (Exception e) {
+							logger.info("订单号:"+ orderId +"的订单申请换货,发送微信消息失败!");
+						}
+
+						flag = true;
+					}
+				} else {
+					msg.append("该订单不支持");
+					msg.append(txtOpera);
+					msg.append("操作,请重新确认!");
+				}
+				break;
+			case 6:	//申请退货中
+				if (operation == 5) {	//取消申请退货
+					order.setSalesStatus(5);	//已发货
+					//修改订单状态
+					int num = cartDao.updateOrderByOrder(order);
+					if (num > 0) {
+						flag = true;
+					}
+				} else {
+					msg.append("该订单不支持");
+					msg.append(txtOpera);
+					msg.append("操作,请重新确认!");
+				}
+				break;
+			case 7:	//退货中
+				if (operation == 6) {	//取消退货
+					order.setSalesStatus(5);	//已发货
+					//修改订单状态
+					int num = cartDao.updateOrderByOrder(order);
+					if (num > 0) {
+						flag = true;
+					}
+				} else {
+					msg.append("该订单不支持");
+					msg.append(txtOpera);
+					msg.append("操作,请重新确认!");
+				}
+				break;
+			case 11:	//申请换货中
+				if (operation == 8) {	//取消换货
+					order.setSalesStatus(5);	//已发货
+					//修改订单状态
+					int num = cartDao.updateOrderByOrder(order);
+					if (num > 0) {
+						flag = true;
+					}
+				} else {
+					msg.append("该订单不支持");
+					msg.append(txtOpera);
+					msg.append("操作,请重新确认!");
+				}
+				break;
+			default:
+				msg.append("该订单不支持");
+				msg.append(txtOpera);
+				msg.append("操作,请重新确认!");
+				break;
+		}
+		map.put("flag",flag);
+		map.put("msg",msg);
+		return map;
+	}
+
+	/**
+	 * 获取用户对订单的操作
+	 * @param operation
+	 * @return
+	 */
+	public String getOrderOperation(int operation) {
+		String txtOpera = "";
+		switch (operation) {
+			case 1:txtOpera = "取消订单";break;
+			case 2:txtOpera = "申请退款";break;
+			case 3:txtOpera = "取消退款";break;
+			case 4:txtOpera = "申请退货";break;
+			case 5:txtOpera = "取消申请退货";break;
+			case 6:txtOpera = "取消退货";break;
+			case 7:txtOpera = "申请换货";break;
+			case 8:txtOpera = "取消换货";break;
+			default:txtOpera = "取消订单";break;
+		}
+		return txtOpera;
+	}
 }

+ 7 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/CartDao.java

@@ -179,4 +179,11 @@ public interface CartDao {
 	 * 根据商品id和openid查询购物车数量和ID
 	 * **/
 	CartDto getCartByOpenId(CartDto cartDto);
+
+	/**
+	 * 修改订单状态和备注信息
+	 * @param order
+	 * @return
+	 */
+	Integer updateOrderByOrder(Order order);
 }

+ 4 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/CartDaoImpl.java

@@ -228,4 +228,8 @@ public class CartDaoImpl implements CartDao{
 	public CartDto getCartByOpenId(CartDto cartDto) {
 		return cartMapper.getCartByOpenId(cartDto);
 	}
+	@Override
+	public Integer updateOrderByOrder(Order order) {
+		return cartMapper.updateOrderByOrder(order);
+	}
 }

+ 7 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/CartMapper.java

@@ -126,4 +126,11 @@ public interface CartMapper {
 	 * 根据商品id和openid查询购物车数量和ID
 	 * **/
 	CartDto getCartByOpenId(CartDto cartDto);
+
+	/**
+	 * 修改订单状态和备注信息
+	 * @param order
+	 * @return
+	 */
+	Integer updateOrderByOrder(Order order);
 }

+ 26 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml

@@ -425,4 +425,30 @@ PUBLIC
 		WHERE
 		CART_OPENID = #{cartOpenId} AND CART_COLOR_ID = #{cartColorId}
 	</select>
+
+	<!-- 根据orderId修改订单状态 -->
+	<update id="updateOrderByOrder" parameterType="Order">
+		UPDATE
+		TB_IAMBERRY_SHOP_SALES_ORDER
+		<set>
+			SALES_STATUS = #{salesStatus},
+			<if test="salesReturnDate != null and salesReturnDate != ''">
+				SALES_RETURN_DATE = #{salesReturnDate},
+			</if>
+			<if test="couponId!=null and couponId!=''" >
+				SALES_COUPON_RECEIVE_ID=#{couponId},
+			</if>
+			<if test="salesReturnDes!=null and salesReturnDes!=''" >
+				SALES_RETURN_DES = #{salesReturnDes},
+			</if>
+			<if test="salesChangeOrderid != null and salesChangeOrderid != ''">
+				SALES_CHANGE_ORDERID = #{salesChangeOrderid},
+			</if>
+		</set>
+		WHERE
+		SALES_ORDERID = #{salesOrderid}
+		<if test="oldStatus!=null" >
+			AND SALES_STATUS = #{oldStatus}
+		</if>
+	</update>
 </mapper>

+ 64 - 0
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/CartHandlers.java

@@ -830,6 +830,70 @@ public class CartHandlers {
 	}
 
 	/**
+	 * 	修改订单状态
+	 * @param request
+	 * @param orderId
+	 * @return ResultMsg
+	 * @throws Exception
+	 */
+	@ResponseBody
+	@RequestMapping("/updateOrderStatus")
+	public ResultMsg updateOrderStatus(HttpServletRequest request,
+									   @RequestParam(value = "orderId",defaultValue = "")String orderId,
+									   @RequestParam(value = "remark",defaultValue = "")String remark,
+									   @RequestParam(value = "status",defaultValue = "-1") Integer status)  throws Exception {
+		String openId = WechatUtils.getUserBySession(request).getUserOpenid();
+		ResultMsg remsg = new ResultMsg();
+		Map<String, Object> map = new HashMap<String, Object>();
+		if(status == -1){
+			remsg.setMessage(NameUtils.getConfig("ERRORINFO"));
+			remsg.setResultCode(ResultInfo.ERRORCODE);
+			remsg.setStatus(false);
+			return remsg;
+		}
+
+		if (null != orderId && !"".equals(orderId)) {
+			ShopSalesOrderDto orderDto = this.cartService.getOpenIdAndStatus(orderId);
+			if (orderDto != null) {
+				if (!openId.equals(orderDto.getSalesOpenid())) {
+					remsg.setMessage(NameUtils.getConfig("ERRORINFO"));
+					remsg.setResultCode(ResultInfo.ERRORCODE);
+					remsg.setStatus(false);
+					return remsg;
+				}
+			} else {
+				remsg.setMessage(NameUtils.getConfig("ERRORINFO"));
+				remsg.setResultCode(ResultInfo.ERRORCODE);
+				remsg.setStatus(false);
+				return remsg;
+			}
+			map = cartService.updateOrderStatus(orderId, Integer.valueOf(orderDto.getSalesStatus()), remark, status);
+
+			if (map.get("flag") == true && Integer.valueOf(orderDto.getSalesStatus()) == 1) { //待支付,取消订单
+				if (null != orderDto.getSalesCouponReceiveId() && !"".equals(orderDto.getSalesCouponReceiveId())) {
+					CouponItem couponItem = new CouponItem();
+					couponItem.setCouponItemId(orderDto.getSalesCouponReceiveId());
+					couponItem.setCouponItemUseropenid(openId);
+					couponItem.setCouponUseStatus(1);
+					couponItem.setOldCouponUseStatus(7);
+					couponItemService.updateCouponItemById(couponItem);
+				}
+			}
+		}
+
+		if(map.get("flag") == true){
+			remsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
+			remsg.setResultCode(ResultInfo.SUCCESSCODE);
+			remsg.setStatus(true);
+		}else{
+			remsg.setMessage(String.valueOf(map.get("msg")));
+			remsg.setResultCode(ResultInfo.ERRORCODE);
+			remsg.setStatus(false);
+		}
+		return remsg;
+	}
+
+	/**
 	 * 确认收货
 	 * @param request
 	 * @param orderId