plf 4 vuotta sitten
vanhempi
commit
2b2fc1d1c1

+ 22 - 0
src/main/java/com/caimei/modules/hehe/dao/HeHeNewOrderDao.java

@@ -0,0 +1,22 @@
+package com.caimei.modules.hehe.dao;
+
+import com.caimei.modules.order.entity.NewOrder;
+import com.thinkgem.jeesite.common.persistence.CrudDao;
+import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/4/27
+ */
+@MyBatisDao
+public interface HeHeNewOrderDao extends CrudDao<NewOrder> {
+    /**
+     * 查询分销者信息
+     *
+     * @param heUserId
+     * @return
+     */
+    String findHeUser(Integer heUserId);
+}

+ 1 - 0
src/main/java/com/caimei/modules/hehe/service/CmHeheUserService.java

@@ -60,6 +60,7 @@ public class CmHeheUserService extends CrudService<CmHeheUserDao, CmHeheUser> {
             //6:呵呵商城用户
             user.setUserPermission(6);
             user.setUserIdentity(6);
+            user.setRegisterUserTypeID("6");
             user.setRegisterTime(currentTime);
             user.setValidFlag("1");
             cmHeheUserDao.insertUser(user);

+ 313 - 0
src/main/java/com/caimei/modules/hehe/service/HeHeNewOrderService.java

@@ -0,0 +1,313 @@
+package com.caimei.modules.hehe.service;
+
+import com.caimei.modules.bulkpurchase.dao.OrderInvoiceDao;
+import com.caimei.modules.bulkpurchase.service.OrderInvoiceService;
+import com.caimei.modules.hehe.dao.CmHeheUserDao;
+import com.caimei.modules.hehe.dao.HeHeNewOrderDao;
+import com.caimei.modules.order.dao.*;
+import com.caimei.modules.order.entity.*;
+import com.caimei.modules.order.service.CmReceiptOrderRelationService;
+import com.caimei.modules.order.service.OrderUserInfoService;
+import com.caimei.modules.order.utils.NewOrderStatus;
+import com.caimei.modules.product.dao.CmPromotionDao;
+import com.caimei.modules.product.dao.ProductDao;
+import com.caimei.modules.product.entity.OrderProductLadderPrice;
+import com.caimei.modules.user.dao.CmUserDao;
+import com.caimei.modules.user.dao.NewCmClubDao;
+import com.caimei.modules.user.dao.NewCmShopDao;
+import com.caimei.modules.user.entity.CmUser;
+import com.caimei.modules.user.service.CmUserBalanceRecordService;
+import com.caimei.modules.user.service.CmUserService;
+import com.caimei.utils.AppKeys;
+import com.caimei.utils.AppUtils;
+import com.caimei.utils.SysConfig;
+import com.thinkgem.jeesite.common.persistence.Page;
+import com.thinkgem.jeesite.common.service.CrudService;
+import com.thinkgem.jeesite.common.utils.StringUtils;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/4/27
+ */
+@Service
+@Transactional(readOnly = false)
+public class HeHeNewOrderService extends CrudService<HeHeNewOrderDao, NewOrder> {
+    @Autowired
+    private HeHeNewOrderDao heHeNewOrderDao;
+    @Resource
+    private NewOrderProductDao newOrderProductDao;
+    @Resource
+    private OrderInvoiceService orderInvoiceService;
+    @Resource
+    private OrderUserInfoService orderUserInfoService;
+    @Resource
+    private NewShopOrderDao newShopOrderDao;
+    @Resource
+    private NewCmClubDao newCmClubDao;
+    @Resource
+    private LogisticsBatchDao logisticsBatchDao;
+    @Resource
+    private LogisticsRecordDao logisticsRecordDao;
+    @Resource
+    private LogisticsInformationDao logisticsInformationDao;
+    @Resource
+    private OrderInvoiceDao orderInvoiceDao;
+    @Resource
+    private NewOrderConfigDao newOrderConfigDao;
+    @Resource
+    private ProductDao productDao;
+    @Resource
+    private NewCmShopDao newCmShopDao;
+    @Resource
+    private CmUserDao cmUserDao;
+    @Resource
+    private CmUserService cmUserService;
+    @Resource
+    private CmReturnedPurchaseProductDao cmReturnedPurchaseProductDao;
+    @Resource
+    private CmDiscernReceiptDao cmDiscernReceiptDao;
+    @Resource
+    private CmUserBalanceRecordService cmUserBalanceRecordService;
+    @Resource
+    private CmReturnedPurchaseDao cmReturnedPurchaseDao;
+    @Resource
+    private CmPayShopRecordDao cmPayShopRecordDao;
+    @Resource
+    private CmReceiptOrderRelationDao cmReceiptOrderRelationDao;
+    @Autowired
+    private CmReceiptOrderRelationService cmReceiptOrderRelationService;
+    @Autowired
+    private CmPromotionDao cmPromotionDao;
+    @Autowired
+    private CmHeheUserDao cmHeheUserDao;
+
+    @Override
+    public NewOrder get(String id) {
+        NewOrder newOrder = super.get(id);
+        CmUser user = cmUserDao.get(newOrder.getUserID().toString());
+        if (user != null) {
+            //查询用户余额,机构名
+            newOrder.setBuyer(user.getName());
+            Double ableUserMoney = user.getAbleUserMoney() == null ? 0d : user.getAbleUserMoney();
+            newOrder.setAbleUserMoney(ableUserMoney);
+        }
+        List<Integer> l = new ArrayList<>();
+        l.add(newOrder.getOrderID());
+        List<Integer> orderIds = cmDiscernReceiptDao.findRebateOrderID(l);
+        if (orderIds.contains(newOrder.getOrderID()))
+            newOrder.setRebateOrder("1");
+        else
+            newOrder.setRebateOrder("0");
+        if (null != newOrder) {
+            //获取订单客户
+            OrderUserInfo orderUserInfo = orderUserInfoService.findByOrderID(newOrder.getOrderID());
+            if (null != orderUserInfo) {
+                newOrder.setBpOrderUserinfo(orderUserInfo);
+            }
+            //获取订单商品
+            List<NewOrderProduct> list = new ArrayList<>();
+            List<NewShopOrder> shopOrders = newShopOrderDao.findListByOrderID(newOrder.getOrderID());
+            if (CollectionUtils.isNotEmpty(shopOrders)) {
+                for (NewShopOrder shopOrder : shopOrders) {
+                    List<NewOrderProduct> pList = newOrderProductDao.findListByShopOrderID(shopOrder.getShopOrderID());
+                    pList.forEach(orderProduct -> {
+                        if (orderProduct.getLadderPriceFlag() == 1) {
+                            // 查询订单商品阶梯价格
+                            List<OrderProductLadderPrice> ladderPriceList = newOrderProductDao.findladderPriceList(orderProduct.getOrderProductID());
+                            if (null != ladderPriceList && ladderPriceList.size() > 0) {
+                                IntStream.range(0, ladderPriceList.size()).forEach(i -> {
+                                    if (i == ladderPriceList.size() - 1) {
+                                        ladderPriceList.get(i).setBuyNumRangeShow("≥" + ladderPriceList.get(i).getBuyNum());
+                                    } else {
+                                        String buyNumRangeShow = ladderPriceList.get(i).getBuyNum() + "~" + (ladderPriceList.get(i + 1).getBuyNum() - 1);
+                                        ladderPriceList.get(i).setBuyNumRangeShow(buyNumRangeShow);
+                                    }
+                                });
+                                orderProduct.setOrderProductLadderPriceList(ladderPriceList);
+                            }
+                        }
+                        //分销者名称
+                        if (orderProduct.getHeUserId() != null && orderProduct.getHeUserId() > 0) {
+                            String name = heHeNewOrderDao.findHeUser(orderProduct.getHeUserId());
+                            orderProduct.setHeUserName(name);
+                        }
+                    });
+                    list.addAll(pList);
+                    shopOrder.setNewOrderProducts(pList);
+                    if (pList.stream().anyMatch(p -> p.getProductID() == 999))
+                        shopOrder.setPostFeeCos("1");
+                    pList.forEach(item -> {
+                        if (NewOrderStatus.hasReturn(newOrder.getStatus())) {
+                            Integer returningNum = newOrderProductDao.getReturningNum(item.getOrderProductID());
+                            Integer returnedNum = newOrderProductDao.getReturnedNum(item.getOrderProductID());
+                            item.setReturningNum(returningNum);
+                            item.setReturnedNum(returnedNum);
+                        }
+                        /**确认收货信息*/
+                        if (NewOrderStatus.hasReceived(newOrder.getStatus())) {
+                            Integer receivedNum = newOrderProductDao.getReceivedNum(item.getOrderProductID());
+                            item.setReceivedNum(receivedNum);
+                        }
+                        String domain = SysConfig.getStringConfig("crm.server.domain");
+                        item.setProductImage(AppUtils.getProductImageURL(item.getProductImage(), AppKeys.ORIGINAL_PICTURE, domain));
+                        if (item != null && item.getOrderPromotionsId() != null && item.getOrderPromotionsId() > 0) {
+                            item.setProductPromotion(cmPromotionDao.findOrderPromotions(item.getOrderPromotionsId()));
+                        }
+                    });
+                    Double payed = cmPayShopRecordDao.sumByShopOrderID(shopOrder.getShopOrderID());
+                    shopOrder.setPayed(payed);
+                }
+                newOrder.setNewShopOrders(shopOrders);
+            }
+            if (CollectionUtils.isNotEmpty(list)) {
+                newOrder.setOrderProduct(list);
+                double freight = 0D;
+                double totalAddedValueTax = 0D;
+                for (NewOrderProduct op : list) {
+                    if (op.getProductID().intValue() == 999) { //邮费商品
+                        freight += op.getPrice();
+                    }
+                    totalAddedValueTax += op.getTotalAddedValueTax();
+                }
+                if ("1".equals(newOrder.getFreePostFlag())) newOrder.setFreight(freight);
+                newOrder.setTotalAddedValueTax(totalAddedValueTax);
+            }
+            shopOrders.sort((so1, so2) -> {
+                //给子订单排序  邮费排在最后  其余的按shopOrderID  asc
+                if ("1".equals(so1.getPostFeeCos())) return 1;
+                return so1.getShopOrderID() - so2.getShopOrderID();
+            });
+        }
+        return newOrder;
+    }
+
+    public Page<NewOrder> findPage(Page<NewOrder> page, NewOrder entity) {
+        Page<NewOrder> pageResult = super.findPage(page, entity);
+        List<NewOrder> results = pageResult.getList();
+        List<Integer> oId = results.stream().map(NewOrder::getOrderID).collect(Collectors.toList());
+        //看看这些订单有哪些是返佣订单 返回他们的orderID
+        List<Integer> orderIds = null;
+        if (CollectionUtils.isNotEmpty(oId)) {
+            orderIds = cmDiscernReceiptDao.findRebateOrderID(results.stream().map(NewOrder::getOrderID).collect(Collectors.toList()));
+        }
+        //从查询到的订单列表中 找到正在退款中的订单集合
+        List<Integer> orderIdsInReturn = null;
+        List<Integer> orderIdsInApplyReturn = null;//查询可以申请退款的订单ID
+        if (CollectionUtils.isNotEmpty(oId)) {
+            orderIdsInReturn = cmReturnedPurchaseDao.findOrderIDInReturnPurchase(oId);
+            orderIdsInApplyReturn = cmReturnedPurchaseDao.findOrderIDsInApplyReturnFlag(oId);
+        }
+        for (NewOrder order : results) {
+            order.setAbleUserMoney(0d);
+            if ((orderIds != null && orderIds.contains(order.getOrderID())) || "1".equals(order.getRebateFlag())) {
+                order.setRebateOrder("1");
+            } else {
+                order.setRebateOrder("0");
+                List<Integer> ids = cmReceiptOrderRelationDao.toAudit(order.getOrderID());
+                if (ids != null && ids.size() > 0) {
+                    order.setToAudit("1");
+                }
+            }
+            if (orderIdsInReturn != null && orderIdsInReturn.contains(order.getOrderID())) {
+                order.setReturnedPurchaseStatus("1");
+            } else {
+                order.setReturnedPurchaseStatus("0");
+            }
+            if (orderIdsInApplyReturn != null && orderIdsInApplyReturn.contains(order.getOrderID())) {
+                order.setApplyReturnedPurchaseFlag("0");
+            } else {
+                order.setApplyReturnedPurchaseFlag("1");
+            }
+
+            List<NewShopOrder> shopOrders = order.getNewShopOrders();
+            if (shopOrders != null && shopOrders.size() == 1) {
+                order.setShopName(shopOrders.get(0).getShopName());
+            }
+            int count = 0;
+            for (NewShopOrder shopOrder : order.getNewShopOrders()) {
+                shopOrder.setOrderID(order.getOrderID());
+                shopOrder.setOrderNo(order.getOrderNo());
+                shopOrder.setOrderType(Integer.parseInt(order.getOrderType()));
+                shopOrder.setReceiver(order.getReceiver());
+                shopOrder.setOrderSource(order.getOrderSource());
+                shopOrder.setOrderTime(order.getOrderTime());
+                shopOrder.setBuyer(order.getBuyer());
+                if (shopOrder.getShopID() != 998) {
+                    count++;
+                }
+
+                Integer shopOrderID = shopOrder.getShopOrderID();//子订单ID
+                //通过子订单ID查询子订单信息
+                NewShopOrder newShopOrder = newShopOrderDao.get(String.valueOf(shopOrderID));
+                if (null != newShopOrder) {
+                    shopOrder.setFee(newShopOrder.getFee());
+                    shopOrder.setShouldPayProduct(newShopOrder.getShouldPayProduct());
+                    List<NewOrderProduct> pList = newOrderProductDao.findListByShopOrderID(shopOrderID);
+                    pList.forEach(orderProduct -> {
+                        //充值定金商品
+                        if (6060 == orderProduct.getProductID()) {
+                            order.setRechargeGoods(1);
+                        }
+                    });
+                } else {
+                    shopOrder.setFee(0d);
+                    shopOrder.setShouldPayProduct(0d);
+                }
+            }
+            //一个子订单只有一个商品时,不可拆分
+            if (order.getProductCount() == null) {
+                order.setProductCount(1);
+            }
+            if (order.getProductCount() <= count) {
+                order.setSplitFlag("0");
+            }
+
+            //是否抹平支付过(抹平最多只允许存在一次)
+            CmDiscernReceipt cmDiscernReceipt = cmDiscernReceiptDao.findSmoothoutInfo(order.getOrderID().toString());
+            if (null != cmDiscernReceipt) {
+                order.setAssociationType(cmDiscernReceipt.getAssociationType());
+                String confirmType = cmDiscernReceipt.getConfirmType();
+                order.setConfirmType(confirmType);
+
+                // 是否是一比款收了多个订单
+                if (StringUtils.equals(confirmType, "1") || StringUtils.equals(confirmType, "2") || StringUtils.equals(confirmType, "3")) {
+                    List<CmReceiptOrderRelation> byReceiptList = cmReceiptOrderRelationService.findByReceiptID(cmDiscernReceipt.getId());
+                    if (CollectionUtils.isNotEmpty(byReceiptList) && byReceiptList.size() > 1) {
+                        order.setReceiptOrderFlag(true);
+                    }
+                }
+            }
+
+            // 订单已收款才会出现抹平或者多收退余额,(已收再退款或者撤销退款订单即使存在抹平也需要当未抹平重新计算付款)
+            //            抹平明细
+            String receiptStatus = order.getReceiptStatus();
+            if (StringUtils.equals("3", receiptStatus)) {
+                if (null != cmDiscernReceipt) {
+                    String confirmType = cmDiscernReceipt.getConfirmType();
+                    order.setConfirmType(confirmType);
+                    double associateAmount = cmDiscernReceiptDao.getAssociateAmount(String.valueOf(order.getOrderID()));
+                    order.setOrderReceivedAmount(associateAmount);
+                    //大额退余额
+                    if (StringUtils.equals("3", confirmType)) {
+                        String id = cmDiscernReceipt.getId();
+                        double returnBalanceAmount = cmDiscernReceiptDao.getReturnBalanceAmount(id);
+                        order.setReturnBalanceAmount(returnBalanceAmount);
+                    }
+                }
+            }
+        }
+        return pageResult;
+    }
+}

+ 281 - 0
src/main/java/com/caimei/modules/hehe/web/HeHeNewOrderController.java

@@ -0,0 +1,281 @@
+package com.caimei.modules.hehe.web;
+
+import com.caimei.modules.bulkpurchase.entity.BpClause;
+import com.caimei.modules.bulkpurchase.service.BpClauseService;
+import com.caimei.modules.bulkpurchase.service.CmFinanceChargeService;
+import com.caimei.modules.bulkpurchase.service.PurchaseProductService;
+import com.caimei.modules.hehe.dao.CmHeheUserDao;
+import com.caimei.modules.hehe.entity.CmHeheUser;
+import com.caimei.modules.hehe.service.CmHeheUserService;
+import com.caimei.modules.hehe.service.HeHeNewOrderService;
+import com.caimei.modules.order.dao.CmDiscernReceiptDao;
+import com.caimei.modules.order.dao.CmReceiptOrderRelationDao;
+import com.caimei.modules.order.dao.CmReturnedPurchaseDao;
+import com.caimei.modules.order.dao.NewOrderProductDao;
+import com.caimei.modules.order.entity.*;
+import com.caimei.modules.order.service.*;
+import com.caimei.modules.product.dao.CmPromotionDao;
+import com.caimei.modules.product.dao.ProductDao;
+import com.caimei.modules.product.service.CmSecondHandDetailService;
+import com.caimei.modules.product.service.RepeatPurchasePriceHistoryService;
+import com.caimei.modules.product.service.RepeatPurchasePriceService;
+import com.caimei.modules.project.dao.ClubDao;
+import com.caimei.modules.user.dao.CmUserDao;
+import com.caimei.modules.user.service.CmMessageService;
+import com.caimei.modules.user.service.CmUserOrganizeService;
+import com.caimei.modules.user.service.CmUserService;
+import com.caimei.modules.user.service.NewCmShopService;
+import com.thinkgem.jeesite.common.persistence.Page;
+import com.thinkgem.jeesite.common.utils.StringUtils;
+import com.thinkgem.jeesite.common.web.BaseController;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/4/27
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/hehe/new/order")
+public class HeHeNewOrderController extends BaseController {
+    @Autowired
+    private HeHeNewOrderService heHeNewOrderService;
+    @Autowired
+    private CmHeheUserDao cmHeheUserDao;
+    @Resource
+    private BpClauseService bpClauseService;
+    @Resource
+    private NewOrderProductService newOrderProductService;
+    @Autowired
+    private NewReceiptListService newReceiptListService;
+    @Resource
+    private NewShopOrderService newShopOrderService;
+    @Resource
+    private CmFinanceChargeService cmFinanceChargeService;
+    @Resource
+    private OrderUserInfoService orderUserInfoService;
+    @Resource
+    private CmMessageService cmMessageService;
+    @Resource
+    private ClubDao clubDao;
+    @Autowired
+    private ProductDao productDao;
+    @Resource
+    private CmProductSnService cmProductSnService;
+    @Autowired
+    private NewOrderProductDao newOrderProductDao;
+    @Resource
+    private CmReturnedPurchaseDao cmReturnedPurchaseDao;
+    @Resource
+    private CmUserService cmUserService;
+    @Resource
+    private RepeatPurchasePriceService repeatPurchasePriceService;
+    @Resource
+    private NewCmShopService newCmShopService;
+    @Resource
+    private RepeatPurchasePriceHistoryService repeatPurchasePriceHistoryService;
+    @Resource
+    private NewOrderConfigService newOrderConfigService;
+    @Resource
+    private CmDiscernReceiptService cmDiscernReceiptService;
+    @Resource
+    private CmUserDao cmUserDao;
+    @Resource
+    private CmReturnedPurchaseService cmReturnedPurchaseService;
+    @Resource
+    private CmReceiptOrderRelationDao cmReceiptOrderRelationDao;
+    @Autowired
+    private CmUserOrganizeService cmUserOrganizeService;
+    @Autowired
+    private CmSecondHandDetailService cmSecondHandDetailService;
+    @Autowired
+    private CmDiscernReceiptDao cmDiscernReceiptDao;
+    @Autowired
+    private CmReceiptOrderRelationService cmReceiptOrderRelationService;
+    @Resource
+    private CmPromotionDao cmPromotionDao;
+    @Autowired
+    private PurchaseProductService purchaseProductService;
+
+    @ModelAttribute
+    public NewOrder get(@RequestParam(required = false) String id) {
+        NewOrder entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = heHeNewOrderService.get(id);
+        }
+        if (entity == null) {
+            entity = new NewOrder();
+        }
+        return entity;
+    }
+
+    @RequestMapping("orderList")
+    public String orderList(NewOrder order, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if (null != order.getStartTime() && !"".equals(order.getStartTime()) && !order.getStartTime().endsWith("00:00:00")) {
+            model.addAttribute("startTime", order.getStartTime());
+            order.setStartTime(order.getStartTime() + " 00:00:00");
+        }
+        if (null != order.getEndTime() && !"".equals(order.getEndTime()) && !order.getEndTime().endsWith("23:59:59")) {
+            model.addAttribute("endTime", order.getEndTime());
+            order.setEndTime(order.getEndTime() + " 23:59:59");
+        }
+        if (null != order.getStartConfirmTime() && !"".equals(order.getStartConfirmTime()) && !order.getStartConfirmTime().endsWith("00:00:00")) {
+            model.addAttribute("startConfirmTime", order.getStartConfirmTime());
+            order.setStartConfirmTime(order.getStartConfirmTime() + " 00:00:00");
+        }
+        if (null != order.getEndConfirmTime() && !"".equals(order.getEndConfirmTime()) && !order.getEndConfirmTime().endsWith("23:59:59")) {
+            model.addAttribute("endConfirmTime", order.getEndConfirmTime());
+            order.setEndConfirmTime(order.getEndConfirmTime() + " 23:59:59");
+        }
+        if (null != order.getStartRefundTime() && !"".equals(order.getStartRefundTime()) && !order.getStartRefundTime().endsWith("00:00:00")) {
+            model.addAttribute("startRefundTime", order.getStartRefundTime());
+            order.setStartRefundTime(order.getStartRefundTime() + " 00:00:00");
+        }
+        if (null != order.getEndRefundTime() && !"".equals(order.getEndRefundTime()) && !order.getEndRefundTime().endsWith("23:59:59")) {
+            model.addAttribute("endRefundTime", order.getEndRefundTime());
+            order.setEndRefundTime(order.getEndRefundTime() + " 23:59:59");
+        }
+        model.addAttribute("orderRefundType", order.getOrderRefundType());
+        if (null != order.getBuyer()) {
+            order.setBuyer(order.getBuyer().trim());
+        }
+        if (null != order.getReceiver()) {
+            order.setReceiver(order.getReceiver().trim());
+        }
+        //查询内部处理了已收,未付统计(包含运费)
+        Page<NewOrder> page = heHeNewOrderService.findPage(new Page<>(request, response, 20), order);
+        CmHeheUser user = new CmHeheUser();
+        user.setUserIdentity("2");
+        List<CmHeheUser> heUsers = cmHeheUserDao.findList(user);
+        model.addAttribute("page", page);
+        model.addAttribute("heUsers", heUsers);
+        return "modules/hehe/heheNewOrderList";
+    }
+
+    /**
+     * 订单详情
+     */
+    @RequestMapping("detail")
+    public String detail(NewOrder order, Model model) {
+        BpClause bpClause = new BpClause();
+        bpClause.setEnabledStatus("1");
+        List<BpClause> bpClauses = bpClauseService.findList(bpClause);
+        model.addAttribute("bpClauses", bpClauses);
+        //获取订单是否可以申请付款
+        List<Integer> oId = new ArrayList<>();
+        oId.add(order.getOrderID());
+        List<Integer> orderIdsInApplyReturn = cmReturnedPurchaseDao.findOrderIDsInApplyReturnFlag(oId);
+        if (CollectionUtils.isNotEmpty(orderIdsInApplyReturn) && orderIdsInApplyReturn.size() > 0) {
+            order.setApplyReturnedPurchaseFlag("0");
+        } else {
+            order.setApplyReturnedPurchaseFlag("1");
+        }
+        //判断是否有在收款审核的订单
+        List<Integer> ids = cmReceiptOrderRelationDao.toAudit(order.getOrderID());
+        if (ids != null && ids.size() > 0) {
+            order.setToAudit("1");
+        }
+        //一个子订单只有一个商品时,不可拆分
+        int count = 0;
+        for (NewShopOrder newShopOrder : order.getNewShopOrders()) {
+            if (newShopOrder.getShopID() != 998) {
+                count++;
+            }
+        }
+        if (order.getProductCount() == null) {
+            order.setProductCount(1);
+        }
+        if (order.getProductCount() <= count) {
+            order.setSplitFlag("0");
+        }
+        //是否抹平支付过(抹平最多只允许存在一次)
+        CmDiscernReceipt cmDiscernReceipt = cmDiscernReceiptDao.findSmoothoutInfo(order.getOrderID().toString());
+        if (null != cmDiscernReceipt) {
+            order.setAssociationType(cmDiscernReceipt.getAssociationType());
+            String confirmType = cmDiscernReceipt.getConfirmType();
+            order.setConfirmType(confirmType);
+
+            // 是否是一比款收了多个订单
+            if (StringUtils.equals(confirmType, "1") || StringUtils.equals(confirmType, "2") || StringUtils.equals(confirmType, "3")) {
+                List<CmReceiptOrderRelation> byReceiptList = cmReceiptOrderRelationService.findByReceiptID(cmDiscernReceipt.getId());
+                if (CollectionUtils.isNotEmpty(byReceiptList) && byReceiptList.size() > 1) {
+                    order.setReceiptOrderFlag(true);
+                }
+            }
+        }
+
+        // 订单已收款才会出现抹平或者多收退余额,(已收再退款或者撤销退款订单即使存在抹平也需要当未抹平重新计算付款)
+        String receiptStatus = order.getReceiptStatus();
+        if (StringUtils.equals("3", receiptStatus)) {
+            if (null != cmDiscernReceipt) {
+                String confirmType = cmDiscernReceipt.getConfirmType();
+                order.setConfirmType(confirmType);
+                double associateAmount = cmDiscernReceiptDao.getAssociateAmount(String.valueOf(order.getOrderID()));
+                order.setOrderReceivedAmount(associateAmount);
+                //大额退余额
+                if (StringUtils.equals("3", confirmType)) {
+                    String id = cmDiscernReceipt.getId();
+                    double returnBalanceAmount = cmDiscernReceiptDao.getReturnBalanceAmount(id);
+                    order.setReturnBalanceAmount(returnBalanceAmount);
+                }
+            }
+        }
+
+        model.addAttribute("order", order);
+        if ("0".equals(order.getStatus())) {
+            try {
+                NewOrderConfig confirmOverTime = newOrderConfigService.getValueByKey("confirmOverTime");
+                Double value = confirmOverTime.getValue(); //待确认超过 value 小时自动取消订单
+                GregorianCalendar gc = new GregorianCalendar();
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                Date orderTime = sdf.parse(order.getOrderTime());
+                gc.setTime(orderTime);
+                gc.add(Calendar.HOUR, value.intValue());
+                Date time = gc.getTime();
+                String ot = sdf.format(time);
+                if (time.after(new Date()))
+                    model.addAttribute("time", ot);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        CmReturnedPurchase cmReturnedPurchase = new CmReturnedPurchase();
+        cmReturnedPurchase.setStatus("2");
+        cmReturnedPurchase.setOrderID(order.getOrderID());
+        List<CmReturnedPurchase> dataList = cmReturnedPurchaseService.getReturnedPurchaseList(cmReturnedPurchase);
+        Double returnedPurchaseFee = 0D;    //退款(退货)总金额
+        Double refundFee = 0D;  //退款总额(给买家)
+        for (CmReturnedPurchase bean : dataList) {
+            if (!bean.getStatus().equals("3")) {
+                returnedPurchaseFee += bean.getReturnedPurchaseFee();
+                refundFee += bean.getRefundFee();
+            }
+        }
+        double returnValue = 0d;   //退货价值
+        if (order.getDiscountFee() >= returnedPurchaseFee) {
+            returnValue = 0d;   //如果经理折扣大于退款(退货)总金额之和  那么先抵扣经理折扣  退款价值为0
+        } else {
+            returnValue = returnedPurchaseFee - order.getDiscountFee(); //抵用完经理折扣后才是真实价值
+        }
+        //订单已收金额
+        Double receiptAmount = cmDiscernReceiptService.findOrderReceipt(order.getOrderID());
+        model.addAttribute("returnValue", returnValue);
+        model.addAttribute("receiptAmount", receiptAmount == null ? 0 : receiptAmount);
+        model.addAttribute("returnedPurchaseFee", returnedPurchaseFee);
+        return "modules/hehe/heheNewOrderDetail";
+    }
+}

+ 9 - 0
src/main/java/com/caimei/modules/order/entity/CmReturnedPurchase.java

@@ -69,6 +69,7 @@ public class CmReturnedPurchase extends DataEntity<CmReturnedPurchase> {
     private String applicationUserName;//申请人
     private String reviewUserName;//审核人
     private String name; //机构名
+    private Integer orderType; //订单类型 0协销订单、 1普通订单、 2呵呵订单
 
     public String getName() {
         return name;
@@ -453,4 +454,12 @@ public class CmReturnedPurchase extends DataEntity<CmReturnedPurchase> {
     public void setPayType(String payType) {
         this.payType = payType;
     }
+
+    public Integer getOrderType() {
+        return orderType;
+    }
+
+    public void setOrderType(Integer orderType) {
+        this.orderType = orderType;
+    }
 }

+ 24 - 0
src/main/java/com/caimei/modules/order/entity/NewOrderProduct.java

@@ -90,6 +90,8 @@ public class NewOrderProduct extends DataEntity<NewOrderProduct> {
     private String splitFlag;//订单商品是否可拆分   1可拆分(不可以进账确认) 0不可拆分----统计子订单中的
     private String costCheckFlag; //成本价选中标志:1固定成本 2比例成
     private Double costProportional;//比例成本百分比
+    private Integer heUserId; //分销者id(呵呵商城订单使用)
+    private String heUserName; //分销者名称
     private List<CmProductSn> cmProductSnList; //(重光电/轻光电)SN码
 
     private String consignee;        //收货人
@@ -109,19 +111,25 @@ public class NewOrderProduct extends DataEntity<NewOrderProduct> {
     private String secondHandType;//二手商品分类,1二手仪器,2临期产品,3其他
     private CmPromotion productPromotion; //下单时商品对应的促销活动
     private Integer ladderPriceFlag;        // 启用阶梯价格标识 0否 1是
+
     public Integer getLadderPriceFlag() {
         return ladderPriceFlag;
     }
+
     public void setLadderPriceFlag(Integer ladderPriceFlag) {
         this.ladderPriceFlag = ladderPriceFlag;
     }
+
     private List<ProductLadderPrice> ladderPriceList;//商品阶梯价格列表
+
     public List<ProductLadderPrice> getLadderPriceList() {
         return ladderPriceList;
     }
+
     public void setLadderPriceList(List<ProductLadderPrice> ladderPriceList) {
         this.ladderPriceList = ladderPriceList;
     }
+
     private Double touchPrice; //优惠价格
     private List<OrderProductLadderPrice> orderProductLadderPriceList;  //订单商品阶梯价格
 
@@ -920,4 +928,20 @@ public class NewOrderProduct extends DataEntity<NewOrderProduct> {
     public void setOrderProductLadderPriceList(List<OrderProductLadderPrice> orderProductLadderPriceList) {
         this.orderProductLadderPriceList = orderProductLadderPriceList;
     }
+
+    public Integer getHeUserId() {
+        return heUserId;
+    }
+
+    public void setHeUserId(Integer heUserId) {
+        this.heUserId = heUserId;
+    }
+
+    public String getHeUserName() {
+        return heUserName;
+    }
+
+    public void setHeUserName(String heUserName) {
+        this.heUserName = heUserName;
+    }
 }

+ 8 - 4
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -886,8 +886,10 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
             NewCmClub club = newCmClubDao.getclubByUserId(newOrder.getUserID());
             if (null != orderUserInfo) {
                 newOrder.setBpOrderUserinfo(orderUserInfo);
-                //使用机构名称
-                orderUserInfo.setName(club.getName());
+                if (club != null) {
+                    //使用机构名称
+                    orderUserInfo.setName(club.getName());
+                }
             }
             //获取订单商品
             List<NewOrderProduct> list = new ArrayList<>();
@@ -993,8 +995,10 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
             if (null != orderUserInfo) {
                 orderUserInfo = cmUserService.getBalance(orderUserInfo);
                 newOrder.setBpOrderUserinfo(orderUserInfo);
-                //使用机构名称
-                orderUserInfo.setName(club.getName());
+                if (club != null) {
+                    //使用机构名称
+                    orderUserInfo.setName(club.getName());
+                }
             }
             List<NewShopOrder> shopOrders = newShopOrderDao.findListByOrderID(cmReturnedPurchase.getOrderID());
             if (CollectionUtils.isNotEmpty(shopOrders)) {

+ 1 - 0
src/main/java/com/caimei/modules/order/web/CmReturnedPurchaseController.java

@@ -72,6 +72,7 @@ public class CmReturnedPurchaseController extends BaseController {
         List<CmUserOrganize> cmUserOrganizeList = cmUserOrganizeService.findOrganize();
         model.addAttribute("cmUserOrganizeList", cmUserOrganizeList);
         model.addAttribute("page", page);
+        model.addAttribute("orderType", cmReturnedPurchase.getOrderType());
         return "modules/order/cmReturnedPurchaseList";
     }
 

+ 213 - 202
src/main/java/com/caimei/modules/user/service/CmUserService.java

@@ -24,6 +24,7 @@ import java.util.Map;
 
 /**
  * 用户Service
+ *
  * @author ZCP
  * @version 2017-10-10
  */
@@ -31,20 +32,21 @@ import java.util.Map;
 @Transactional(readOnly = true)
 public class CmUserService extends CrudService<CmUserDao, CmUser> {
 
-	@Autowired
-	CmUserDao cmUserDao;
+    @Autowired
+    CmUserDao cmUserDao;
 
-	@Resource
-	CmBindDao cmBindDao;
+    @Resource
+    CmBindDao cmBindDao;
 
-	public CmUser get(String id) {
-		return super.get(id);
-	}
+    public CmUser get(String id) {
+        return super.get(id);
+    }
 
-	public List<CmUser> findList(CmUser cmUser) {
-		return super.findList(cmUser);
-	}
-//     todo lwt 普通用户管理操作
+    public List<CmUser> findList(CmUser cmUser) {
+        return super.findList(cmUser);
+    }
+
+    //     todo lwt 普通用户管理操作
 //	public List<CmUser> findAllPersonalUser() {
 //		return cmUserDao.findAllPersonalUser();
 //	}
@@ -53,146 +55,153 @@ public class CmUserService extends CrudService<CmUserDao, CmUser> {
 //		return cmUserDao.findUserByRegisterType(registerUserTypeID);
 //	}
 //
-	public Page<CmUser> findPage(Page<CmUser> page, CmUser cmUser) {
-		return super.findPage(page, cmUser);
-	}
+    public Page<CmUser> findPage(Page<CmUser> page, CmUser cmUser) {
+        return super.findPage(page, cmUser);
+    }
+
+    @Transactional(readOnly = false)
+    public void save(CmUser cmUser) {
+        super.save(cmUser);
+    }
 
-	@Transactional(readOnly = false)
-	public void save(CmUser cmUser) {
-		super.save(cmUser);
-	}
+    @Transactional(readOnly = false)
+    public void insert(CmUser cmUser) {
+        cmUserDao.insert(cmUser);
+    }
 
-	@Transactional(readOnly = false)
-	public void insert(CmUser cmUser){
-		cmUserDao.insert(cmUser);
-	}
+    @Transactional(readOnly = false)
+    public void delete(CmUser cmUser) {
+        super.delete(cmUser);
+    }
 
-	@Transactional(readOnly = false)
-	public void delete(CmUser cmUser) {
-		super.delete(cmUser);
-	}
-	@Transactional(readOnly = false)
-	public void update(CmUser cmUser) {
-		cmUserDao.update(cmUser);
-	}
+    @Transactional(readOnly = false)
+    public void update(CmUser cmUser) {
+        cmUserDao.update(cmUser);
+    }
 
-	@Transactional(readOnly = false)
-	public void unBindClub(CmUser cmUser) {
-		cmUser.setCompanyUserID(null); //置空所属企业用户对应UserID
-		cmUser.setName(null);//置空组织名称
-		cmUser.setUserIdentity(UserIdentity.NORMAL_USER.getCode());
-		cmUser.setUserPermission(UserPermission.NORMAL.getCode());//用户权限改成普通人
-		cmUser.setRegisterUserTypeID(UserType.VISITOR.getCode() + "");//设为游离员工
-		cmUser.setClubStatus(null);
-		cmUser.setClubID(null);
-		cmUserDao.update(cmUser);
-	}
+    @Transactional(readOnly = false)
+    public void unBindClub(CmUser cmUser) {
+        cmUser.setCompanyUserID(null); //置空所属企业用户对应UserID
+        cmUser.setName(null);//置空组织名称
+        cmUser.setUserIdentity(UserIdentity.NORMAL_USER.getCode());
+        cmUser.setUserPermission(UserPermission.NORMAL.getCode());//用户权限改成普通人
+        cmUser.setRegisterUserTypeID(UserType.VISITOR.getCode() + "");//设为游离员工
+        cmUser.setClubStatus(null);
+        cmUser.setClubID(null);
+        cmUserDao.update(cmUser);
+    }
 
-	@Transactional(readOnly = false)
-	public void unBindShop(CmUser cmUser) {
-		cmUser.setCompanyUserID(null); //置空所属企业用户对应UserID
-		cmUser.setName(null);//置空组织名称
-		cmUser.setUserIdentity(UserIdentity.NORMAL_USER.getCode());
-		cmUser.setUserPermission(UserPermission.NORMAL.getCode());//用户权限改成普通人
-		cmUser.setRegisterUserTypeID(UserType.VISITOR.getCode() + "");//设为游离员工
-		cmUser.setManufacturerStatus(null);
-		cmUser.setShopID(null);
-		cmUserDao.update(cmUser);
-	}
+    @Transactional(readOnly = false)
+    public void unBindShop(CmUser cmUser) {
+        cmUser.setCompanyUserID(null); //置空所属企业用户对应UserID
+        cmUser.setName(null);//置空组织名称
+        cmUser.setUserIdentity(UserIdentity.NORMAL_USER.getCode());
+        cmUser.setUserPermission(UserPermission.NORMAL.getCode());//用户权限改成普通人
+        cmUser.setRegisterUserTypeID(UserType.VISITOR.getCode() + "");//设为游离员工
+        cmUser.setManufacturerStatus(null);
+        cmUser.setShopID(null);
+        cmUserDao.update(cmUser);
+    }
 
-	@Transactional(readOnly = false)
-	public void unBindWeChat(CmUser cmUser) {
-		cmUser.setOpenID(null);//解除与微信的关联
-		cmUserDao.update(cmUser);
-		List<CmBind> cmbinds = cmBindDao.findCmbindByUserId(cmUser.getUserID());
-		CmBind cmbind = cmbinds.get(0);
-		cmbind.setUserID(null);//微信与用户解绑
-		cmbind.setRegisterUserTypeID(UserType.WXUSER.getCode() + "");//设为微信游客
-		cmBindDao.update(cmbind);
-	}
+    @Transactional(readOnly = false)
+    public void unBindWeChat(CmUser cmUser) {
+        cmUser.setOpenID(null);//解除与微信的关联
+        cmUserDao.update(cmUser);
+        List<CmBind> cmbinds = cmBindDao.findCmbindByUserId(cmUser.getUserID());
+        CmBind cmbind = cmbinds.get(0);
+        cmbind.setUserID(null);//微信与用户解绑
+        cmbind.setRegisterUserTypeID(UserType.WXUSER.getCode() + "");//设为微信游客
+        cmBindDao.update(cmbind);
+    }
 
-	/**
-	 * 查询员工(不包括企业用户)
-	 * @param companyUserID
-	 * @return
-	 */
-	public List<CmUser> findByCompanyUserID(Integer companyUserID){
-		return cmUserDao.findByCompanyUserID(companyUserID);
-	}
+    /**
+     * 查询员工(不包括企业用户)
+     *
+     * @param companyUserID
+     * @return
+     */
+    public List<CmUser> findByCompanyUserID(Integer companyUserID) {
+        return cmUserDao.findByCompanyUserID(companyUserID);
+    }
 
-	/**
-	 * 通过企业用户ID 更新员工状态
-	 * @param clubStatus
-	 * @param manufacturerStatus
-	 * @param companyUserID
-	 */
-	@Transactional(readOnly = false)
-	public void updateEmployeeStatus(Integer userPermission,String clubStatus,String manufacturerStatus,String tipStatus,Integer companyUserID){
-		cmUserDao.updateEmployeeStatus(userPermission,clubStatus,manufacturerStatus,tipStatus,companyUserID);
-	}
+    /**
+     * 通过企业用户ID 更新员工状态
+     *
+     * @param clubStatus
+     * @param manufacturerStatus
+     * @param companyUserID
+     */
+    @Transactional(readOnly = false)
+    public void updateEmployeeStatus(Integer userPermission, String clubStatus, String manufacturerStatus, String tipStatus, Integer companyUserID) {
+        cmUserDao.updateEmployeeStatus(userPermission, clubStatus, manufacturerStatus, tipStatus, companyUserID);
+    }
 
-	@Transactional(readOnly = false)
-	public void updateUserStatus(String manufacturerStatus,Integer userID,String validFlag){
-		cmUserDao.updateUserStatus(manufacturerStatus,userID,validFlag);
-	}
+    @Transactional(readOnly = false)
+    public void updateUserStatus(String manufacturerStatus, Integer userID, String validFlag) {
+        cmUserDao.updateUserStatus(manufacturerStatus, userID, validFlag);
+    }
 
-	/**
-	 * 通过企业用户ID 更新员工权限
-	 * @param companyUserID
-	 */
-	@Transactional(readOnly = false)
-	public void updateEmployeePermission(Integer userPermission,Integer companyUserID){
-		cmUserDao.updateEmployeePermission(userPermission,companyUserID);
-	}
+    /**
+     * 通过企业用户ID 更新员工权限
+     *
+     * @param companyUserID
+     */
+    @Transactional(readOnly = false)
+    public void updateEmployeePermission(Integer userPermission, Integer companyUserID) {
+        cmUserDao.updateEmployeePermission(userPermission, companyUserID);
+    }
 
-	/**
-	 * 企业审核未通过 使申请者变为普通用户
-	 * @return
-	 */
-	@Transactional(readOnly = false)
-	public void initEmployeeInfo(){
-		cmUserDao.initEmployeeInfo();
-	}
+    /**
+     * 企业审核未通过 使申请者变为普通用户
+     *
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public void initEmployeeInfo() {
+        cmUserDao.initEmployeeInfo();
+    }
 
-	/**
-	 * 根据手机号码查询用户
-	 * @param mobile
-	 * @return
-	 */
-	@Transactional(readOnly = true)
-	public CmUser findUserByMobile(String mobile) {
-		return cmUserDao.findUserByMobile(mobile);
-	}
+    /**
+     * 根据手机号码查询用户
+     *
+     * @param mobile
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public CmUser findUserByMobile(String mobile) {
+        return cmUserDao.findUserByMobile(mobile);
+    }
 
-	/**
-	 * 通过企业手机号码查询用户
-	 * @param cmUser
-	 * @return
-	 */
-	@Transactional(readOnly = true)
-	public List<CmUser> findListBuyBindMobile(CmUser cmUser){
-		return cmUserDao.findListBuyBindMobile(cmUser);
-	}
+    /**
+     * 通过企业手机号码查询用户
+     *
+     * @param cmUser
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public List<CmUser> findListBuyBindMobile(CmUser cmUser) {
+        return cmUserDao.findListBuyBindMobile(cmUser);
+    }
 
-	/**
-	 * @Author ye.qin
-	 * @Description //TODO 修改用户的可用余额
-	 * @Date 2019\5\23 0023 13:56
-	 * @Param
-	 * @return
-	 */
-	@Transactional(readOnly = false)
-	public void updateAbleUserMoney1(OrderUserInfo user) {
-		cmUserDao.updateAbleUserMoney(user);
-	}
+    /**
+     * @return
+     * @Author ye.qin
+     * @Description //TODO 修改用户的可用余额
+     * @Date 2019\5\23 0023 13:56
+     * @Param
+     */
+    @Transactional(readOnly = false)
+    public void updateAbleUserMoney1(OrderUserInfo user) {
+        cmUserDao.updateAbleUserMoney(user);
+    }
 
-	/**
-	 * @Author ye.qin
-	 * @Description //TODO 设置余额
-	 * @Date 2019\6\20 0020 16:40
-	 * @Param
-	 * @return
-	 */
+    /**
+     * @Author ye.qin
+     * @Description //TODO 设置余额
+     * @Date 2019\6\20 0020 16:40
+     * @Param
+     * @return
+     */
 //	@Transactional(readOnly = false)
 //	public void setBalance(CmUser user, Double amount) {
 //		if(UserType.isMaker(Integer.parseInt(user.getRegisterUserTypeID()))){
@@ -214,72 +223,74 @@ public class CmUserService extends CrudService<CmUserDao, CmUser> {
 //		cmUserDao.updateMoney(user);
 //	}
 
-	/**
-	 * @Author ye.qin
-	 * @Description //TODO 获取用户余额
-	 * @Date 2019\6\25 0025 17:36
-	 * @Param
-	 * @return
-	 */
-	@Transactional(readOnly = true)
-	public OrderUserInfo getBalance(OrderUserInfo bean) {
-		CmUser user = get(bean.getUserId().toString());
-		//协销
-		if(UserType.isMaker(Integer.parseInt(user.getRegisterUserTypeID()))){
-			bean.setUserMoney(0d);
-			bean.setAbleUserMoney(0d);
-			return  bean;
-		}
-
-		//会所
-		if(UserType.isClub(Integer.parseInt(user.getRegisterUserTypeID()))){
-			user = get(user.getUserID().toString());
-		}
-
-		bean.setUserMoney(user.getUserMoney());
-		bean.setAbleUserMoney(user.getAbleUserMoney());
-		return bean;
-	}
+    /**
+     * @return
+     * @Author ye.qin
+     * @Description //TODO 获取用户余额
+     * @Date 2019\6\25 0025 17:36
+     * @Param
+     */
+    @Transactional(readOnly = true)
+    public OrderUserInfo getBalance(OrderUserInfo bean) {
+        CmUser user = get(bean.getUserId().toString());
+        if (user != null) {
+            if (user.getRegisterUserTypeID() != null) {
+                //协销
+                if (UserType.isMaker(Integer.parseInt(user.getRegisterUserTypeID()))) {
+                    bean.setUserMoney(0d);
+                    bean.setAbleUserMoney(0d);
+                    return bean;
+                }
+                //会所
+                if (UserType.isClub(Integer.parseInt(user.getRegisterUserTypeID()))) {
+                    user = get(user.getUserID().toString());
+                }
+            }
+            bean.setUserMoney(user.getUserMoney());
+            bean.setAbleUserMoney(user.getAbleUserMoney());
+        }
+        return bean;
+    }
 
-	/**
-	 * 编辑用户信息验证新手机号是否可用
-	 */
-	public Map<String,String> checkMobile(String mobile, Integer userID, String source){
-		Map<String, String> result = new HashMap<>(2);
-		if (StringUtils.isEmpty(mobile)) {
-			result.put("code", "-1");
-			result.put("msg", "手机号不能为空");
-			return result;
-		}
-		List<CmUser> users = cmUserDao.selectByMobileOrEmail(mobile, source);
-		if (users != null && users.size()>0) {
-			for (int i = 0; i < users.size(); i++) {
-				//查到的用户不是自己
-				if (!users.get(i).getUserID().equals(userID)) {
-					//获取不可用原因
-					JsonForm validReason = ValidateUtil.findValidReason(mobile, users.get(i));
-					result.put("code", "-1");
-					result.put("msg", validReason.getReturn_message());
-				}else {
-					//查到的用户是自己
-					if ((mobile.equals(users.get(i).getBindMobile()) || mobile.equals(users.get(i).getEmail()))) {
-						//手机号与机构/供应商联系人手机号相同
-						result.put("code", "1");
-						result.put("msg", "该手机号可以使用");
-						break;
-					}else {
-						//手机号与机构/供应商运营人员手机号相同
-						JsonForm validReason = ValidateUtil.findValidReason(mobile, users.get(i));
-						result.put("code", "-1");
-						result.put("msg", validReason.getReturn_message());
-					}
+    /**
+     * 编辑用户信息验证新手机号是否可用
+     */
+    public Map<String, String> checkMobile(String mobile, Integer userID, String source) {
+        Map<String, String> result = new HashMap<>(2);
+        if (StringUtils.isEmpty(mobile)) {
+            result.put("code", "-1");
+            result.put("msg", "手机号不能为空");
+            return result;
+        }
+        List<CmUser> users = cmUserDao.selectByMobileOrEmail(mobile, source);
+        if (users != null && users.size() > 0) {
+            for (int i = 0; i < users.size(); i++) {
+                //查到的用户不是自己
+                if (!users.get(i).getUserID().equals(userID)) {
+                    //获取不可用原因
+                    JsonForm validReason = ValidateUtil.findValidReason(mobile, users.get(i));
+                    result.put("code", "-1");
+                    result.put("msg", validReason.getReturn_message());
+                } else {
+                    //查到的用户是自己
+                    if ((mobile.equals(users.get(i).getBindMobile()) || mobile.equals(users.get(i).getEmail()))) {
+                        //手机号与机构/供应商联系人手机号相同
+                        result.put("code", "1");
+                        result.put("msg", "该手机号可以使用");
+                        break;
+                    } else {
+                        //手机号与机构/供应商运营人员手机号相同
+                        JsonForm validReason = ValidateUtil.findValidReason(mobile, users.get(i));
+                        result.put("code", "-1");
+                        result.put("msg", validReason.getReturn_message());
+                    }
 
-				}
-			}
-		} else {
-			result.put("code", "1");
-			result.put("msg", "该账号可以注册");
-		}
-		return result;
-	}
+                }
+            }
+        } else {
+            result.put("code", "1");
+            result.put("msg", "该账号可以注册");
+        }
+        return result;
+    }
 }

+ 1 - 1
src/main/resources/mappings/modules/hehe/CmHeheActivityProductMapper.xml

@@ -177,7 +177,7 @@
 	</delete>
 
 	<select id="findActivityByProductId" resultType="integer">
-		SELECT activityId FROM cm_hehe_activity_product WHERE productId = #{productId}
+		SELECT activityId FROM cm_hehe_activity_product WHERE productId = #{productId} AND delFlag = 0
 	</select>
 
 	<delete id="deleteUserActivity">

+ 2 - 2
src/main/resources/mappings/modules/hehe/CmHeheUserMapper.xml

@@ -120,13 +120,13 @@
 		INSERT INTO USER (
 		  bindMobile, userPermission, userIdentity,
 		  userName, password, name, registerTime,
-		  validFlag
+		  validFlag, registerUserTypeID
 		)
 		VALUES
 		  (
 			#{bindMobile}, #{userPermission}, #{userIdentity},
 			#{userName}, #{password}, #{name}, #{registerTime},
-			#{validFlag}
+			#{validFlag}, #{registerUserTypeID}
 		  )
 	</insert>
 

+ 253 - 0
src/main/resources/mappings/modules/hehe/HeHeNewOrderMapper.xml

@@ -0,0 +1,253 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei.modules.hehe.dao.HeHeNewOrderDao">
+    <sql id="columns">
+		a.orderID AS orderID,
+		a.orderNo AS orderNo,
+		a.organizeID AS organizeID,
+		a.userID AS userID,
+		a.buyUserID AS buyUserID,
+		a.shopOrderIDs AS shopOrderIDs,
+		a.orderSubmitType AS orderSubmitType,
+		a.orderType AS orderType,
+		a.secondHandOrderFlag AS secondHandOrderFlag,
+		a.status AS status,
+		a.productTotalFee AS productTotalFee,
+		a.orderTotalFee AS orderTotalFee,
+		a.payTotalFee AS payTotalFee,
+		a.payableAmount AS payableAmount,
+		a.balancePayFee  AS balancePayFee ,
+		a.discountFee AS discountFee,
+		a.spID AS spID,
+		a.mainSpID AS mainSpID,
+		a.note AS note,
+		a.clubID AS clubID,
+		a.clubScanTime AS clubScanTime,
+		a.payWay AS payWay,
+		a.orderSource AS orderSource,
+		a.orderTime AS orderTime,
+		a.confirmTime AS confirmTime,
+		a.productCount AS productCount,
+		a.presentCount AS presentCount,
+		a.cooFreeFlag AS cooFreeFlag,
+		a.cooFreeRate AS cooFreeRate,
+		a.cooFreeAmount AS cooFreeAmount,
+		a.confirmFlag AS confirmFlag,
+		a.clauseID AS clauseID,
+		a.clauseContent AS clauseContent,
+		a.clauseName AS clauseName,
+		a.updateDate AS updateDate,
+		a.freePostFlag AS freePostFlag,
+		a.freight AS freight,
+		a.delFlag AS delFlag,
+		a.onlinePayFlag AS onlinePayFlag,
+		a.payTime AS payTime,
+		a.splitFlag AS splitFlag,
+		(select sum(cop.totalAddedValueTax) from cm_order_product cop where cop.orderID = a.orderID) AS totalAddedValueTax,
+		a.preferential AS preferential,
+		a.closeReason AS closeReason,
+		a.receiptStatus as receiptStatus,
+		a.payStatus	as payStatus,
+		a.sendOutStatus as sendOutStatus,
+		a.refundType as refundType,
+		a.postageOrderFlag AS postageOrderFlag,
+		a.promotionFullReduction AS promotionFullReduction,
+		a.promotionalGiftsCount AS promotionalGiftsCount,
+		a.affirmPaymentFlag AS affirmPaymentFlag,
+		a.rebateFlag AS rebateFlag,
+		a.zeroCostFlag AS zeroCostFlag
+	</sql>
+
+    <select id="get" resultType="newOrder">
+        SELECT <include refid="columns"/>
+        FROM cm_order a
+        WHERE a.orderID = #{id}
+    </select>
+
+    <resultMap id="orderDisplayList" type="com.caimei.modules.order.entity.NewOrder">
+        <id column="orderID" property="orderID"/>
+        <result column="orderNo" property="orderNo"/>
+        <result column="organizeID" property="organizeID"/>
+        <result column="orderType" property="orderType"/>
+        <result column="shopName" property="shopName"/>
+        <result column="receiver" property="receiver"/>
+        <result column="buyer" property="buyer"/>
+        <result column="orderSource" property="orderSource"/>
+        <result column="orderTotalFee" property="orderTotalFee"/>
+        <result column="orderTime" property="orderTime"/>
+        <result column="productCount" property="productCount"/>
+        <result column="alreadyReceipt" property="alreadyReceipt"/>
+        <result column="unReceipt" property="unReceipt"/>
+        <result column="payTotalFee" property="payTotalFee"/>
+        <result column="payWay" property="payWay"/>
+        <result column="status" property="status"/>
+        <collection property="newShopOrders" ofType="com.caimei.modules.order.entity.NewShopOrder"
+                    select="loadShopOrders" column="orderNo" fetchType="eager">
+        </collection>
+    </resultMap>
+
+    <select id="findList" resultMap="orderDisplayList" parameterType="com.caimei.modules.order.entity.NewOrder">
+        SELECT DISTINCT
+        co.orderID AS orderID,
+        co.orderNo AS orderNo,
+        co.organizeID AS organizeID,
+        co.userID AS userID,
+        co.orderType AS orderType,
+        co.secondHandOrderFlag AS secondHandOrderFlag,
+        co.onlinePayFlag AS onlinePayFlag,
+        bou.shouHuoRen AS receiver,
+        IFNULL(c.name,c.nickName) AS buyer,
+        co.orderSource AS orderSource,
+        co.orderTotalFee AS orderTotalFee,
+        co.payableAmount AS payableAmount,
+        co.orderTime AS orderTime,
+        co.confirmTime AS confirmTime,
+        co.payTotalFee AS payTotalFee,
+        co.payWay AS payWay,
+        co.payStatus AS payStatus,
+        co.refundType AS refundType,
+        co.sendOutStatus AS sendOutStatus,
+        co.receiptStatus AS receiptStatus,
+        co.productCount AS productCount,
+        (SELECT IFNULL(sum(cop.shouldPayFee),0) FROM cm_order_product cop WHERE cop.orderId=co.orderID) AS "shouldPayProduct",
+        co.status AS status,
+        co.splitFlag AS splitFlag,
+        co.postageOrderFlag AS postageOrderFlag,
+        (case when co.orderType = '0' then
+        (select case status when 91 then '采美默认协销经理(官方账号)' else linkMan1 end from serviceprovider where serviceProviderID = co.spID)
+        else
+        ''
+        end) AS spName,
+        co.rebateFlag AS rebateFlag
+        FROM cm_order co
+        LEFT JOIN bp_order_userinfo bou ON bou.orderId = co.orderID
+        LEFT JOIN user u ON u.userID = co.userID
+        LEFT JOIN cm_hehe_user c ON u.userID = c.userId
+        LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
+        LEFT JOIN product p ON cop.productID = p.productID
+        <where>
+            co.orderType = 2
+            <if test="orderID != null and orderID != ''">
+                AND co.orderID = #{orderID}
+            </if>
+            <if test="orderNo != null and orderNo != ''">
+                AND co.orderNo = #{orderNo}
+            </if>
+            <if test="status != null and status != ''">
+                <choose>
+                    <when test="status == '99'.toString()">
+                        AND co.status in (11,12,13,21,22,23,31,32,33)
+                    </when>
+                    <otherwise>
+                        AND co.status = #{status}
+                    </otherwise>
+                </choose>
+            </if>
+            <if test="buyer != null and buyer != ''">
+                AND (c.name LIKE concat('%',#{buyer},'%') or c.nickName LIKE concat('%',#{buyer},'%'))
+            </if>
+            <if test="orderTime != null and orderTime != ''">
+                AND co.orderTime = #{orderTime}
+            </if>
+            <if test="sendOutStatus != null and sendOutStatus != ''">
+                AND co.sendOutStatus = #{sendOutStatus}
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND co.orderTime <![CDATA[  >=  ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND co.orderTime <![CDATA[   <=  ]]> #{endTime}
+            </if>
+            <if test="receiver != null and receiver != ''">
+                AND bou.shouHuoRen LIKE concat('%',#{receiver},'%')
+            </if>
+
+            <if test="receiptStatus != null and receiptStatus != ''">
+                AND co.receiptStatus = #{receiptStatus}
+            </if>
+            <if test="payStatus != null and payStatus != ''">
+                AND co.payStatus = #{payStatus}
+            </if>
+            <if test="sendOutStatus != null and sendOutStatus != ''">
+                AND co.sendOutStatus = #{sendOutStatus}
+            </if>
+            <if test="returnedPurchaseStatus != null and returnedPurchaseStatus != ''">
+                AND
+                <if test="returnedPurchaseStatus == 1">
+                    exists
+                </if>
+                <if test="returnedPurchaseStatus == 0">
+                    not exists
+                </if>
+                (select 1 from cm_returned_purchase c3 where c3.status = '1' and c3.orderID = co.orderID and c3.delFlag = 0)
+            </if>
+            <if test="refundType != null and refundType != ''">
+                AND
+                <if test="refundType == 0">
+                    co.refundType is null
+                </if>
+                <if test="refundType == 1">
+                    co.refundType = '1'
+                </if>
+                <if test="refundType == 2">
+                    co.refundType = '2'
+                </if>
+            </if>
+            <if test="orderRefundType != null and orderRefundType != ''">
+                <if test="orderRefundType == 0">
+                    AND (select count(1) from cm_returned_purchase crp where co.orderID = crp.orderID  and crp.delFlag = 0) = 0
+                </if>
+                <if test="orderRefundType == 1">
+                    AND (select count(1) from cm_returned_purchase crp where co.orderID = crp.orderID  and crp.delFlag = 0) > 0
+                </if>
+                <if test="orderRefundType == 11">
+                    AND (select count(1) from cm_returned_purchase crp where co.orderID = crp.orderID and crp.status = 1  and crp.delFlag = 0) > 0
+                </if>
+                <if test="orderRefundType == 12">
+                    AND (select count(1) from cm_returned_purchase crp where co.orderID = crp.orderID and crp.status = 2 and crp.delFlag = 0
+                    <if test="startRefundTime != null and startRefundTime != ''">
+                        AND crp.confirmReturnTime <![CDATA[  >=  ]]> #{startRefundTime}
+                    </if>
+                    <if test="endRefundTime != null and endRefundTime != ''">
+                        AND crp.confirmReturnTime <![CDATA[   <=  ]]> #{endRefundTime}
+                    </if>
+                    ) > 0
+                </if>
+                <if test="orderRefundType == 13">
+                    AND (select count(1) from cm_returned_purchase crp where co.orderID = crp.orderID and crp.status = 3 and crp.delFlag = 0) > 0
+                </if>
+            </if>
+            AND co.delFlag = 0
+        </where>
+        <choose>
+            <when test="page !=null and page.orderBy != null and page.orderBy != ''">
+                ORDER BY ${page.orderBy}
+            </when>
+            <otherwise>
+                ORDER BY co.orderID DESC, co.orderTime DESC
+            </otherwise>
+        </choose>
+    </select>
+
+    <select id="loadShopOrders" parameterType="string" resultType="NewShopOrder">
+		SELECT
+		cs.shopOrderID AS shopOrderID,
+		cs.shopOrderNo AS shopOrderNo,
+		cs.shopOrderNo AS shopOrderNo,
+		cs.itemCount AS itemCount,
+		cs.needPayAmount AS needPayAmount,
+		s.name AS shopName,
+		cs.status AS status,
+		cs.shopID AS shopID
+		FROM cm_shop_order cs
+		LEFT JOIN shop s ON cs.shopID = s.shopID
+		WHERE cs.orderNo = #{orderNo} AND cs.delFlag = 0
+	</select>
+
+    <select id="findHeUser" resultType="string">
+        SELECT name FROM cm_hehe_user WHERE userId = #{heUserId}
+    </select>
+
+</mapper>

+ 6 - 0
src/main/resources/mappings/modules/order/CmReturnedPurchaseMapper.xml

@@ -109,6 +109,12 @@
 			<if test="organizeID != null and organizeID != ''">
 				AND co.organizeID = #{organizeID}
 			</if>
+			<if test="orderType == 2">
+				AND co.orderType = 2
+			</if>
+			<if test="orderType != 2">
+				AND co.orderType != 2
+			</if>
             <if test="id != null and id != ''">
                 AND a.id = #{id}
             </if>

+ 1 - 0
src/main/resources/mappings/modules/order/OrderProductMapper.xml

@@ -93,6 +93,7 @@
 		  a.costPrice as newCostPrice,
 		  p.aliasName AS aliasName,
 		  a.singleShouldPayTotalTax AS singleShouldPayTotalTax,
+		  a.heUserId AS heUserId,
 		  p.productCategory as "productCategory"
 	</sql>
 

+ 825 - 0
src/main/webapp/WEB-INF/views/modules/hehe/heheNewOrderDetail.jsp

@@ -0,0 +1,825 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+    <title>订单列表</title>
+    <meta name="decorator" content="default"/>
+    <%--<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>--%>
+    <style type="text/css">
+        *{margin:0;padding:0}
+        a{list-style:none;text-decoration:none}
+        body{background-color:rgb(255,255,255)}
+        h3{line-height:20px;padding:20px 0 20px 15px;border-bottom:1px solid #CCCCCC}
+        .now-status p{padding:20px}
+        .now-status span{display:inline-block;width:160px;line-height:35px;margin-right:15px;cursor:pointer;border:1px solid #CCCCCC;text-align:center;border-radius:5px}
+        .buyInfo p{padding:15px 5px 0}
+        .buyInfo p label{width:60px;display:inline-block}
+        .buyInfo p span{padding-left:10px}
+        .table th{background-color:#CCCCCC}
+        .table th,.table td{font-weight:normal;border:1px solid #CCCCCC;height:35px;text-align:center}
+        .table td .div-img{box-sizing:border-box}
+        .table td .div-img img{width:100px;height:100px;vertical-align:middle}
+        .table td .div-img span{}
+        .div-order span{width:260px;display:inline-block;margin-right:50px}
+        .text-result p{padding-top:15px}
+        .text-cost p{padding:20px 0}
+        .moeny-cost p{padding:10px 0 0 0;text-align:left}
+        .moeny-cost p label{display:inline-block}
+        .Staging table{width:100%;border-collapse:collapse;margin-top:20px}
+        .Staging table th,.Staging table td{font-weight:normal;border:1px solid #000;height:35px;text-align:center;width:10%}
+        .change-info{position:fixed;top:0%;left:50%;transform:translateX(-50%);z-index:999;width:800px;background-color:#fff;box-shadow:0px 0px 15px #ccc}
+        .item-div label{width:260px;text-align:right;display:inline-block;margin-right:50px}
+        .item-div input{width:300px;line-height:35px;height:35px;box-sizing:border-box;border:1px solid #CCCCCC;display:inline-block}
+        .item-div select{width:90px;height:35px;margin-right:10px}
+        .item-div textarea{border:1px solid #CCCCCC;margin-top:20px;width:300px;height:80px;resize:none;display:block}
+        .layer-status span{display:inline-block;width:80px;line-height:35px;background-color:#00A6C7;text-align:center;color:#fff;cursor:pointer}
+        .layer-status span:nth-of-type(1){}
+        .layer-status span:nth-of-type(2){margin-left:72px}
+        .same-style{position:fixed;top:20%;left:50%;transform:translateX(-50%);width:500px;background-color:#fff;z-index:999;box-shadow:0 0 15px #666}
+        .reason-cancel label{margin-right:20px}
+        .reason-cancel textarea{width:270px;height:80px;resize:none;vertical-align:text-top;border:1px solid #CCCCCC}
+        .order-details-heading{background:#eee}
+        .order-details-heading td{white-space:nowrap;padding:0 10px}
+        .order-rows,.order-details-heading{width:100%;border-bottom:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc;color:#666;padding:10px;line-height:30px}
+        .order-details-heading{border-top:1px solid #ccc}
+        .order-details-heading span,.order-rows span{margin-right:80px}
+        .order-details-heading span{width:230px;margin-right:0px;display:inline-block}
+        .order-details-heading span label,.order-rows span label{font-weight:bold}
+        .order-rows .supplier-img{width:100px}
+        .operation-wrapper{position:relative}
+        .operation-btn{cursor:pointer}
+        .operation-block{background:#fff;width:125px;position:absolute;left:35px;top:30px;padding:10px;border:1px solid #666;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;z-index:999;display:none}
+        .operation-block a{display:block;padding:3px 0}
+        .print-wrapper{display:inline-block}
+        .supplier-product-name,.supplier-product-alias{width:200px;line-height:20px}
+        .supplier-product-info{width:50%;display:inline-block;position:relative;top:50%;transform:translateY(30%)}
+        .supplier-product-promotionInfo{width:20%;display:inline-block;position:relative;top:50%;transform:translateY(30%)}
+        .supplier-product-item{margin-bottom:10px}
+        .supplier-product-alias{display:inline-block;margin-top:5px}
+        .supplier-name{display:inline-block;vertical-align:middle;margin:0 10px}
+        #auditBox{padding:20px;line-height:30px}
+        #auditBox p{font-size:16px;margin:0 0 0 0}
+        #auditBox .note-div{font-size:16px}
+        .downSpan{display:block;margin-left:5px;margin-bottom:-8px}
+        .upSpan{display:block;margin-left:5px;margin-top:-8px}
+        .promotionsName{margin:2px}
+        .ladderPrice>span{text-decoration:underline;color:red}
+        .ladderPrice .list{display:none;position:absolute;z-index:999;background:#FFF;white-space:nowrap;border:1px solid #EEE;padding:10px 0;color:#333}
+        .ladderPrice:hover .list{display:block}
+        .ladderPrice .list span{margin:0 20px;width:60px;text-align:center;display:inline-block}
+        .ladderPrice .list span.price{color:red}
+        .weishaIcon {background:darkorange;color:white;margin:0 0px;padding:0 3px;font-style:normal;font-size: 12px; display:inline-block;border-radius:2px}
+    </style>
+    <script type="text/javascript" src="${ctxStatic}/QRCode/jquery.qrcode.min.js"></script>
+    <script type="text/javascript" src="static/common/clipboard.min.js"></script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/hehe/new/order/orderList">订单列表</a></li>
+    <li class="active"><a href="${ctx}/hehe/new/order/detail?id=${order.orderID}">订单详情</a></li>
+</ul>
+<sys:message content="${message}"/>
+<table class="order-details-heading">
+    <tr>
+        <td>下单时间: ${order.orderTime}</td>
+        <td>订单号(ID): ${order.orderNo}(${order.orderID})</td>
+        <td>返佣订单: ${(order.rebateOrder ne '0' || order.rebateFlag eq '1')?'是':'否'}</td>
+    </tr>
+    <tr>
+        <td>订单类型: <c:if test="${order.orderType == 1}">自主订单</c:if><c:if test="${order.orderType == 0}">协销订单</c:if></td>
+        <td>订单来源: ${fns:getDictLabel(order.orderSource,"bp_orderSource","" )}</td>
+        <td>订单状态:
+            <c:if test="${order.status eq 11 || order.status eq 12 || order.status eq 13 ||order.status eq 21 ||order.status eq 22 ||
+				order.status eq 23 || order.status eq 31 ||order.status eq 32 ||order.status eq 33}">
+                交易中
+            </c:if>
+            <c:if test="${order.status eq 0 || order.status eq 4 || order.status eq 5 || order.status eq 6 || order.status eq 7}">
+                ${fns:getDictLabel(order.status,"order_status","" )}
+                <c:if test="${order.status eq 0}">
+                    <span id="time" style="color: red"></span>
+                </c:if>
+            </c:if>
+        </td>
+    </tr>
+    <tr>
+        <c:if test="${order.status ne 0}">
+            <td>
+                收款状态:
+                <c:if test="${order.receiptStatus == 1}">
+                    <font color="red">待收款</font>
+                </c:if>
+                <c:if test="${order.receiptStatus == 2}">
+                    <font color="#ff8c00">部分收款</font>
+                </c:if>
+                <c:if test="${order.receiptStatus == 3}">
+                    <font color="green">已收款</font>
+                </c:if>
+                <%--抹平明细--%>
+                    <c:if test="${order.confirmType eq 1}">
+                        <c:if test="${order.receiptOrderFlag}">
+                            <font color="red">(一款多单:少收抹平金额未知)</font>
+                        </c:if>
+                        <c:if test="${!order.receiptOrderFlag}">
+                            <font color="red">(少收抹平:
+                                ¥<fmt:formatNumber value="${order.payableAmount - (empty order.orderReceivedAmount ? 0 : order.orderReceivedAmount)}" pattern="#0.00"/>)
+                            </font>
+                        </c:if>
+                    </c:if>
+                    <c:if test="${order.confirmType eq 2}">
+                        <c:if test="${order.receiptOrderFlag}">
+                            <font color="red">(一款多单:多收抹平金额未知)</font>
+                        </c:if>
+                        <c:if test="${!order.receiptOrderFlag}">
+                            <font color="red">(多收抹平:
+                                ¥<fmt:formatNumber value="${(empty order.orderReceivedAmount ? 0 : order.orderReceivedAmount) - order.payableAmount}" pattern="#0.00"/>)
+                            </font>
+                        </c:if>
+                    </c:if>
+                    <c:if test="${order.confirmType eq 3}">
+                        <c:if test="${order.receiptOrderFlag}">
+                             <font color="red">(一款多单:多收退余额)</font>
+                        </c:if>
+                        <c:if test="${!order.receiptOrderFlag}">
+                            <font color="red">(多收退余额&nbsp;&nbsp;${order.associationType eq 2 ? "(自动)" : ""}:
+                                ¥<fmt:formatNumber value="${(empty order.returnBalanceAmount ? 0 : order.returnBalanceAmount)}" pattern="#0.00"/>)
+                            </font>
+                        </c:if>
+                    </c:if>
+                </td>
+            <td>发货状态:
+                <c:if test="${order.sendOutStatus == 1}">
+                    <font color="red">待发货</font>
+                </c:if>
+                <c:if test="${order.sendOutStatus == 2}">
+                    <font color="#ff8c00">部分发货</font>
+                </c:if>
+                <c:if test="${order.sendOutStatus == 3}">
+                    <font color="green">已发货</font>
+                </c:if></td>
+            <td>付款状态:
+                <c:if test="${order.payStatus == 1}">
+                    <font color="red">待付款</font>
+                </c:if>
+                <c:if test="${order.payStatus == 2}">
+                    <font color="#ff8c00">部分付款</font>
+                </c:if>
+                <c:if test="${order.payStatus == 3}">
+                    <font color="green">已付款</font>
+                </c:if></td>
+            </td>
+        </c:if>
+    </tr>
+    <tr>
+        <c:if test="${order.status ne 0}">
+            <td>
+                退款状态:
+                <c:if test="${order.refundType == 0}">
+                    无退款
+                </c:if>
+                <c:if test="${order.refundType == 1}">
+                    部分退款
+                </c:if>
+                <c:if test="${order.refundType == 2}">
+                    已退款
+                </c:if>
+            </td>
+        </c:if>
+        <td>机构:${order.buyer}<c:if test="${order.organizeID == 3}"><em class="weishaIcon">维沙</em></c:if></td>
+        <td>收货人: ${order.bpOrderUserinfo.shouHuoRen}</td>
+    </tr>
+    <tr>
+        <td>手机: ${order.bpOrderUserinfo.mobile}</td>
+        <td>
+            地址: ${fns:appendLast(fns:appendLast1(order.bpOrderUserinfo.province,order.bpOrderUserinfo.city,order.bpOrderUserinfo.town), order.bpOrderUserinfo.address)}</td>
+        <fmt:setLocale value="zh_CN" scope="session"/>
+        <td>订单金额:<fmt:formatNumber value="${order.payTotalFee}" type="currency"/></td>
+    </tr>
+    <tr>
+        <td>
+            应收金额:<fmt:formatNumber value="${order.payableAmount}" type="currency"/>
+            <span style="color: red">
+                <c:if test="${order.balancePayFee gt 0}">
+                    <a href="${ctx}/user/cmUserBalanceRecord/userBalanceRecord?userId=${order.userID}" style="color: red;text-decoration: underline">
+                        (账户余额抵扣: <fmt:formatNumber value="${order.balancePayFee}" type="currency"/>)
+                    </a>
+                </c:if>
+                <c:if test="${order.balancePayFee le 0}">
+                        (账户余额抵扣: <fmt:formatNumber value="${order.balancePayFee}" type="currency"/>)
+                </c:if>
+
+
+            </span>
+        </td>
+        <td>
+            已收金额:
+            <c:if test="${order.receiptStatus eq 1}">
+                ¥0.00
+            </c:if>
+            <c:if test="${order.receiptStatus ne 1}">
+                <fmt:formatNumber value="${receiptAmount}" type="currency"/>
+            </c:if>
+            <c:if test="${order.receiptStatus == 3 && order.confirmType != null && order.confirmType != ''}">
+            </c:if>
+        </td>
+        <td>
+            退款金额(已完成):<fmt:formatNumber value="${returnValue}" type="currency"/>
+            <span style="color: red">
+                    (原<fmt:formatNumber value="${returnedPurchaseFee}" type="currency"/>,折扣取消
+                    <c:if test="${order.discountFee gt returnedPurchaseFee}"><fmt:formatNumber
+                            value="${returnedPurchaseFee}" type="currency"/></c:if>
+                    <c:if test="${order.discountFee le returnedPurchaseFee}"><fmt:formatNumber
+                            value="${order.discountFee}" type="currency"/></c:if>)
+                </span>
+        </td>
+    </tr>
+    <tr>
+        <td>
+            经理折扣:
+            <c:if test="${order.discountFee gt 0}">
+                <c:if test="${order.discountFee gt returnedPurchaseFee}">
+                    <fmt:formatNumber value="${order.discountFee - returnedPurchaseFee}" type="currency"/>
+                </c:if>
+                <c:if test="${order.discountFee le returnedPurchaseFee}">
+                    ¥0.00
+                </c:if>
+                <span style="color: red">
+                        (原<fmt:formatNumber value="${order.discountFee}" type="currency"/>,折扣取消
+                        <c:if test="${order.discountFee gt returnedPurchaseFee}">
+                            <fmt:formatNumber value="${returnedPurchaseFee}" type="currency"/>
+                        </c:if>
+                        <c:if test="${order.discountFee le returnedPurchaseFee}">
+                            <fmt:formatNumber value="${order.discountFee}" type="currency"/>
+                        </c:if>)
+                    </span>
+            </c:if>
+            <c:if test="${order.discountFee le 0}">¥0.00</c:if>
+        </td>
+        <td>运费:
+            <c:if test="${order.freight == 0}">
+                包邮
+            </c:if>
+            <c:if test="${order.freight == -1}">
+                到付
+            </c:if>
+            <c:if test="${order.freight == -2}">
+                仪器到付-产品包邮
+            </c:if>
+            <c:if test="${order.freight != -1 && order.freight != 0 && order.freight != -2}">
+                <fmt:formatNumber value="${order.freight}" type="currency"/>
+            </c:if>
+        </td>
+        <td style="position: relative;"><a class="operation-btn btn">功能</a>
+            <div class="operation-block">
+                <shiro:hasPermission name="order:order:edit">
+                    <%--包含订单充值商品就不显示--%>
+                    <c:if test="${empty order.rechargeGoods}">
+                        <c:if test="${order.status == 11 || order.status == 12 || order.status == 21 || order.status == 22 || order.status == 31 || order.status == 32}">
+                            <a href="${ctx}/order/toDeliveryPage?id=${order.orderID}">发货</a>
+                        </c:if>
+                        <c:if test="${order.receiptStatus == 2 && order.status != 6 && order.status != 7}">
+                            <a href="javascript:void(0);" onclick="collection(${order.orderID})">抹平收款</a>
+                        </c:if>
+                    </c:if>
+                    <c:if test="${(order.organizeID == 0 or order.organizeID > 2) && order.status == 11 && order.payStatus == 1}">
+                        <a href="javascript:void(0);"
+                           onclick="modelShow('${order.orderID}')">编辑经理折扣</a>
+                    </c:if>
+                </shiro:hasPermission>
+                <shiro:hasPermission name="order:order:applyrefound">
+                    <c:if test="${order.status == 12 || order.status == 13 || order.status == 21 || order.status == 22 || order.status == 23 || order.status == 31 || order.status == 32 || order.status == 33 || order.status == 4 || order.status == 5}">
+                        <%--  返佣订单不能申请退款(退货) --%>
+                        <c:if test="${order.rebateOrder == '0'}">
+                            <c:if test="${order.toAudit eq 1}">
+                                <%--如果存在审核收款则不允许申请:1不能申请,其它可以申请--%>
+                                <c:if test="${order.toAudit eq 1}">
+                                    <%--弹窗提示--%>
+                                    <a href="#" onclick="return alertx('订单存在未审核的收款,暂不能退款。请将收款审核通过后再操作退款。')">申请退款</a>
+                                </c:if>
+                            </c:if>
+                            <c:if test="${order.toAudit ne 1}">
+                                <c:if test="${order.applyReturnedPurchaseFlag eq 1}">
+                                    <a href="${ctx}/bulkpurchase/cmRefundsProduct/applyRefound.rpc?orderID=${order.orderID}"
+                                       <c:if test="${order.status == 21 || order.status == 22 || order.status == 23}">onclick="return confirmx('部分收款的订单、申请退款只能申请全部退款!', this.href)"
+                                    </c:if>
+                                    >申请退款</a>
+                                </c:if>
+                                <c:if test="${order.applyReturnedPurchaseFlag ne 1}">
+                                    <font title="存在未处理完的申请,请前往退款列表处理!">申请退款</font>
+                                </c:if>
+                            </c:if>
+                        </c:if>
+                    </c:if>
+                </shiro:hasPermission>
+
+                <shiro:hasPermission name="order:order:edit">
+                    <c:if test="${order.status ne 0}">
+                        <a href="${ctx}/order/printOrder?orderID=${order.orderID}">打印发货单</a>
+                    </c:if>
+                    <a href="${ctx}/order/exportOrder?id=${order.orderID}">订单导出</a>
+                    <a href="${ctx}/order/cmOrderRemark/remarksViewNew.rpc?orderID=${order.orderID}&source=2">订单备注</a>
+                    <%--包含订单充值商品就不显示--%>
+                    <c:if test="${empty order.rechargeGoods}">
+                        <c:if test="${order.status ne 0 && order.status ne 11 && order.status ne 21 && order.status ne 6 && order.status ne 4}">
+                            <a href="${ctx}/order/logisticsDetails?orderID=${order.orderID}">发货记录</a>
+                        </c:if>
+                        <c:if test="${order.status ne 0 && order.status ne 11 && order.status ne 6}">
+                            <a href="${ctx}/bulkpurchase/cmRefundsProduct/toRefundRecord.rpc?orderID=${order.orderID}&from=2">收退款记录
+                            </a>
+                        </c:if>
+                        <c:if test="${order.status ne 0 && order.status ne 11 && order.status ne 6}">
+                            <a href="${ctx}/bulkpurchase/cmRefundsProduct/toRecturnRecordByOrderID.rpc?orderID=${order.orderID}">退款(退货)记录
+                            </a>
+                        </c:if>
+                    </c:if>
+                </shiro:hasPermission>
+            </div>
+        </td>
+    </tr>
+    <c:if test="${order.promotionFullReduction gt 0 || order.promotionalGiftsCount gt 0}">
+        <tr>
+            <c:if test="${order.promotionFullReduction gt 0}">
+                <td>促销满减:¥${order.promotionFullReduction}</td>
+            </c:if>
+            <c:if test="${order.promotionalGiftsCount gt 0}">
+                <td>赠品总数:${order.promotionalGiftsCount}</td>
+            </c:if>
+        </tr>
+    </c:if>
+    <c:if test="${order.discountFee gt 0 and returnedPurchaseFee gt 0}">
+        <tr>
+            <td style="color: red">说明:因退货,经理折扣收回,用于抵扣退款。</td>
+        </tr>
+    </c:if>
+</table>
+<textarea id="copyValue" style="display: none"></textarea>
+<c:forEach items="${order.newShopOrders}" var="shopOrder">
+    <div class="order-rows">
+        <span><label>下单时间:</label>${order.orderTime}</span>
+        <span><label>子订单号(ID):</label>${shopOrder.shopOrderNo}(${shopOrder.shopOrderID})</span>
+        <span><label>子订单金额:</label><fmt:formatNumber value="${shopOrder.needPayAmount}" type="currency"/></span>
+        <c:if test="${shopOrder.postFeeCos eq '0'}">
+            <div class="print-wrapper">
+                <a href="${ctx}/order/printOrder?shopOrderID=${shopOrder.shopOrderID}">打印</a>
+                <a href="${ctx}/order/exportSubOrder?shopOrderID=${shopOrder.shopOrderID}">导出</a>
+                <c:if test="${order.status ne '0'}">
+                    <a onclick="copyText('${shopOrder.shopOrderID}')" style="cursor:pointer;">供应商订单二维码</a>
+                </c:if>
+            </div>
+            <c:if test="${order.status ne 0 && order.status ne 11}">
+                <div class="delivery-wrapper">
+                        <span>发货状态:
+                            <c:if test="${shopOrder.sendOutStatus == 1}">
+                                <font color="red">待发货</font>
+                            </c:if>
+                            <c:if test="${shopOrder.sendOutStatus == 2}">
+                                <font color="#ff8c00">部分发货</font>
+                            </c:if>
+                            <c:if test="${shopOrder.sendOutStatus == 3}">
+                                <font color="green">已发货</font>
+                            </c:if>
+                        </span>
+                    <span>付款状态:<c:if test="${shopOrder.payStatus == 1}">
+                        <font color="red">待付款</font>
+                    </c:if>
+                                        <c:if test="${shopOrder.payStatus == 2}">
+                                            <font color="#ff8c00">部分付款</font>
+                                        </c:if>
+                                        <c:if test="${shopOrder.payStatus == 3}">
+                                            <font color="green">已付款</font>
+                                        </c:if></span>
+                    <c:if test="${shopOrder.payStatus == 3 or shopOrder.payStatus == 2}">
+                                <span>已付金额: <fmt:formatNumber value="${shopOrder.payed}" type="currency"/>
+                                </span>
+                    </c:if>
+                </div>
+            </c:if>
+            <c:if test="${not empty shopOrder.note}">
+                <div><label>留言:</label>${shopOrder.note}</div>
+            </c:if>
+        </c:if>
+    </div>
+
+    <div class="order-rows">
+        <span><label>供应商:</label>${shopOrder.shopName}</span>
+        <c:if test="${shopOrder.shopPromotion ne null && shopOrder.shopPromotion.type eq 3}">
+            <c:if test="${shopOrder.shopPromotion.mode eq 2}">
+                <span><label style="background-color: #F60;color: white">${shopOrder.shopPromotion.name}</label> 满<fmt:formatNumber value="${shopOrder.shopPromotion.touchPrice}" pattern="#,##0.00" maxFractionDigits="2"/>,减<fmt:formatNumber value="${shopOrder.shopPromotion.reducedPrice}" pattern="#,##0.00" maxFractionDigits="2"/></span>
+            </c:if>
+            <c:if test="${shopOrder.shopPromotion.mode eq 3}">
+                <span><label style="background-color: purple;color: white">${shopOrder.shopPromotion.name}</label> 满<fmt:formatNumber value="${shopOrder.shopPromotion.touchPrice}" pattern="#,##0.00" maxFractionDigits="2"/>,赠送商品</span>
+            </c:if>
+        </c:if>
+        <div>
+            <c:forEach items="${shopOrder.newOrderProducts}" var="op">
+                <div class="supplier-product-item">
+                    <%--二手订单详情--%>
+                    <c:if test="${order.secondHandOrderFlag eq 1}">
+                        <a href="${fns:getConfig('wwwServer')}product-${op.productID}.html" target="_blank">
+                        <img class="supplier-img" src="${op.image}"/>
+                        </a>
+                    </c:if>
+                    <%--正常订单详情--%>
+                    <c:if test="${order.secondHandOrderFlag ne 1}">
+                        <a href="${fns:getConfig('wwwServer')}product-${op.productID}.html" target="_blank">
+                         <img class="supplier-img" src="${op.image}"/>
+                        </a>
+                    </c:if>
+                    <div class="supplier-name">
+                        <c:if test="${op.name eq op.aliasName}">
+                            <div class="supplier-product-name">${op.name}</div>
+                        </c:if>
+                        <c:if test="${op.name ne op.aliasName}">
+                            <div class="supplier-product-name">${op.name}</div>
+                            <div class="supplier-product-alias">${op.aliasName}</div>
+                        </c:if>
+                        <c:if test="${op.productType eq 1}">
+                            <div class="supplier-product-name"><label style="color: red">协商赠品</label></div>
+                        </c:if>
+                        <c:if test="${op.productType eq 2}">
+                            <div class="supplier-product-name"><label style="color: red">促销赠品</label></div>
+                        </c:if>
+                        <c:if test="${op.includedTax eq 1}">
+                            <div class="supplier-product-name"><label style="color: red">(含税)</label></div>
+                        </c:if>
+                        <c:if test="${op.includedTax ne '' and op.includedTax eq 0}">
+                            <c:if test="${op.invoiceType eq 3}">
+                                <div class="supplier-product-name"><label style="color: red">(不含税-不能开票)</label></div>
+                            </c:if>
+                            <c:if test="${op.invoiceType eq 2 or op.invoiceType eq 1}">
+                                <div class="supplier-product-name"><label style="color: red">(不含税-能开票)</label></div>
+                            </c:if>
+                        </c:if>
+                    </div>
+                    <c:if test="${op.productID ne 999}">
+                        <div class="supplier-product-info">
+                            <span>单价:
+                                <c:if test="${op.productPromotion.mode eq 1}">
+                                    <label style="text-decoration: line-through"><fmt:formatNumber value="${op.price}" type="currency"/></label></span>
+                                </c:if>
+                                <c:if test="${op.productPromotion.mode ne 1}">
+                                    <fmt:formatNumber value="${op.price}" type="currency"/>
+                                </c:if>
+                                <c:if test="${op.ladderPriceFlag eq 1 || op.isActProduct eq 2}">
+                                    <a href="javascript:;" class="ladderPrice"><span> (阶梯价格)</span>
+                                        <c:if test="${not empty op.orderProductLadderPriceList}">
+                                            <div class="list">
+                                                <p><span>起订量</span><span>价格</span></p>
+                                                <c:forEach items="${op.orderProductLadderPriceList}" var="ladderPrice">
+                                                    <p data-num="${ladderPrice.buyNum}"><span>${ladderPrice.buyNumRangeShow}</span><span class="price">${ladderPrice.buyPrice}</span></p>
+                                                </c:forEach>
+                                            </div>
+                                        </c:if>
+                                    </a>
+                                </c:if>
+                            </span>
+                            <span>折扣: ${op.discount}%</span>
+                            <span>折后单价:
+                                <c:if test="${op.productPromotion.mode eq 1}">
+                                    <label style="text-decoration: line-through"><fmt:formatNumber value="${op.discountPrice}" type="currency"/></label></span>
+                                </c:if>
+                                <c:if test="${op.productPromotion.mode ne 1}">
+                                    <fmt:formatNumber value="${op.discountPrice}" type="currency"/></span>
+                                </c:if>
+                            <span>数量:  x${op.num}</span>
+                            <br>
+                            <span>税率:  ${(op.includedTax != '' and op.includedTax eq 0 and op.invoiceType eq 3)?'---': op.taxRate ne null?op.taxRate:0.0}%</span>
+                            <span>税费:  ${(op.includedTax eq 1 or (op.includedTax != '' and op.includedTax eq 0 and op.invoiceType eq 3))?'---': empty op.totalAddedValueTax ?0.00:(op.totalAddedValueTax)}</span>
+                            <span>总额:  <fmt:formatNumber value="${op.totalFee}" type="currency"/></span>
+                            <c:if test="${order.sendOutStatus == 2 || order.sendOutStatus == 3}">
+                                <span>已发/已收  ${(op.num == null ? 0 : op.num)+ (op.presentNum == null ? 0 : op.presentNum)- (op.notOutStore == null ? 0 : op.notOutStore)}/${op.receivedNum}</span>
+                            </c:if>
+                            <c:if test="${fns:hasReturn(order.status)}">
+                                <span>退款(退货)中/已完成  ${op.returningNum}/${op.returnedNum}</span>
+                            </c:if>
+                            <c:if test="${op.heUserId > 0}">
+                                <span><font color="red">分销者:  ${op.heUserName}</font></span>
+                            </c:if>
+                        </div>
+                        <c:if test="${op.productPromotion ne null}">
+                            <c:if test="${op.productPromotion.type eq 2}">
+                                <div class="supplier-product-promotionInfo">
+                                    <table>
+                                        <tr >
+                                            <td rowspan="2">
+                                                <c:if test="${op.productPromotion.mode eq 2}">
+                                                    <label style="background-color: #F60;color: white"><label class="promotionsName">${op.productPromotion.name}</label></label>
+                                                </c:if>
+                                                <c:if test="${op.productPromotion.mode eq 3}">
+                                                    <label style="background-color: purple;color: white"><label class="promotionsName">${op.productPromotion.name}</label></label>
+                                                </c:if>
+                                            </td>
+                                            <td>
+                                                <span class="downSpan">${op.productPromotion.description}</span>
+                                                <c:if test="${op.productPromotion.mode eq 2}">
+                                                    <span class="upSpan"> 满<fmt:formatNumber value="${op.productPromotion.touchPrice}" pattern="#,##0.00" maxFractionDigits="2"/>,减<fmt:formatNumber value="${op.productPromotion.reducedPrice}" pattern="#,##0.00" maxFractionDigits="2"/></span>
+                                                </c:if>
+                                                <c:if test="${op.productPromotion.mode eq 3}">
+                                                    <span class="upSpan"> 满<fmt:formatNumber value="${op.productPromotion.touchPrice}" pattern="#,##0.00" maxFractionDigits="2"/>,赠送商品</span>
+                                                </c:if>
+                                            </td>
+                                        </tr>
+                                    </table>
+                                </div>
+                            </c:if>
+                            <c:if test="${op.productPromotion.type eq 1}">
+                                <div class="supplier-product-promotionInfo">
+                                    <table>
+                                        <tr>
+                                            <c:if test="${op.productPromotion.mode eq 1}">
+                                                <td><label style="background-color: green;color: white"><label class="promotionsName">${op.productPromotion.name}</label></label></td>
+                                                <td> 优惠价: <label style="color: red"><fmt:formatNumber value="${op.productPromotion.touchPrice}" pattern="#,##0.00" maxFractionDigits="2"/></label></td>
+                                            </c:if>
+                                            <c:if test="${op.productPromotion.mode eq 2}">
+                                                <td><label style="background-color: #F60;color: white"><label class="promotionsName">${op.productPromotion.name}</label></label></td>
+                                                <td> 满<fmt:formatNumber value="${op.productPromotion.touchPrice}" pattern="#,##0.00" maxFractionDigits="2"/>,减<fmt:formatNumber value="${op.productPromotion.reducedPrice}" pattern="#,##0.00" maxFractionDigits="2"/></td>
+                                            </c:if>
+                                            <c:if test="${op.productPromotion.mode eq 3}">
+                                                <td><label style="background-color: purple;color: white"><label class="promotionsName">${op.productPromotion.name}</label></label></td>
+                                                <td> 满<fmt:formatNumber value="${op.productPromotion.touchPrice}" pattern="#,##0.00" maxFractionDigits="2"/>,赠送商品</td>
+                                            </c:if>
+                                        </tr>
+                                    </table>
+                                </div>
+                            </c:if>
+                        </c:if>
+                    </c:if>
+                    <c:if test="${op.productID eq 999}">
+                        <span>数量:  x${op.num}</span>
+                    </c:if>
+                    <br>
+                </div>
+            </c:forEach>
+        </div>
+    </div>
+
+</c:forEach>
+<script type="text/javascript">
+    (function () {
+        $('body').click(function (e) {
+            var target = $(e.target),
+                $block = $('.operation-block');
+            if (target.is('.operation-btn')) {
+                if ($block.css('display') === 'none') {
+                    $block.show();
+                } else {
+                    $block.hide();
+                }
+            }
+            if (!target.is('.operation-block') && !target.is('.operation-btn')) {
+                $block.hide();
+            }
+        });
+
+        $('.clauseId').each(function () {
+            var self = $(this);
+            if (!self.prop("checked")) {
+                self.parent().hide();
+            } else {
+                self.hide();
+            }
+        });
+
+        $('#invoice1, #invoice2, #invoice3').each(function () {
+            var self = $(this);
+            if (!self.prop("checked")) {
+                self.next().remove();
+                self.remove();
+            } else {
+                self.remove();
+            }
+        })
+    })();
+
+    function openClauseInfo(index) {
+        var content = $("#clauseContent" + index).val();
+        if (content == '') {
+            return false;
+        }
+        $.jBox(content, {
+            title: $("#clauseName" + index).val(),
+            width: $(top.document).width() - 440,
+            height: $(top.document).height() - 240,
+            buttons: {'关闭': true}
+        });
+    }
+
+    //编辑经理折扣
+    function modelShow(orderID) {
+        top.$.jBox("iframe:${ctx}/order/DiscountFee?orderID=" + orderID, {
+            iframeScrolling: 'yes',
+            top: 150,
+            width: 480,
+            height: 250,
+            persistent: true,
+            title: "编辑经理折扣",
+            buttons: {"确认": '1', "取消": '-1'},
+            submit: function (v, h, f) {
+                //确定
+                var $jboxFrame = top.$('#jbox-iframe');
+                var $mainFrame = top.$('#mainFrame');
+                if ('1' == v && 1 == $jboxFrame.size() && 1 == $mainFrame.size()) {
+                    var rechargeInfo = $jboxFrame[0].contentWindow.submit();
+                    var split = rechargeInfo.split(",");
+                    var payTotalFee = split[0];
+                    var discountFee = split[1];
+                    //取值,然后调用后台接口传入参数,最后刷新页面
+                    if (payTotalFee <= 0) {
+                        return false;
+                    }
+                    $.post("${ctx}/order/saveDiscountFee", {
+                        'discountFee': discountFee,
+                        'orderID': orderID,
+                        'payTotalFee': payTotalFee
+                    }, function (data) {
+                        if (true == data.success) {
+                            refresh(data.msg);
+                        } else {
+                            alertx(data.msg, 1000);
+                        }
+                    }, "JSON");//这里返回的类型有:json,html,xml,text
+                }
+                return true;
+            }, closed: function () {/* 窗口关闭后执行的函数 */
+            }
+        });
+    }
+
+    //订单商品备注
+    function remarks(orderID, shopOrderID) {
+        top.$.jBox("iframe:${ctx}/order/cmOrderRemark/remarksView?orderID=" + orderID + "&shopOrderID=" + shopOrderID, {
+            iframeScrolling: 'yes',
+            top: 150,
+            width: 400,
+            height: 480,
+            persistent: true,
+            title: "订单备注信息",
+            buttons: {"确认": '1', "关闭": '-1'},
+            submit: function (v, h, f) {
+                //确定
+                var $jboxFrame = top.$('#jbox-iframe');
+                var $mainFrame = top.$('#mainFrame');
+                if ('1' == v && 1 == $jboxFrame.size() && 1 == $mainFrame.size()) {
+                    var remarks = $jboxFrame[0].contentWindow.submit();
+                    if ('' == remarks) {
+                        alertx("备注信息不能为空!!!")
+                        return false;
+                    }
+                    saveRemarks(remarks, orderID, shopOrderID);
+                    return true;
+                }
+                return true;
+            },
+            loaded: function (h) {   //隐藏滚动条
+                $(".jbox-content", top.document).css("overflow-y", "hidden");
+            }
+        });
+    }
+
+    function saveRemarks(remarks, orderID, shopOrderID) {
+        $.post("${ctx}/order/cmOrderRemark/addRemarks", {
+            "remarks": remarks, "orderID": orderID, "shopOrderID": shopOrderID
+        }, function (data) {
+            if (true == data.success) {
+                refresh(data.msg);
+            } else {
+                $.jBox.tip(data.msg, 'error');
+            }
+        }, "JSON");//这里返回的类型有:json,html,xml,text
+    }
+
+    // 二维码分享
+    function QRCodewin(orderId, orderNo) {
+        var html = '<div style="padding:10px;">订单号:' + orderNo + '' +
+            '<div class="code" style="text-align: center;"></div>' +
+            '</div>';
+        $.jBox(html, {
+            title: "订单二维码分享",
+            width: $(top.document).width() - 1700,
+            height: $(top.document).height() - 1600,
+            buttons: {'关闭': true}
+        });
+
+        var enCodeRedirectUrl;
+        var redirectUrl = '${fns:getConfig('caimei.crm.server')}oauth.action?orderId=' + orderId;
+        $.ajax({
+            url: "${ctx}/bulkpurchase/contractOrder/enCode",
+            data: {"redirectUrl": redirectUrl},
+            type: "POST",
+            async: false,
+            success: function (data) {
+                enCodeRedirectUrl = data.enCodeRedirectUrl;
+            }
+        });
+        var shareUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=${fns:getConfig('weixin.appId')}&redirect_uri=' + enCodeRedirectUrl + '&response_type=code&scope=snsapi_base&state=bulkpurchase#wechat_redirect';
+        $('.code').qrcode({
+            width: 150,
+            height: 150,
+            text: shareUrl
+        });
+    }
+
+    //刷新页面
+    function refresh(msg) {
+        $.jBox.tip(msg, 'info', {timeout: 1000});
+        setTimeout(function () {
+            window.location.href = "${ctx}/order/detail?id=${order.orderID}"
+        },1000)
+    }
+</script>
+<script>
+    if ("${time}" != "") {
+        window.onload = clock;
+
+        function clock() {
+            var today = new Date(),//当前时间
+                h = today.getHours(),
+                m = today.getMinutes(),
+                s = today.getSeconds();
+            var stopTime = new Date("${time}"),//结束时间
+                stopH = stopTime.getHours(),
+                stopM = stopTime.getMinutes(),
+                stopS = stopTime.getSeconds();
+            var shenyu = stopTime.getTime() - today.getTime(),//倒计时毫秒数
+                shengyuD = parseInt(shenyu / (60 * 60 * 24 * 1000)),//转换为天
+                D = parseInt(shenyu) - parseInt(shengyuD * 60 * 60 * 24 * 1000),//除去天的毫秒数
+                shengyuH = parseInt(D / (60 * 60 * 1000)),//除去天的毫秒数转换成小时
+                H = D - shengyuH * 60 * 60 * 1000,//除去天、小时的毫秒数
+                shengyuM = parseInt(H / (60 * 1000)),//除去天的毫秒数转换成分钟
+                M = H - shengyuM * 60 * 1000;//除去天、小时、分的毫秒数
+            S = parseInt((shenyu - shengyuD * 60 * 60 * 24 * 1000 - shengyuH * 60 * 60 * 1000 - shengyuM * 60 * 1000) / 1000)//除去天、小时、分的毫秒数转化为秒
+            document.getElementById("time").innerHTML = ("(剩余" + shengyuD + "天" + shengyuH + "小时" + shengyuM + "分" + S + "秒)" + "<br>");
+            setTimeout(clock, 500);
+        }
+    }
+
+    function copyText(shopOrderID) {
+        $.post("${ctx}/order/shopOrderLink", {'shopOrderId': shopOrderID}, function (data) {
+            if (data.success) {
+                var imageSrc = "data:image/jpeg|png|gif;base64," + data.imageBuffer;
+                top.$.jBox.info('<img  width="150px" height="150px" style="margin-left: 65px;" src=' + imageSrc + '>', '小程序扫码发货');
+            } else {
+                alertx(data.msg);
+            }
+        });
+
+
+    }
+
+    $(document).ready(function () {
+        if ($(".operation-block").length > 0) {
+            var length = $(".operation-block").length;
+            for (var i = 0; i < length; i++) {
+                var b = $(".operation-block").get(i);
+                if ($(b).html().trim() == '') {
+                    $(b).hide();
+                    $(b).prev().hide();
+                }
+            }
+        }
+        if ($('.supplier-product-name').html() == $('.supplier-product-alias').html()) {
+            $('.supplier-product-alias').remove();
+        }
+    })
+
+    //抹平收款
+    function collection(orderId) {
+        $.post("${ctx}/order/gatheringData", {
+            'orderId': orderId
+        }, function (data) {
+            if (true == data.success) {
+                var html = "<div id='auditBox'>" +
+                    "<P>确定抹平收款吗?抹平后该订单将变为已收款状态</p>" +
+                    "<P><span>订单金额:<b>¥" + Number(data.payTotalFee).toFixed(2) + "</b></span></p>" +
+                    "<P><span>应收金额:<b>¥" + Number(data.payableAmount).toFixed(2) + "</b><span style='color:#FF0000'>(账户余额抵扣: ¥<b>" + Number(data.balancePayFee).toFixed(2) + "</b>)</span></span></p>" +
+                    "<P><span>已收金额:<b>¥" + Number(data.associateAmount).toFixed(2) + "</b></span></p>" +
+                    "<div><div class='note-div'><span style='color:#FF0000'>*</span>备注</div></div>" +
+                    "<textarea name='auditNote' style='width: 100%;min-height:60px;'></textarea>" +
+                    "<div class='note-div' style='display: none' id='noteError'><span style='color:#FF0000'>请填写备注</span> </div>" +
+                    "</div>";
+                $.jBox(html, {
+                    title: "确认提示", width: 500, height: 400, buttons: {"确定": '1', "取消": '-1'},
+                    submit: function (v, h, f) {
+                        if ('1' == v) {
+                            var content = document.getElementsByName("auditNote")[0].value;
+                            if (content == '' || content == null) {
+                                document.getElementById('noteError').style.display = 'block';
+                                return false;
+                            }
+                            $.post("${ctx}/order/smoothOutCollection", {
+                                'orderID': orderId,
+                                'balanceAccountsRemark': content
+                            });
+                            window.location.href = "${ctx}/order/detail?id="+orderId;
+                        }
+                    }
+                });
+
+            } else {
+                $.jBox.tip(data.msg, 'error');
+            }
+        }, "JSON");//这里返回的类型有:json,html,xml,text
+    };
+</script>
+</body>
+</html>

+ 974 - 0
src/main/webapp/WEB-INF/views/modules/hehe/heheNewOrderList.jsp

@@ -0,0 +1,974 @@
+<%@ page import="java.util.Date" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+    <title>订单管理</title>
+    <meta name="decorator" content="default"/>
+    <style type="text/css">
+        .table th {
+            text-align: center;
+        }
+
+        .table td {
+            text-align: center;
+        }
+
+        .data-title {
+            width: 100%;
+            display: table;
+        }
+
+        .data-title ul li {
+            word-break: break-all;
+            display: table-cell;
+            width: 100px;
+            border: 1px solid #000;
+            text-align: center;
+            height: 35px;
+            vertical-align: middle;
+            border-right: 0;
+            border-bottom: 0
+        }
+
+        .data-title ul {
+            margin-bottom: 0 !important;
+            display: table-row;
+        }
+
+        .data-title ul li:last-of-type {
+            width: 120px;
+            border-right: 1px solid #000000;
+        }
+
+        .data-title ul:last-of-type li {
+            border-bottom: 1px solid #000000
+        }
+
+        .data-title ul li:nth-child(6) {
+            width: 80px
+        }
+
+        .spileOrder li:nth-of-type(1) {
+            position: relative
+        }
+
+        .san {
+            width: 10px;
+            height: 10px;
+            border-top: 2px solid #000;
+            border-right: 2px solid #000;
+            transform: rotate(45deg);
+            position: absolute;
+            right: -2px;
+            top: 50%;
+            margin-top: -5px;
+            cursor: pointer
+        }
+
+        .red-waring {
+            margin: 0 !important;
+            background-color: #f3f3f3 !important;
+        }
+
+        .red-waring li {
+            border-color: red !important;
+        }
+
+        #biao1 {
+            position: absolute;
+            left: -9999px;
+            top: -9999px;
+            z-index: -99;
+            width: 1px;
+            height: 1px;
+        }
+
+        .operation-btn {
+            cursor: pointer;
+        }
+
+        .operation-block {
+            background: #fff;
+            position: absolute;
+            right: 2px;
+            padding: 10px;
+            border: 1px solid #666;
+            -webkit-border-radius: 5px;
+            -moz-border-radius: 5px;
+            border-radius: 5px;
+            z-index: 999;
+            display: none;
+        }
+
+        .operation-block a {
+            display: block;
+            padding: 3px 0;
+        }
+
+        .refund-selector {
+            width: 150px;
+            height: 26px;
+            line-height: 26px;
+            text-indent: 10px;
+            background: #fff;
+            display: inline-block;
+            -webkit-border-radius: 3px;
+            -moz-border-radius: 3px;
+            border-radius: 3px;
+            border: 1px solid #ccc;
+            vertical-align: middle;
+            position: relative;
+            cursor: pointer;
+        }
+
+        .refund-selector ul {
+            z-index: 999;
+        }
+
+        .refund-selector li {
+            width: 100%;
+            text-indent: 10px;
+        }
+
+        .refund-selector li:hover {
+            background: #3875d7;
+            color: #fff;
+        }
+
+        .refund-arrow {
+            display: inline-block;
+            width: 18px;
+            height: 100%;
+            position: absolute;
+            right: 0;
+            top: 0;
+            border-left: 1px solid #aaa;
+            border-radius: 0 4px 4px 0;
+            background-clip: padding-box;
+            background: #eee;
+            background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
+            background-image: -webkit-linear-gradient(center bottom, #ccc 0, #eee 60%);
+            background-image: -moz-linear-gradient(center bottom, #ccc 0, #eee 60%);
+            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#cccccc', GradientType=0);
+            background-image: linear-gradient(top, #ccc 0, #eee 60%);
+        }
+
+        .refund-arrow b {
+            display: block;
+            width: 100%;
+            height: 100%;
+            background: url('/static/jquery-select2/3.4/select2.png') no-repeat 0 1px;
+        }
+
+        .refund-block1, .refund-block2 {
+            width: 100%;
+            position: absolute;
+            background: #fff;
+            -webkit-border-radius: 3px;
+            -moz-border-radius: 3px;
+            border-radius: 3px;
+            border: 1px solid #ccc;
+            margin: 0;
+            color: #666;
+            display: none;
+        }
+
+        .refund-more {
+            position: relative;
+        }
+
+        .refund-block1 {
+            top: 26px;
+        }
+
+        .refund-block2 {
+            left: 100%;
+            top: 0;
+        }
+
+        .refund-selector .refund-more:hover .refund-block2 {
+            display: block;
+        }
+
+        #searchForm {
+            line-height: 40px;
+        }
+
+        #searchForm .ul-form {
+            overflow: visible;
+        }
+
+        #searchForm {
+            white-space: nowrap;
+        }
+
+        #searchForm label {
+            margin-top: 15px;
+        }
+
+        .ul-form {
+            white-space: nowrap;
+            margin-left: -10px !important;
+        }
+
+        .ul-form label {
+            width: 90px;
+            text-align: right;
+        }
+
+        .time-space-symbols {
+            width: 100px;
+            display: inline-block;
+            text-align: center;
+        }
+
+        #btnSubmit {
+            width: 128px;
+            margin-left: 152px;
+        }
+
+        .select-ele {
+            width: 177px;
+        }
+
+        #auditBox {
+            padding: 20px;
+            line-height: 30px
+        }
+
+        #auditBox p {
+            font-size: 16px;
+            margin: 0 0 0 0;
+        }
+
+        #auditBox .note-div {
+            font-size: 16px;
+        }
+
+        .weishaIcon {
+            background: darkorange;
+            color: white;
+            margin: 0 0px;
+            padding: 0 3px;
+            font-style: normal;
+            font-size: 12px;
+            display: inline-block;
+            border-radius: 2px
+        }
+    </style>
+    <script type="text/javascript" src="${ctxStatic}/QRCode/jquery.qrcode.min.js"></script>
+    <script type="text/javascript" src="static/common/clipboard.min.js"></script>
+    <script type="text/javascript">
+        function copyUrl2() {
+            var Url2 = document.getElementById("biao1");
+            Url2.select(); // 选择对象
+            document.execCommand("Copy"); // 执行浏览器复制命令
+//            alert("已复制好,可贴粘。");
+        }
+
+        $(document).ready(function () {
+            var lab = '';
+            var val = '';
+            var startRefundTime = $('#startRefundTime');
+            var endRefundTime = $('#endRefundTime');
+            startRefundTime.attr('disabled', 'disabled');
+            endRefundTime.attr('disabled', 'disabled');
+            startRefundTime.val('');
+            endRefundTime.val('');
+            switch ('${orderRefundType}') {
+                case '':
+                    lab = '全部';
+                    val = '';
+                    break;
+                case '0':
+                    lab = '无';
+                    val = '0';
+                    break;
+                case '1':
+                    lab = '全部状态';
+                    val = '1';
+                    break;
+                case '11':
+                    lab = '退款(退货)中';
+                    val = '11';
+                    break;
+                case '12':
+                    lab = '已完成';
+                    val = '12';
+                    startRefundTime.removeAttr('disabled');
+                    endRefundTime.removeAttr('disabled');
+                    startRefundTime.val('${startRefundTime}');
+                    endRefundTime.val('${endRefundTime}');
+                    break;
+                case '13':
+                    lab = '已取消';
+                    val = '13';
+                    break;
+                default:
+            }
+            $("#orderRefundType").val(val);
+            $('.refund-val').text(lab);
+            $('body').click(function (e) {
+                var target = $(e.target),
+                    opBlockEle = target.siblings('.operation-block');
+                if ((target.is('.operation-btn') && opBlockEle.css('display') == 'block') ||
+                    (!target.is('.operation-block') && !target.is('.operation-btn'))) {
+                    $('.operation-block').hide();
+                } else {
+                    $('.operation-block').hide();
+                    opBlockEle.show();
+                }
+            });
+
+            $('.refund-selector').on('click', function () {
+                var block1 = $('.refund-block1');
+                if (block1.css('display') === 'none') {
+                    $('.refund-block1').show();
+                }
+            });
+
+            $('.refund-options').on('click', function (e) {
+                var val = $(this).text();
+                $("#orderRefundType").val($(this).data('v'));
+                var startRefundTime = $('#startRefundTime');
+                var endRefundTime = $('#endRefundTime');
+                if ($(this).data('v') == '12') {
+                    startRefundTime.removeAttr('disabled');
+                    endRefundTime.removeAttr('disabled');
+                } else {
+                    startRefundTime.attr('disabled', 'disabled');
+                    endRefundTime.attr('disabled', 'disabled');
+                    startRefundTime.val('');
+                    endRefundTime.val('');
+                }
+                $('.refund-val').text(val);
+                $('.refund-block1').hide();
+                e.stopPropagation();
+            })
+            if ($(".operation-block").length > 0) {
+                var length = $(".operation-block").length;
+                for (var i = 0; i < length; i++) {
+                    var b = $(".operation-block").get(i);
+                    if ($(b).html().trim() == '') {
+                        $(b).hide();
+                        $(b).prev().hide();
+                    }
+                }
+            }
+
+        });
+
+        function page(n, s) {
+            $("#pageNo").val(n);
+            $("#pageSize").val(s);
+            $("#searchForm").submit();
+            return false;
+        }
+
+        // 二维码分享
+        function QRCodewin(orderId, orderNo) {
+            var html = '<div style="padding:10px;">订单号:' + orderNo + '' +
+                '<div class="code" style="text-align: center;"></div>' +
+                '</div>';
+            $.jBox(html, {
+                title: "订单二维码分享",
+                width: $(top.document).width() - 1700,
+                height: $(top.document).height() - 1600,
+                buttons: {'关闭': true}
+            });
+
+            var enCodeRedirectUrl;
+            var redirectUrl = '${fns:getConfig('caimei.crm.server')}oauth.action?orderId=' + orderId;
+            $.ajax({
+                url: "${ctx}/bulkpurchase/contractOrder/enCode",
+                data: {"redirectUrl": redirectUrl},
+                type: "POST",
+                async: false,
+                success: function (data) {
+                    enCodeRedirectUrl = data.enCodeRedirectUrl;
+                }
+            });
+            var shareUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=${fns:getConfig('weixin.appId')}&redirect_uri=' + enCodeRedirectUrl + '&response_type=code&scope=snsapi_base&state=bulkpurchase#wechat_redirect';
+            $('.code').qrcode({
+                width: 150,
+                height: 150,
+                text: shareUrl
+            });
+        }
+
+        // 供应商链接
+        function shareShopLink(shopOrderID) {
+            var cpTxt = '${fns:getConfig('caimei.crm.server')}supplier/order/shopAuthorizedOrder.rpc?shopOrderID=' + shopOrderID;
+
+            var html = '<div style="padding:10px;">' + cpTxt +
+                '<div class="code" style="text-align: center;"></div>' +
+                '</div>';
+            $('#biao1').val(cpTxt);//设置值
+            $.jBox(html, {
+                title: "复制以下链接,可分享订单信息",
+                width: $(top.document).width() - 1400,
+                height: $(top.document).height() - 1600,
+                buttons: {'复制': 1, '关闭': true},
+//                buttons: { '关闭': true },
+                submit: function (v, h, f) {
+                    if (v == 1) {
+                        copyUrl2()
+//                        alert("1")
+//                        window.clipboardData.setData("text" , cpTxt);
+                    }
+                }
+            });
+        }
+
+        // 终止备注信息
+        function orderRemarkswin(orderStopRemarks) {
+            var html = "<div style='padding:10px;'><textarea id='remarks' name='remarks' rows='5' cols='12' readonly='true'>" + orderStopRemarks + "</textarea></div>";
+            $.jBox(html, {
+                title: "备注",
+                width: $(top.document).width() - 1600,
+                height: $(top.document).height() - 1600,
+                buttons: {'关闭': true}
+            });
+        }
+
+        // 订单终止弹窗
+        function orderStopwin(id, flag) {
+            var html = "<div style='padding:10px;'><font color='red'>*</font>备注:<textarea id='remarks' name='remarks' rows='5' cols='12'></textarea></div>";
+            var submit = function (v, h, f) {
+                if (f.remarks == '') {
+                    $.jBox.tip("请输入您填写备注信息", 'error', {focusId: "remarks"});
+                    return false;
+                }
+//				$.jBox.tip("备注:" + f.remarks);
+                location.href = "${ctx}/bulkpurchase/contractOrder/saveOrderStopInfo?id=" + id + "&flag=" + flag + "&orderStopRemarks=" + f.remarks;
+                return true;
+            };
+
+            $.jBox(html, {title: "确认终止订单?", submit: submit});
+        }
+
+
+        // 未分期确认订单
+        function openwin(id, flag) {
+            var submit = function (v, h, f) {
+                if (v == true) {
+                    location.href = "${ctx}/bulkpurchase/contractOrder/saveConfirmFlag?id=" + id + "&flag=" + flag;
+                }
+                return true;// close
+            };
+            // 自定义按钮
+            $.jBox.confirm("客户已确认了吗?", "确认订单", submit, {buttons: {'确认': true, '取消': false}});
+        }
+
+        // 分期确认订单
+        function stagesOpenwin(id, flag) {
+            var submit = function (v, h, f) {
+                if (v == true) {
+                    location.href = "${ctx}/bulkpurchase/contractOrder/saveStagesConfirmFlag?id=" + id + "&flag=" + flag;
+                }
+                return true;// close
+            };
+            // 自定义按钮
+            $.jBox.confirm("确认此订单可以生成?", "确认订单", submit, {buttons: {'确认': true, '取消': false}});
+        }
+
+        //编辑经理折扣
+        function modelShow(orderID) {
+            top.$.jBox("iframe:${ctx}/order/DiscountFee?orderID=" + orderID, {
+                iframeScrolling: 'yes',
+                top: 150,
+                width: 480,
+                height: 300,
+                persistent: true,
+                title: "编辑经理折扣",
+                buttons: {"确认": '1', "取消": '-1'},
+                submit: function (v, h, f) {
+                    //确定
+                    var $jboxFrame = top.$('#jbox-iframe');
+                    var $mainFrame = top.$('#mainFrame');
+                    if ('1' == v && 1 == $jboxFrame.size() && 1 == $mainFrame.size()) {
+                        var rechargeInfo = $jboxFrame[0].contentWindow.submit();
+                        var split = rechargeInfo.split(",");
+                        var payTotalFee = split[0];
+                        var discountFee = split[1];
+                        //取值,然后调用后台接口传入参数,最后刷新页面
+                        if (payTotalFee <= 0) {
+                            return false;
+                        }
+                        $.post("${ctx}/order/saveDiscountFee", {
+                            'discountFee': discountFee,
+                            'orderID': orderID,
+                            'payTotalFee': payTotalFee
+                        }, function (data) {
+                            if (true == data.success) {
+                                refresh();
+                                $.jBox.tip(data.msg, 'info', {timeout: 1000});
+                            } else {
+                                alertx(data.msg, 1000);
+                            }
+                        }, "JSON");//这里返回的类型有:json,html,xml,text
+                    }
+                    return true;
+                }, loaded: function (h) {   //隐藏滚动条
+                    $(".jbox-content", top.document).css("overflow-y", "hidden");
+                }
+            });
+        }
+
+
+        //订单商品备注
+        function remarks(orderID, shopOrderID) {
+            top.$.jBox("iframe:${ctx}/order/cmOrderRemark/remarksView?orderID=" + orderID + "&shopOrderID=" + shopOrderID, {
+                iframeScrolling: 'yes',
+                top: 150,
+                width: 400,
+                height: 480,
+                persistent: true,
+                title: "订单备注信息",
+                buttons: {"确认": '1', "关闭": '-1'},
+                submit: function (v, h, f) {
+                    //确定
+                    var $jboxFrame = top.$('#jbox-iframe');
+                    var $mainFrame = top.$('#mainFrame');
+                    if ('1' == v && 1 == $jboxFrame.size() && 1 == $mainFrame.size()) {
+                        var remarks = $jboxFrame[0].contentWindow.submit();
+//                        var arr = item.split(",");
+//                        var remarks = arr[0];
+                        if ('' == remarks) {
+                            alertx("备注信息不能为空!!!")
+                            return false;
+                        }
+                        saveRemarks(remarks, orderID, shopOrderID);
+                        return true;
+                    }
+                    return true;
+                },
+                loaded: function (h) {   //隐藏滚动条
+                    $(".jbox-content", top.document).css("overflow-y", "hidden");
+                }
+            });
+        }
+
+
+        function saveRemarks(remarks, orderID, shopOrderID) {
+            $.post("${ctx}/order/cmOrderRemark/addRemarks", {
+                "remarks": remarks, "orderID": orderID, "shopOrderID": shopOrderID
+            }, function (data) {
+                if (true == data.success) {
+                    refresh();
+                    $.jBox.tip(data.msg, 'info');
+                } else {
+                    $.jBox.tip(data.msg, 'error');
+                }
+            }, "JSON");//这里返回的类型有:json,html,xml,text
+        }
+
+        //修改订单状态弹窗
+        function updateOrderStatus(orderId) {
+            top.$.jBox("iframe:${ctx}/bulkpurchase/contractOrder/orderStatusEdit?orderId=" + orderId, {
+                iframeScrolling: 'yes',
+                top: 150,
+                width: 400,
+                height: 230,
+                persistent: true,
+                title: "更新订单状态",
+                buttons: {"确认修改": '1', "关闭": '-1'},
+                submit: function (v, h, f) {
+                    //确定
+                    var $jboxFrame = top.$('#jbox-iframe');
+                    var $mainFrame = top.$('#mainFrame');
+                    if ('1' == v && 1 == $jboxFrame.size() && 1 == $mainFrame.size()) {
+                        var item = $jboxFrame[0].contentWindow.submit();
+                        var arr = item.split(",");
+                        var orderStatus = arr[0];
+                        var updateDate = arr[1];
+                        if (updateDate == "") {
+                            alertx("时间不能为空!!!")
+                            return false;
+                        }
+                        saveOrderStatus(orderStatus, updateDate, orderId);
+
+                        return true;
+                    }
+                    return true;
+                }
+            });
+        }
+
+        function saveOrderStatus(orderStatus, updateDate, orderId) {
+            $.post("${ctx}/bulkpurchase/contractOrder/saveOrderStatus", {
+                'orderStatus': orderStatus, "updateDate": updateDate, "orderId": orderId
+            }, function (data) {
+                if (true == data.success) {
+                    refresh();
+                    $.jBox.tip(data.msg, 'info');
+                } else {
+                    $.jBox.tip(data.msg, 'error');
+                }
+            }, "JSON");//这里返回的类型有:json,html,xml,text
+        }
+
+        function refresh() {
+            window.location.href = "${ctx}/order/orderList/";
+        }
+
+        function checkfun() {
+            var orderID = $('#orderID').val();
+            var reg = /^[0-9]*$/;
+            if (!reg.test(orderID) && orderID.trim() != "") {
+                alertx("请输入正确的订单ID!");
+                // $('#orderID').val("");
+                return false;
+            }
+            return true;
+        }
+
+        //抹平收款
+        function collection(orderId) {
+            $.post("${ctx}/order/gatheringData", {
+                'orderId': orderId
+            }, function (data) {
+                if (true == data.success) {
+                    var html = "<div id='auditBox'>" +
+                        "<P>确定抹平收款吗?抹平后该订单将变为已收款状态</p>" +
+                        "<P><span>订单金额:<b>¥" + Number(data.payTotalFee).toFixed(2) + "</b></span></p>" +
+                        "<P><span>应收金额:<b>¥" + Number(data.payableAmount).toFixed(2) + "</b><span style='color:#FF0000'>(账户余额抵扣: ¥<b>" + Number(data.balancePayFee).toFixed(2) + "</b>)</span></span></p>" +
+                        "<P><span>已收金额:<b>¥" + Number(data.associateAmount).toFixed(2) + "</b></span></p>" +
+                        "<div><div class='note-div'><span style='color:#FF0000'>*</span>备注</div></div>" +
+                        "<textarea name='auditNote' style='width: 100%;min-height:60px;'></textarea>" +
+                        "<div class='note-div' style='display: none' id='noteError'><span style='color:#FF0000'>请填写备注</span> </div>" +
+                        "</div>";
+                    $.jBox(html, {
+                        title: "确认提示", width: 500, height: 400, buttons: {"确定": '1', "取消": '-1'},
+                        submit: function (v, h, f) {
+                            if ('1' == v) {
+                                var content = document.getElementsByName("auditNote")[0].value;
+                                if (content == '' || content == null) {
+                                    document.getElementById('noteError').style.display = 'block';
+                                    return false;
+                                }
+                                $.post("${ctx}/order/smoothOutCollection", {
+                                    'orderID': orderId,
+                                    'balanceAccountsRemark': content
+                                });
+                                window.location.href = "${ctx}/order/detail?id=" + orderId;
+                            }
+                        }
+                    });
+
+                } else {
+                    $.jBox.tip(data.msg, 'error');
+                }
+            }, "JSON");//这里返回的类型有:json,html,xml,text
+        };
+    </script>
+</head>
+<body>
+<textarea cols="20" rows="10" id="biao1"></textarea>
+<ul class="nav nav-tabs">
+    <li class="active"><a href="${ctx}/hehe/new/order/orderList">订单列表</a></li>
+</ul>
+<sys:message content="${message}"/>
+<form:form id="searchForm" modelAttribute="newOrder" onsubmit="return checkfun()" action="${ctx}/hehe/new/order/orderList"
+           method="post" class="breadcrumb form-search">
+    <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+    <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+    <div class="ul-form">
+        <div class="flex-wrap">
+            <div class="item">
+                <label>订单ID:</label>
+                <form:input path="orderID" id="orderID" htmlEscape="false" maxlength="30" class="input-medium"/>
+            </div>
+            <div class="item">
+                <label>订单编号:</label>
+                <form:input path="orderNo" htmlEscape="false" maxlength="30" class="input-medium"/>
+            </div>
+            <div class="item">
+                <label>买家:</label>
+                <form:input path="buyer" maxlength="20" class="input-medium"/>
+            </div>
+            <div class="item">
+                <label>收货人:</label>
+                <form:input path="receiver" maxlength="20" class="input-medium"/>
+            </div>
+            <div class="item">
+                <label>订单状态:</label>
+                <form:select path="status" class="select-ele input-medium required">
+                    <form:option value="" label="所有"/>
+                    <form:options items="${fns:getDictList('order_status')}" itemLabel="label" itemValue="value"
+                                  htmlEscape="false"/>
+                </form:select>
+            </div>
+            <div class="item">
+                <label>收款状态:</label>
+                <form:select path="receiptStatus" class="select-ele input-medium required">
+                    <form:option value="" label="所有"/>
+                    <form:options items="${fns:getDictList('receiptStatus')}" itemLabel="label" itemValue="value"
+                                  htmlEscape="false"/>
+                </form:select>
+            </div>
+            <div class="item">
+                <label>发货状态:</label>
+                <form:select path="sendOutStatus" class="select-ele input-medium required">
+                    <form:option value="" label="所有"/>
+                    <form:options items="${fns:getDictList('sendOutStatus')}" itemLabel="label" itemValue="value"
+                                  htmlEscape="false"/>
+                </form:select>
+            </div>
+            <div class="item">
+                <label>付款状态:</label>
+                <form:select path="payStatus" class="select-ele input-medium required">
+                    <form:option value="" label="所有"/>
+                    <form:options items="${fns:getDictList('payStatus')}" itemLabel="label" itemValue="value"
+                                  htmlEscape="false"/>
+                </form:select>
+            </div>
+
+            <div class="item">
+                <label>退款状态:</label>
+                <form:select path="refundType" class="select-ele input-medium required">
+                    <form:option value="" label="所有"/>
+                    <form:option value="0" label="无退款"/>
+                    <form:option value="1" label="部分退款"/>
+                    <form:option value="2" label="已退款"/>
+                </form:select>
+            </div>
+            <div class="item">
+                <label>待审核退款:</label>
+                <form:select path="returnedPurchaseStatus" class="select-ele input-medium required">
+                    <form:option value="" label="所有"/>
+                    <form:option value="1" label="有"/>
+                    <form:option value="0" label="无"/>
+                </form:select>
+            </div>
+            <div class="item">
+                <label>分销者:</label>
+                <form:select path="userID" class="select-ele input-medium required">
+                    <form:option value="" label="所有"/>
+                    <form:options items="${heUsers}" itemLabel="name" itemValue="userId" htmlEscape="false"/>
+                </form:select>
+            </div>
+            <div class="item">
+                <label class="control-label">下单时间:</label>
+                <form:input path="startTime" type="text" maxlength="10" class="input-medium Wdate" value="${startTime}"
+                            onclick="WdatePicker({dateFmt:'yyyy-MM-dd ',isShowClear:false});"/>
+                至
+                <form:input path="endTime" type="text" maxlength="10" class="input-medium Wdate" value="${endTime}"
+                            onclick="WdatePicker({dateFmt:'yyyy-MM-dd ',isShowClear:false});"/>
+            </div>
+            <div class="item">
+                <input id="btnSubmit" class="btn btn-primary" type="submit" value="查询" style="margin-left: 20px;"/>
+            </div>
+        </div>
+    </div>
+</form:form>
+
+<fmt:formatDate value="<%=new Date()%>" var="currDate" pattern="yyyy-MM-dd"/>
+<fmt:formatDate value="<%=new Date()%>" var="monthFirst" pattern="yyyy-MM-01"/>
+<div class="data-title">
+    <ul>
+        <li>订单ID</li>
+        <li>订单编号</li>
+        <li>买家</li>
+        <li>收货人</li>
+        <li>订单状态</li>
+        <li>收款状态</li>
+        <li>付款状态</li>
+        <li>发货状态</li>
+        <li>退款状态</li>
+        <li>待审核退款</li>
+        <li>订单金额</li>
+        <li>下单时间</li>
+        <li>操作</li>
+    </ul>
+    <c:forEach items="${page.list}" var="order">
+        <%--颜色区分分期不分期订单以及终止订单--%>
+        <ul class="spileOrder" data-id="${order.orderNo}">
+            <li>${order.orderID}</li>
+            <li style="position: relative">${order.orderNo}
+            </li>
+            <li>
+                    ${order.buyer}
+            </li>
+            <li>${order.receiver}</li>
+            <li class="sd-li">
+                <c:if test="${order.status eq 11 || order.status eq 12 || order.status eq 13 ||order.status eq 21 ||order.status eq 22 ||
+				order.status eq 23 || order.status eq 31 ||order.status eq 32 ||order.status eq 33}">
+                    交易中<br>(${fns:getDictLabel(order.status,"order_detail_status","" )})
+                </c:if>
+                <c:if test="${order.status eq 0 || order.status eq 4 || order.status eq 5 || order.status eq 6 || order.status eq 7}">${fns:getDictLabel(order.status,"order_detail_status","" )}</c:if>
+            </li>
+            <li>
+                <c:if test="${order.receiptStatus == 1}">
+                    <font color="red">待收款</font>
+                </c:if>
+                <c:if test="${order.receiptStatus == 2}">
+                    <font color="#ff8c00">部分收款</font>
+                </c:if>
+                <c:if test="${order.receiptStatus == 3}">
+                    <font color="green">已收款</font>
+                </c:if>
+                <br>
+                    <%--抹平明细--%>
+                <c:if test="${order.confirmType eq 1}">
+                    <c:if test="${order.receiptOrderFlag}">
+                        一款多单:少收抹平金额未知
+                    </c:if>
+                    <c:if test="${!order.receiptOrderFlag}">
+                        <font>少收抹平:<br>
+                            ¥<fmt:formatNumber
+                                    value="${order.payableAmount - (empty order.orderReceivedAmount ? 0 : order.orderReceivedAmount)}"
+                                    pattern="#0.00"/>
+                        </font>
+                    </c:if>
+                </c:if>
+                <c:if test="${order.confirmType eq 2}">
+                    <c:if test="${order.receiptOrderFlag}">
+                        一款多单:多收抹平金额未知
+                    </c:if>
+                    <c:if test="${!order.receiptOrderFlag}">
+                        <font>多收抹平:<br>
+                            ¥<fmt:formatNumber
+                                    value="${(empty order.orderReceivedAmount ? 0 : order.orderReceivedAmount) - order.payableAmount}"
+                                    pattern="#0.00"/>
+                        </font>
+                    </c:if>
+                </c:if>
+                <c:if test="${order.confirmType eq 3}">
+                    <c:if test="${order.receiptOrderFlag}">
+                        一款多单:多收退余额
+                    </c:if>
+                    <c:if test="${!order.receiptOrderFlag}">
+                        <font>多收退余额&nbsp;&nbsp;${order.associationType eq 2 ? "(自动)" : ""}:<br>
+                            ¥<fmt:formatNumber
+                                    value="${(empty order.returnBalanceAmount ? 0 : order.returnBalanceAmount)}"
+                                    pattern="#0.00"/>
+                        </font>
+                    </c:if>
+                </c:if>
+            </li>
+            <li>
+                <c:if test="${order.payStatus == 1}">
+                    待付款
+                </c:if>
+                <c:if test="${order.payStatus == 2}">
+                    部分付款
+                </c:if>
+                <c:if test="${order.payStatus == 3}">
+                    已付款
+                </c:if>
+            </li>
+            <li>
+                <c:if test="${order.sendOutStatus == 1}">
+                    待发货
+                </c:if>
+                <c:if test="${order.sendOutStatus == 2}">
+                    部分发货
+                </c:if>
+                <c:if test="${order.sendOutStatus == 3}">
+                    已发货
+                </c:if>
+            </li>
+            <li>
+                <c:if test="${order.refundType == 1}">
+                    部分退款
+                </c:if>
+                <c:if test="${order.refundType == 2}">
+                    已退款
+                </c:if>
+                <c:if test="${order.refundType ne 1 and order.refundType ne 2 }">
+                    无退款
+                </c:if>
+            </li>
+            <li>
+                <c:if test="${order.returnedPurchaseStatus == 1}">
+                    <a href="${ctx}/bulkpurchase/cmRefundsProduct/toRecturnRecordByOrderID.rpc?orderID=${order.orderID}">
+                        有
+                    </a>
+                </c:if>
+                <c:if test="${order.returnedPurchaseStatus == 0}">
+                    无
+                </c:if>
+            </li>
+            <li><fmt:formatNumber value="${order.payTotalFee}" type="currency"/></li>
+                <%-- 订单金额 --%>
+            <li>${order.orderTime}</li>
+            <li class="operation-wrap">
+                <a href="${ctx}/hehe/new/order/detail?id=${order.orderID}">查看详情</a>
+                <a class="operation-btn">功能</a>
+                <div class="operation-block">
+                    <shiro:hasPermission name="order:order:edit">
+                        <%--包含订单充值商品就不显示--%>
+                        <c:if test="${empty order.rechargeGoods}">
+                            <c:if test="${order.status == 11 || order.status == 12 || order.status == 21 || order.status == 22 || order.status == 31 || order.status == 32}">
+                                <a href="${ctx}/order/toDeliveryPage?id=${order.orderID}">发货</a>
+                            </c:if>
+                            <c:if test="${order.receiptStatus == 2 && order.status != 6 && order.status != 7}">
+                                <a href="javascript:void(0);" onclick="collection(${order.orderID})">抹平收款</a>
+                            </c:if>
+                        </c:if>
+                        <c:if test="${(order.organizeID == 0 or order.organizeID > 2) && order.status == 11 && order.payStatus == 1}">
+                            <a href="javascript:void(0);"
+                               onclick="modelShow('${order.orderID}')">编辑经理折扣</a>
+                        </c:if>
+                    </shiro:hasPermission>
+
+                    <shiro:hasPermission name="order:order:applyrefound">
+                        <c:if test="${order.status == 12 || order.status == 13 || order.status == 21 || order.status == 22 || order.status == 23 || order.status == 31 || order.status == 32 || order.status == 33 || order.status == 4 || order.status == 5}">
+                            <%--  返佣订单不能申请退款(退货) --%>
+                            <c:if test="${order.rebateOrder == '0'}">
+                                <%--如果存在审核收款则不允许申请:1不能申请,其它可以申请--%>
+                                <c:if test="${order.toAudit eq 1}">
+                                    <%--弹窗提示--%>
+                                    <a href="#" onclick="return alertx('订单存在未审核的收款,暂不能退款。请将收款审核通过后再操作退款。')">申请退款</a>
+                                </c:if>
+                                <c:if test="${order.toAudit ne 1}">
+                                    <%--如果存在退款记录在待审核或者审核不通过记录不允许继续退款--%>
+                                    <c:if test="${order.applyReturnedPurchaseFlag eq 1}">
+                                        <a href="${ctx}/bulkpurchase/cmRefundsProduct/applyRefound.rpc?orderID=${order.orderID}"
+                                           <c:if test="${order.status == 21 || order.status == 22 || order.status == 23}">onclick="return confirmx('部分收款的订单、申请退款只能申请全部退款!', this.href)"
+                                        </c:if>
+                                        >
+                                            申请退款
+                                        </a>
+                                    </c:if>
+                                    <c:if test="${order.applyReturnedPurchaseFlag ne 1}">
+                                        <font title="存在未处理完的申请,请前往退款列表处理!">申请退款</font>
+                                    </c:if>
+                                </c:if>
+                            </c:if>
+                        </c:if>
+                    </shiro:hasPermission>
+
+                    <shiro:hasPermission name="order:order:edit">
+                        <c:if test="${order.status ne 0}">
+                            <a href="${ctx}/order/printOrder?orderID=${order.orderID}">打印发货单</a>
+                        </c:if>
+                        <%--<a href="/">供应商链接</a>--%>
+                        <a href="${ctx}/order/exportOrder?id=${order.orderID}">订单导出</a>
+                        <a href="${ctx}/order/cmOrderRemark/remarksViewNew.rpc?orderID=${order.orderID}&source=1">订单备注</a>
+                        <%--包含订单充值商品就不显示--%>
+                        <c:if test="${empty order.rechargeGoods}">
+                            <c:if test="${order.status ne 0 && order.status ne 11 && order.status ne 21 && order.status ne 6 && order.status ne 4}">
+                                <a href="${ctx}/order/logisticsDetails?orderID=${order.orderID}">发货记录</a>
+                            </c:if>
+                            <c:if test="${order.status ne 0 && order.status ne 11 && order.status ne 6}">
+                                <a href="${ctx}/bulkpurchase/cmRefundsProduct/toRefundRecord.rpc?orderID=${order.orderID}&from=1">收退款记录
+                                </a>
+                            </c:if>
+                            <c:if test="${order.status ne 0 && order.status ne 11 && order.status ne 6}">
+                                <a href="${ctx}/bulkpurchase/cmRefundsProduct/toRecturnRecordByOrderID.rpc?orderID=${order.orderID}">退款(退货)记录
+                                </a>
+                            </c:if>
+                        </c:if>
+                    </shiro:hasPermission>
+                </div>
+            </li>
+        </ul>
+    </c:forEach>
+</div>
+
+<div class="pagination">${page}</div>
+</body>
+</html>

+ 13 - 11
src/main/webapp/WEB-INF/views/modules/order/cmReturnedPurchaseList.jsp

@@ -89,10 +89,10 @@
 </head>
 <body>
 	<ul class="nav nav-tabs">
-		<li class="active"><a href="${ctx}/order/cmReturnedPurchase/">退款列表</a></li>
-		<%--<shiro:hasPermission name="order:cmReturnedPurchase:edit"><li><a href="${ctx}/order/cmReturnedPurchase/form">退货退款添加</a></li></shiro:hasPermission>--%>
+		<li class="active"><a href="${ctx}/order/cmReturnedPurchase/list?orderType=${orderType}">退款列表</a></li>
 	</ul>
 	<form:form id="searchForm" modelAttribute="cmReturnedPurchase" action="${ctx}/order/cmReturnedPurchase/" method="post" class="breadcrumb form-search">
+		<input id="orderType" name="orderType" type="hidden" value="${orderType}"/>
 		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
 		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
 		<div class="ul-form">
@@ -103,7 +103,7 @@
 				<form:input path="orderID" htmlEscape="false" maxlength="9" onchange="onlynum(this)" class="input-medium"/>
 				<label><font title="主订单编号">订单编号:</font></label>
 				<form:input path="orderNo" htmlEscape="false" maxlength="25" class="input-medium"/>
-				<label>机构:</label>
+				<label>${empty orderType ? "机构" : "买家"}:</label>
 				<form:input path="name" htmlEscape="false" maxlength="20" class="input-medium"/>
 			</div>
 			<div>
@@ -121,13 +121,15 @@
 					<form:options items="${fns:getDictList('cm_returned_purchase_status')}" itemLabel="label" itemValue="value"
 								  htmlEscape="false"/>
 				</form:select>
-				<label>组织:</label>
-				<form:select path="organizeID"  class="select-ele input-medium required">
-					<form:option value="" label="请选择"/>
-					<form:option value="0" label="采美"/>
-					<form:options items="${cmUserOrganizeList}" itemLabel="organizeName" itemValue="id"
-								  htmlEscape="false"/>
-				</form:select>
+				<c:if test="${empty orderType}">
+					<label>组织:</label>
+					<form:select path="organizeID"  class="select-ele input-medium required">
+						<form:option value="" label="请选择"/>
+						<form:option value="0" label="采美"/>
+						<form:options items="${cmUserOrganizeList}" itemLabel="organizeName" itemValue="id"
+									  htmlEscape="false"/>
+					</form:select>
+				</c:if>
 				<div class="clearfix"></div>
 			</div>
 			<div><input id="btnSubmit" class="btn btn-primary" type="submit" value="查询" style="margin-left: 986px;"/></div>
@@ -139,7 +141,7 @@
 			<tr>
 				<th>退款编号</th>
 				<th>退款审核状态</th>
-				<th>机构</th>
+				<th>${empty orderType ? "机构" : "买家"}</th>
 				<th>订单编号(ID)</th>
 				<th>退款金额</th>
 				<th class="refund-type-title">退款方式</th>