123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473 |
- 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.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;
- import com.iamberry.wechat.core.entity.PaperBean;
- import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
- import com.iamberry.wechat.core.entity.cart.CartDto;
- import com.iamberry.wechat.core.entity.cart.ShopOrderAndItemDto;
- import com.iamberry.wechat.core.entity.cart.ShopOrderItemDto;
- import com.iamberry.wechat.core.entity.cart.ShopSalesOrderDto;
- import com.iamberry.wechat.core.entity.coupon.CouponItem;
- import com.iamberry.wechat.core.entity.coupon.CouponType;
- import com.iamberry.wechat.core.entity.mq.MQMessage;
- import com.iamberry.wechat.core.entity.order.Order;
- import com.iamberry.wechat.core.entity.order.OrderItem;
- import com.iamberry.wechat.face.cart.CartService;
- import com.iamberry.wechat.face.cart.ProductInfoService;
- import com.iamberry.wechat.face.coupon.CouponItemService;
- import com.iamberry.wechat.face.coupon.CouponTypeService;
- import com.iamberry.wechat.face.member.CashLogService;
- import com.iamberry.wechat.face.reback.RebackServices;
- import com.iamberry.wechat.service.cart.dao.CartDao;
- import com.iamberry.wechat.service.order.dao.AdminOrderDao;
- @Service
- public class CartServiceImpl implements CartService {
- @Autowired
- private CartDao cartDao;
-
- @Autowired
- private AdminOrderDao adminOrderDao;
- @Autowired
- CouponItemService couponItemService;
- @Autowired
- CouponTypeService couponTypeService;
- @Autowired
- CashLogService cashLogService;
- @Autowired
- private RebackServices rebackServices;
- @Autowired
- ProductInfoService productInfoService;
- @Autowired
- private SendMessageUtil sendMessageUtil;
- @Autowired
- private AdminOrderService adminOrderService;
- @Autowired
- private RatFWLogger logger;
- @Override
- public List<CartDto> selectCartByOpenId(String openId) {
- // TODO Auto-generated method stub
- return cartDao.selectCartByOpenId(openId);
- }
- @Override
- public Integer getCartNumByCartOpenId(String openId) {
- // TODO Auto-generated method stub
- return cartDao.getCartNumByCartOpenId(openId);
- }
- @Override
- public Integer updateCartByOpenId(CartDto cartDto) {
- // TODO Auto-generated method stub
- return cartDao.updateCartByOpenId(cartDto);
- }
- @Override
- public Integer getCartNumByOpenId(CartDto cartDto) {
- // TODO Auto-generated method stub
- return cartDao.getCartNumByOpenId(cartDto);
- }
- @Override
- public CartDto getCartByCartProductId(CartDto cartDto) {
- // TODO Auto-generated method stub
- return cartDao.getCartByCartProductId(cartDto);
- }
- @Override
- public CartDto getCartDto(CartDto cartDto) {
- // TODO Auto-generated method stub
- return cartDao.getCartDto(cartDto);
- }
- @Override
- public Integer addProductToCart(CartDto cartDto) {
- // TODO Auto-generated method stub
- Integer num = cartDao.addProductToCart(cartDto);
- if (num > 0) {
- return cartDto.getCartId();
- } else {
- return num;
- }
- }
- @Override
- public Integer deleteCartByCartId(CartDto cartDto) {
- // TODO Auto-generated method stub
- return cartDao.deleteCartByCartId(cartDto);
- }
- @Override
- public List<ShopOrderAndItemDto> selectShopOrder(PaperBean paperBean) {
- // TODO Auto-generated method stub
- return cartDao.selectShopOrder(paperBean);
- }
- @Override
- public List<ShopOrderItemDto> selectShopOrderItem(String itemSalesOrderid) {
- // TODO Auto-generated method stub
- return cartDao.selectShopOrderItem(itemSalesOrderid);
- }
- @Override
- public ShopSalesOrderDto getShopOrderByOrderId(String salesOrderId,
- String salesOpenId) {
- // TODO Auto-generated method stub
- return cartDao.getShopOrderByOrderId(salesOrderId, salesOpenId);
- }
- @Override
- public List<CartDto> selectCartItemByListId(Integer[] carts) {
- // TODO Auto-generated method stub
- return cartDao.selectCartItemByListId(carts);
- }
- @Override
- public boolean addOrderAndSaveOrderItem(Order order, List<OrderItem> items, List<Integer> cartIds) throws Exception {
- // TODO Auto-generated method stub
- int count = cartDao.insertOrderInfo(order);
- if (count < 1) {
- throw new Exception();
- }
- count = cartDao.insertOrderItemList(items);
- if (count < 1) {
- throw new Exception();
- }
- // 删除购物车项目
- cartDao.deleteBatchCartListById(cartIds);
- return true;
- }
- @Override
- public Integer updateOrderStatus(Order order) {
- // TODO Auto-generated method stub
- return cartDao.updateOrderStatus(order);
- }
- @Override
- public Integer selectOrderStatusByOrderId(String orderId) {
- // TODO Auto-generated method stub
- return cartDao.selectOrderStatusByOrderId(orderId);
- }
- @Override
- public ShopSalesOrderDto getOpenIdAndStatus(String salesOrderid) {
- // TODO Auto-generated method stub
- return cartDao.getOpenIdAndStatus(salesOrderid);
- }
- @Override
- public Integer updateOrderByOrderId(Order order) {
- // TODO Auto-generated method stub
- return cartDao.updateOrderByOrderId(order);
- }
- @Override
- public Order selectOrderInfoById(Order order) {
- // TODO Auto-generated method stub
- return cartDao.selectOrderInfoById(order);
- }
- @Override
- public Integer getOrderNumByOpenId(PaperBean paperBean) {
- // TODO Auto-generated method stub
- return cartDao.getOrderNumByOpenId(paperBean);
- }
- @Override
- public ShopSystemRule getReluByRid(Integer rId) {
- // TODO Auto-generated method stub
- return adminOrderDao.getReluByRid(rId);
- }
-
- /**
- * 根据单号查询该订单的产品总数
- * 2016年5月18日
- * @param orderid
- * @return
- */
- public Integer getItemNumByOrderId(String orderid){
- return cartDao.getItemNumByOrderId(orderid);
- }
-
- /**
- * 用于支付后的修改优惠券状态 及其订单状态状态的回调函数
- * @author 欧阳明
- * @return
- *
- */
- public Boolean supdateStateByOrderId(MQMessage QMessage){
- Order order=new Order();
- order.setSalesOrderid(QMessage.getServiceToMessage());
- //System.out.println("order is for search============");
- order=cartDao.selectOrderInfoById(order);
- /*order.setSalesTransactionId(QMessage.getServiceOtherMessage());
- updateOrderByOrderId(order);*/
- int i=0;
-
- /*//修改优惠券状态
- String couponId=order.getCouponId();
- if(couponId!=null && !couponId.endsWith("")){
- CouponItem couponItem=new CouponItem();
- couponItem.setCouponItemId(couponId);
- couponItem.setCouponUseStatus(2);
- couponItem.setCouponUseDate(nowDate);
- couponItemService.insertCouponItem(couponItem);
- }
- //更新账户余额
- int balancePayAmount=order.getBalancePayAmount();
- if(balancePayAmount>0){
- Member member=new Member();
- member.setUserOpenid(order.getSalesOpenid());
- member.setUserIncome(-balancePayAmount);
- memberService.updateUserIncomeByOpenId(member);
-
- //现金使用记录
- CashLog log=new CashLog();
- log.setCashLogsIntroduction("订单支出");
- log.setCashLogsNum(balancePayAmount);
- log.setCashLogsOpenid(member.getUserOpenid());
- log.setCashLogsType(2);
- log.setCashLogsResType(3);
- log.setCashLogsOrderid(order.getSalesOrderid());
- log.setCashLogsCreateDate(nowDate);
- i=cashLogService.addCashLog(log);
- }*/
- productInfoService.updateProductNumList(QMessage.getServiceToMessage());
- //添加到返利表
- i=rebackServices.loadSingleOrderReward(order);
- return i>0;
- }
- @Override
- public CouponType getCouponReduceByItemId(CouponItem couponItem) {
- // TODO Auto-generated method stub
- return cartDao.getCouponReduceByItemId(couponItem);
- }
- @Override
- public List<ShopSalesOrderDto> getOrderList(
- ShopSalesOrderDto shopSalesOrderDto) {
- // TODO Auto-generated method stub
- return cartDao.getOrderList(shopSalesOrderDto);
- }
-
- public Order getOrderRecentAddress(String openid){
- return cartDao.getRecentOrderAddress(openid);
- }
- @Override
- public Integer selectOrderCount(ShopSalesOrderDto shopSalesOrderDto) {
- // TODO Auto-generated method stub
- return cartDao.selectOrderCount(shopSalesOrderDto);
- }
- @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); //退款申请中
- order.setSalesReturnDate(new Date());
- //修改订单状态
- 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.refundApplicationNotice("尊敬的朵粉,我们已收到您的退款申请,我们正在积极处理:",payMoney,itemList.get(0).getItemProductName(),order.getSalesOrderid(),
- "如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",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); //申请退货中
- order.setSalesReturnDate(new Date());
- //修改订单状态
- 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(),
- "点击查看退款退货详情。如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!",order2.getSalesOpenid(),ResultInfo.ORDER_DETAIL+orderId);
- } catch (Exception e) {
- logger.info("订单号:"+ orderId +"的订单申请退货,发送微信消息失败!");
- }
- flag = true;
- }
- } else if (operation == 7) { //申请换货
- order.setSalesStatus(11); //申请换货中
- order.setSalesReturnDate(new Date());
- //修改订单状态
- 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(),
- "请确认您的换货申请信息填写无误!如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!",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;
- }
- }
|