plf 4 gadi atpakaļ
vecāks
revīzija
ecd280267f
23 mainītis faili ar 644 papildinājumiem un 121 dzēšanām
  1. 61 1
      src/main/java/com/caimei/controller/OrderApi.java
  2. 0 3
      src/main/java/com/caimei/controller/OrderSubmitApi.java
  3. 3 2
      src/main/java/com/caimei/controller/PayOrderApi.java
  4. 89 3
      src/main/java/com/caimei/mapper/OrderMapper.java
  5. 3 1
      src/main/java/com/caimei/mapper/OrderSubmitMapper.java
  6. 0 8
      src/main/java/com/caimei/mapper/PayOrderMapper.java
  7. 1 1
      src/main/java/com/caimei/mapper/ProductMapper.java
  8. 41 0
      src/main/java/com/caimei/model/po/CmMallOrderSearchHistoryPo.java
  9. 0 30
      src/main/java/com/caimei/model/vo/OrderProductVo.java
  10. 21 0
      src/main/java/com/caimei/model/vo/OrderVo.java
  11. 6 10
      src/main/java/com/caimei/model/vo/ShopOrderVo.java
  12. 44 0
      src/main/java/com/caimei/service/OrderService.java
  13. 2 2
      src/main/java/com/caimei/service/impl/AddressServiceImpl.java
  14. 0 3
      src/main/java/com/caimei/service/impl/LoginServiceImpl.java
  15. 99 5
      src/main/java/com/caimei/service/impl/OrderServiceImpl.java
  16. 4 3
      src/main/java/com/caimei/service/impl/OrderSubmitServiceImpl.java
  17. 5 2
      src/main/java/com/caimei/service/impl/PayOrderServiceImpl.java
  18. 11 10
      src/main/java/com/caimei/service/impl/ProductServiceImpl.java
  19. 3 0
      src/main/resources/mapper/AddressMapper.xml
  20. 176 11
      src/main/resources/mapper/OrderMapper.xml
  21. 18 14
      src/main/resources/mapper/OrderSubmitMapper.xml
  22. 56 11
      src/main/resources/mapper/PayOrderMapper.xml
  23. 1 1
      src/main/resources/mapper/ShoppingCartMapper.xml

+ 61 - 1
src/main/java/com/caimei/controller/OrderApi.java

@@ -40,7 +40,7 @@ public class OrderApi {
      */
     @ApiOperation("我的订单")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "orderState", required = true, value = "1:待确认,2:待付款,3:待发货,4:已发货,5:退货款"),
+            @ApiImplicitParam(name = "orderState", required = true, value = "1:待付款,2:待发货,3:已发货,4:退货款"),
             @ApiImplicitParam(name = "organizeId", required = true, value = "组织id"),
             @ApiImplicitParam(name = "userId", required = false, value = "机构用户id"),
             @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
@@ -113,4 +113,64 @@ public class OrderApi {
     public ResponseJson<Boolean> verifyShareCode(String shareCode, String code, Integer orderId, Integer organizeId) {
         return orderService.verifyShareCode(shareCode, code, orderId, organizeId);
     }
+
+    /**
+     * 删除订单
+     */
+    @GetMapping("/delete")
+    @ApiOperation("删除订单")
+    @ApiImplicitParam(name = "orderId", required = true, value = "订单id")
+    public ResponseJson<String> deleteOrder(Integer orderId) {
+        return orderService.deleteOrder(orderId);
+    }
+
+    /**
+     * 取消订单
+     */
+    @ApiOperation("取消订单")
+    @ApiImplicitParam(name = "orderId", required = true, value = "订单id")
+    @GetMapping("/cancel")
+    public ResponseJson<String> cancelOrder(Integer orderId) {
+        return orderService.cancelOrder(orderId);
+    }
+
+    /**
+     * 根据关键词获取订单
+     */
+    @ApiOperation("根据关键词获取订单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "searchWord", required = true, value = "搜索关键词"),
+            @ApiImplicitParam(name = "organizeId", required = true, value = "组织id"),
+            @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
+            @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
+    })
+    @GetMapping("/search")
+    public ResponseJson<PageInfo<OrderVo>> getProductsBySearch(String searchWord, Integer organizeId,
+                                                               @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
+                                                               @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+        if (searchWord == null || "".equals(searchWord)) {
+            return ResponseJson.error("请输入搜索关键词", null);
+        }
+        return orderService.searchOrder(searchWord, organizeId, pageNum, pageSize);
+    }
+
+    /**
+     * 根据组织ID查找历史记录
+     */
+    @ApiOperation("根据组织ID查找历史记录")
+    @ApiImplicitParam(name = "organizeId", required = true, value = "组织id")
+    @GetMapping("/searchHistory")
+    public ResponseJson<List<String>> getSearchHistory(Integer organizeId) {
+        return orderService.getSearchHistory(organizeId);
+    }
+
+    /**
+     * 根据组织ID删除历史记录
+     */
+    @ApiOperation("根据组织ID删除历史记录")
+    @ApiImplicitParam(name = "organizeId", required = true, value = "组织id")
+    @GetMapping("/searchHistory/delete")
+    public ResponseJson<String> deleteSearchHistory(Integer organizeId) {
+        return orderService.deleteSearchHistory(organizeId);
+    }
 }

+ 0 - 3
src/main/java/com/caimei/controller/OrderSubmitApi.java

@@ -57,9 +57,6 @@ public class OrderSubmitApi {
      * 提交订单
      *
      * @param params 参数格式:{
-     *               *   "cartType":3,               //购买类型:(1购物车提交[对应表cm_cart],2直接购买提交, 3协销下单)
-     *               *   "orderSource": 2,           //订单来源:1WWW、2CRM、3APP[历史数据]、4客服[适用后台下单]、5外单[适用后台下单]、6小程序[采美,星范等]
-     *               *   "serviceProviderId": 1378,  //协销ID(小程序忽略)
      *               *   "clubUserId": 10708,        //机构用户ID
      *               *   "addressId": 2732,          //地址ID
      *               *   "orderInfo": [

+ 3 - 2
src/main/java/com/caimei/controller/PayOrderApi.java

@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
 import org.springframework.http.server.reactive.ServerHttpResponse;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.reactive.function.server.ServerRequest;
@@ -74,11 +75,11 @@ public class PayOrderApi {
      */
     @ApiOperation("微信线上支付")
     @PostMapping("/miniWxPay")
-    public ResponseJson<JSONObject> miniWxPay(@RequestBody PaymentDto payment, ServerRequest request) {
+    public ResponseJson<JSONObject> miniWxPay(@RequestBody PaymentDto payment, @RequestHeader HttpHeaders headers) {
         if (!"WEIXIN".equals(payment.getPayWay()) || payment.getPayAmount() == null || payment.getPayAmount() < 2) {
             return ResponseJson.error("参数异常", null);
         }
-        String clientIp = request.headers().asHttpHeaders().getFirst("X-CLIENT-IP");
+        String clientIp = headers.getFirst("X-CLIENT-IP");
         payment.setClientIp(clientIp);
         Map<String, Object> map = null;
         if (null == payment.getState()) {

+ 89 - 3
src/main/java/com/caimei/mapper/OrderMapper.java

@@ -1,8 +1,6 @@
 package com.caimei.mapper;
 
-import com.caimei.model.po.CmMallOrderShareCodePo;
-import com.caimei.model.po.PromotionsPo;
-import com.caimei.model.po.ShareCodeRecordPo;
+import com.caimei.model.po.*;
 import com.caimei.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -202,4 +200,92 @@ public interface OrderMapper {
      * @param codeRecord
      */
     void insertShareCodeRecord(ShareCodeRecordPo codeRecord);
+
+    /**
+     * 逻辑删除主订单
+     *
+     * @param orderId
+     */
+    void deleteOrder(Integer orderId);
+
+    /**
+     * 逻辑删除子订单
+     *
+     * @param orderId
+     */
+    void deleteShopOrder(Integer orderId);
+
+    /**
+     * 逻辑删除订单收款记录
+     *
+     * @param orderId
+     */
+    void deleteReceiptOrderRelation(Integer orderId);
+
+    /**
+     * 逻辑删除收款记录
+     *
+     * @param id
+     */
+    void deleteDiscernReceipt(Long id);
+
+    /**
+     * 查询付款记录
+     *
+     * @param shopOrderId
+     * @return
+     */
+    List<CmPayShopRecordPo> findPayShopRecord(Integer shopOrderId);
+
+    /**
+     * 逻辑删除子订单付款记录
+     *
+     * @param shopOrderId
+     */
+    void deletePayShopRecord(Integer shopOrderId);
+
+    /**
+     * 逻辑删除付款记录
+     *
+     * @param payShopId
+     */
+    void updatePayShop(Integer payShopId);
+
+    /**
+     * 取消订单
+     *
+     * @param orderId
+     */
+    void cancelOrder(Integer orderId);
+
+    /**
+     * 查询相关商品名称订单
+     *
+     * @param searchWord
+     * @param organizeId
+     * @return
+     */
+    List<OrderVo> searchOrder(@Param("searchWord") String searchWord,@Param("organizeId") Integer organizeId);
+
+    /**
+     * 查询组织订单搜索历史记录
+     *
+     * @param organizeId
+     * @return
+     */
+    List<String> getSearchHistoryList(Integer organizeId);
+
+    /**
+     * 删除订单搜索历史记录
+     *
+     * @param organizeId
+     */
+    void deleteSearchHistory(Integer organizeId);
+
+    /**
+     * 保存订单搜索历史记录
+     *
+     * @param searchHistoryPo
+     */
+    void insertHistory(CmMallOrderSearchHistoryPo searchHistoryPo);
 }

+ 3 - 1
src/main/java/com/caimei/mapper/OrderSubmitMapper.java

@@ -31,9 +31,10 @@ public interface OrderSubmitMapper {
      *
      * @param shopId
      * @param productIds
+     * @param userId
      * @return
      */
-    List<CartProductVo> findProductListByCart(@Param("shopId") Integer shopId, @Param("productIds") String[] productIds);
+    List<CartProductVo> findProductListByCart(@Param("shopId") Integer shopId, @Param("productIds") String[] productIds, @Param("userId") Integer userId);
 
     /**
      * 查询商品信息
@@ -181,6 +182,7 @@ public interface OrderSubmitMapper {
 
     /**
      * 查询省市
+     *
      * @param townId
      * @return
      */

+ 0 - 8
src/main/java/com/caimei/mapper/PayOrderMapper.java

@@ -76,14 +76,6 @@ public interface PayOrderMapper {
      */
     OrderPayLinkVo getOrderPayLink(String linkLogo);
 
-    /**
-     * 查询用户信息
-     *
-     * @param userId
-     * @return
-     */
-    UserPo findUser(Long userId);
-
     /**
      * 查询订单商品
      *

+ 1 - 1
src/main/java/com/caimei/mapper/ProductMapper.java

@@ -39,7 +39,7 @@ public interface ProductMapper {
     /**
      * 根据商品Id查询促销活动
      *
-     * @param productId
+     * @param productId 组织商品id
      * @return
      */
     PromotionsPo findPromotionByProductId(Integer productId);

+ 41 - 0
src/main/java/com/caimei/model/po/CmMallOrderSearchHistoryPo.java

@@ -0,0 +1,41 @@
+package com.caimei.model.po;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * cm_mall_order_search_history
+ * @author 
+ */
+@Data
+public class CmMallOrderSearchHistoryPo implements Serializable {
+    private Long id;
+
+    /**
+     * 组织ID,具体对应cm_mall_organize表ID
+     */
+    private Integer organizeID;
+
+    /**
+     * 小程序商城openid
+     */
+    private String openID;
+
+    /**
+     * 搜索关键词
+     */
+    private String searchWord;
+
+    /**
+     * 搜索时间
+     */
+    private Date searchDate;
+
+    /**
+     * 删除标记 0 否,其余是
+     */
+    private String delFlag;
+
+    private static final long serialVersionUID = 1L;
+}

+ 0 - 30
src/main/java/com/caimei/model/vo/OrderProductVo.java

@@ -161,36 +161,6 @@ public class OrderProductVo implements Serializable {
      */
     private BigDecimal shopProductAmount;
 
-    /**
-     * 该商品总的应付供应商金额
-     */
-    private BigDecimal shopFee;
-
-    /**
-     * 该商品总的应付第三方金额
-     */
-    private BigDecimal otherFee;
-
-    /**
-     * 该商品总的应付采美金额 (受赠品影响)
-     */
-    private BigDecimal cmFee;
-
-    /**
-     * 后台设置的单个应付供应商金额
-     */
-    private BigDecimal singleShopFee;
-
-    /**
-     * 后台设置单个应付第三方金额
-     */
-    private BigDecimal singleOtherFee;
-
-    /**
-     * 后台计算的单个应付采美金额
-     */
-    private BigDecimal singleCmFee;
-
     /**
      * 订单商品状态
      */

+ 21 - 0
src/main/java/com/caimei/model/vo/OrderVo.java

@@ -123,6 +123,22 @@ public class OrderVo implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private String orderTime;
 
+    /**
+     * 购买总数
+     */
+    private Integer productCount;
+
+    /**
+     * 赠送总数 不计算价格
+     */
+    private Integer presentCount;
+
+    /**
+     * 赠送总数
+     */
+    private Integer promotionalGiftsCount;
+
+
     /**
      * 是否开发票 没开发票 0 开个人发票 1 开企业发票2
      */
@@ -193,6 +209,11 @@ public class OrderVo implements Serializable {
      */
     private BigDecimal ExpensesOfTaxation;
 
+    /**
+     * 机构名称
+     */
+    private String clubName;
+
     /**
      * 支付按钮是否消失,true消失
      */

+ 6 - 10
src/main/java/com/caimei/model/vo/ShopOrderVo.java

@@ -51,7 +51,7 @@ public class ShopOrderVo implements Serializable {
     private Integer presentNum;
 
     /**
-     *   购买数量
+     * 购买数量
      */
     private Integer itemCount;
 
@@ -255,15 +255,6 @@ public class ShopOrderVo implements Serializable {
      */
     private BigDecimal payedShopAmount;
 
-    /**
-     * 付第三方
-     */
-    private BigDecimal shopOtherFee;
-
-    private String receiptedFlag;
-
-    private String receiptedType;
-
     /**
      * 固定成本1,  比例成本2  为空就是还没有设置过
      */
@@ -284,6 +275,11 @@ public class ShopOrderVo implements Serializable {
      */
     private String shopLogo;
 
+    /**
+     * 供应商名称
+     */
+    private String shopName;
+
     private List<OrderProductVo> orderProductList;
 
     /**

+ 44 - 0
src/main/java/com/caimei/service/OrderService.java

@@ -61,6 +61,7 @@ public interface OrderService {
 
     /**
      * 分享订单,分享码验证通过
+     *
      * @param shareCode
      * @param code
      * @param orderId
@@ -68,4 +69,47 @@ public interface OrderService {
      * @return
      */
     ResponseJson<Boolean> verifyShareCode(String shareCode, String code, Integer orderId, Integer organizeId);
+
+    /**
+     * 删除订单
+     *
+     * @param orderId
+     * @return
+     */
+    ResponseJson<String> deleteOrder(Integer orderId);
+
+    /**
+     * 取消订单
+     *
+     * @param orderId
+     * @return
+     */
+    ResponseJson<String> cancelOrder(Integer orderId);
+
+    /**
+     * 根据关键词获取订单
+     *
+     * @param searchWord
+     * @param organizeId
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    ResponseJson<PageInfo<OrderVo>> searchOrder(String searchWord, Integer organizeId, Integer pageNum, Integer pageSize);
+
+    /**
+     * 根据组织ID查找历史记录
+     *
+     * @param organizeId
+     * @return
+     */
+    ResponseJson<List<String>> getSearchHistory(Integer organizeId);
+
+    /**
+     * 删除历史记录
+     *
+     * @param organizeId
+     * @return
+     */
+    ResponseJson<String> deleteSearchHistory(Integer organizeId);
 }

+ 2 - 2
src/main/java/com/caimei/service/impl/AddressServiceImpl.java

@@ -39,8 +39,8 @@ public class AddressServiceImpl implements AddressService {
         if (address.getDefaultFlag() != null && "1".equals(address.getDefaultFlag())) {
             AddressVo addressVo = addressMapper.findDefaultAddress(address.getUserId());
             if (addressVo != null) {
-                address.setDefaultFlag("0");
-                addressMapper.updateAddress(address);
+                addressVo.setDefaultFlag("0");
+                addressMapper.updateAddress(addressVo);
             }
         }
         if (address.getAddressId() == null) {

+ 0 - 3
src/main/java/com/caimei/service/impl/LoginServiceImpl.java

@@ -89,9 +89,6 @@ public class LoginServiceImpl implements LoginService {
         Map<String, Object> map = new HashMap<>(5);
         CmMallOrganizePo organize = loginMapper.findOrganize(organizeId);
         map.put("organizeName", organize.getOrganizeName());
-        //待确认数量
-        Integer confirmedCount = loginMapper.findOrderCount(organizeId, 0);
-        map.put("confirmedCount", confirmedCount);
         //待付款数量
         Integer paymentCount = loginMapper.findOrderCount(organizeId, 1);
         paymentCount = paymentCount == null ? 0 : paymentCount;

+ 99 - 5
src/main/java/com/caimei/service/impl/OrderServiceImpl.java

@@ -6,11 +6,10 @@ import com.alibaba.fastjson.JSONObject;
 import com.caimei.config.WxConfig;
 import com.caimei.mapper.LoginMapper;
 import com.caimei.mapper.OrderMapper;
+import com.caimei.mapper.OrderSubmitMapper;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.enumerate.ReceivablesType;
-import com.caimei.model.po.CmMallOrderShareCodePo;
-import com.caimei.model.po.PromotionsPo;
-import com.caimei.model.po.ShareCodeRecordPo;
+import com.caimei.model.po.*;
 import com.caimei.model.vo.*;
 import com.caimei.service.OrderService;
 import com.caimei.util.MathUtil;
@@ -19,8 +18,10 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -39,6 +40,8 @@ public class OrderServiceImpl implements OrderService {
     private OrderMapper orderMapper;
     @Resource
     private LoginMapper loginMapper;
+    @Resource
+    private OrderSubmitMapper orderSubmitMapper;
     @Value("${caimei.oldapi}")
     private String domain;
 
@@ -46,7 +49,18 @@ public class OrderServiceImpl implements OrderService {
     public ResponseJson<PageInfo<OrderVo>> getOrderList(Integer orderState, Integer userId, Integer organizeId, Integer pageNum, Integer pageSize) {
         PageHelper.startPage(pageNum, pageSize);
         List<OrderVo> orderList = orderMapper.findOrderList(userId, orderState, organizeId);
+        getOrderData(orderList);
+        PageInfo<OrderVo> pageData = new PageInfo<>(orderList);
+        return ResponseJson.success(pageData);
+    }
+
+    /**
+     * 主订单下信息
+     */
+    private void getOrderData(List<OrderVo> orderList) {
         for (OrderVo order : orderList) {
+            UserPo user = orderSubmitMapper.findUser(order.getUserId().intValue());
+            order.setClubName(user.getName());
             //111,待付待收待发
             if ("11".equals(order.getStatus()) && "1".equals(order.getPayStatus())) {
                 order.setStatus("111");
@@ -87,8 +101,6 @@ public class OrderServiceImpl implements OrderService {
             //设置付款金额
             getDiscernReceipt(order);
         }
-        PageInfo<OrderVo> pageData = new PageInfo<>(orderList);
-        return ResponseJson.success(pageData);
     }
 
     @Override
@@ -318,6 +330,88 @@ public class OrderServiceImpl implements OrderService {
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ResponseJson<String> deleteOrder(Integer orderId) {
+        OrderVo order = orderMapper.findOrder(orderId);
+        if (order == null) {
+            return ResponseJson.error("订单不存在", null);
+        }
+        if (!("6".equals(order.getStatus()))) {
+            return ResponseJson.error("订单异常", null);
+        }
+        orderMapper.deleteOrder(orderId);
+        //逻辑删除子订单
+        orderMapper.deleteShopOrder(orderId);
+        //逻辑删除收款记录
+        List<DiscernReceiptVo> discernReceipt = orderMapper.findDiscernReceipt(orderId);
+        if (discernReceipt != null && discernReceipt.size() > 0) {
+            orderMapper.deleteReceiptOrderRelation(orderId);
+            for (DiscernReceiptVo receipt : discernReceipt) {
+                orderMapper.deleteDiscernReceipt(receipt.getId());
+            }
+        }
+        String[] shopOrderIds = order.getShopOrderIds().split(",");
+        //逻辑删除付款记录
+        for (String shopOrderId : shopOrderIds) {
+            if (StringUtils.isNotBlank(shopOrderId)) {
+                List<CmPayShopRecordPo> payShopRecordList = orderMapper.findPayShopRecord(Integer.valueOf(shopOrderId));
+                if (payShopRecordList != null && payShopRecordList.size() > 0) {
+                    orderMapper.deletePayShopRecord(Integer.valueOf(shopOrderId));
+                    for (CmPayShopRecordPo payShopRecord : payShopRecordList) {
+                        orderMapper.updatePayShop(payShopRecord.getPayShopID());
+                    }
+                }
+            }
+        }
+        return ResponseJson.success(null);
+    }
+
+    @Override
+    public ResponseJson<String> cancelOrder(Integer orderId) {
+        OrderVo order = orderMapper.findOrder(orderId);
+        if (order == null) {
+            return ResponseJson.error("订单不存在", null);
+        }
+        if (!("11".equals(order.getStatus()) || "0".equals(order.getStatus()))) {
+            return ResponseJson.error("订单异常", null);
+        }
+        order.setStatus("6");
+        orderMapper.cancelOrder(orderId);
+        return ResponseJson.success(null);
+    }
+
+    @Override
+    public ResponseJson<PageInfo<OrderVo>> searchOrder(String searchWord, Integer organizeId, Integer pageNum, Integer pageSize) {
+        List<String> searchHistoryList = orderMapper.getSearchHistoryList(organizeId);
+        if (!searchHistoryList.contains(searchWord)) {
+            CmMallOrderSearchHistoryPo searchHistoryPo = new CmMallOrderSearchHistoryPo();
+            searchHistoryPo.setOrganizeID(organizeId);
+            searchHistoryPo.setSearchDate(new Date());
+            searchHistoryPo.setDelFlag("0");
+            searchHistoryPo.setSearchWord(searchWord);
+            orderMapper.insertHistory(searchHistoryPo);
+        }
+        PageHelper.startPage(pageNum, pageSize);
+        List<OrderVo> orderList = orderMapper.searchOrder(searchWord, organizeId);
+        //获取主订单数据
+        getOrderData(orderList);
+        PageInfo<OrderVo> pageData = new PageInfo<>(orderList);
+        return ResponseJson.success(pageData);
+    }
+
+    @Override
+    public ResponseJson<List<String>> getSearchHistory(Integer organizeId) {
+        List<String> searchHistoryList = orderMapper.getSearchHistoryList(organizeId);
+        return ResponseJson.success(searchHistoryList);
+    }
+
+    @Override
+    public ResponseJson<String> deleteSearchHistory(Integer organizeId) {
+        orderMapper.deleteSearchHistory(organizeId);
+        return ResponseJson.success(null);
+    }
+
     /**
      * 支付金额,待付金额
      */

+ 4 - 3
src/main/java/com/caimei/service/impl/OrderSubmitServiceImpl.java

@@ -59,7 +59,7 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
             shopList.forEach(shop -> {
                 shopIds.add(shop.getShopId());
                 //购物车购买
-                List<CartProductVo> products = orderSubmitMapper.findProductListByCart(shop.getShopId(), productId);
+                List<CartProductVo> products = orderSubmitMapper.findProductListByCart(shop.getShopId(), productId, userId);
                 BigDecimal shopTotalPrice = BigDecimal.ZERO;
                 for (CartProductVo product : products) {
                     productGifts.addAll(shoppingCartService.setProductPrice(product));
@@ -252,6 +252,7 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
                     // 商品是否处于活动状态
                     PromotionsPo promotions = productMapper.findPromotionByProductId(product.getId());
                     int priceType = 0;
+                    product.setActStatus(0);
                     if (productType != 2) {
                         if (promotions != null) {
                             // 是否包含活动商品(受订单未支付自动关闭时间影响)  0 否 1 是
@@ -434,7 +435,7 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
             orderProduct.setOrderID(order.getOrderID());
             orderProduct.setOrderNo(order.getOrderNo());
             orderProduct.setOrganizeID(order.getOrganizeID());
-            PromotionsPo promotions = productMapper.findPromotionByProductId(orderProduct.getProductID());
+            PromotionsPo promotions = productMapper.findPromotionByProductId(orderProduct.getOrganizeProductID());
             if (promotions != null) {
                 PromotionsPo orderPromotions = orderSubmitMapper.findOrderPromotions(orderProduct.getOrderID(), promotions.getId());
                 if (orderPromotions != null) {
@@ -554,7 +555,7 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
          * 构造返回参数
          */
         Map<String, String> info = new HashMap<>(5);
-        info.put("orderID", String.valueOf(order.getOrderID()));
+        info.put("orderId", String.valueOf(order.getOrderID()));
         info.put("orderNo", String.valueOf(order.getOrderNo()));
         info.put("orderMark", "#" + order.getOrderID() + "#");
         //应付订单金额

+ 5 - 2
src/main/java/com/caimei/service/impl/PayOrderServiceImpl.java

@@ -2,6 +2,7 @@ package com.caimei.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.caimei.mapper.OrderMapper;
+import com.caimei.mapper.OrderSubmitMapper;
 import com.caimei.mapper.PayOrderMapper;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.dto.PaymentDto;
@@ -44,6 +45,8 @@ public class PayOrderServiceImpl implements PayOrderService {
     private PayOrderMapper payOrderMapper;
     @Resource
     private OrderMapper orderMapper;
+    @Resource
+    private OrderSubmitMapper orderSubmitMapper;
 
     /**
      * 商户标识
@@ -75,7 +78,7 @@ public class PayOrderServiceImpl implements PayOrderService {
 
     @Override
     public ResponseJson<Map<String, Object>> checkoutCounter(Integer orderId) {
-        Map<String, Object> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>(4);
         OrderVo order = orderMapper.findOrder(orderId);
         if (null == order) {
             return ResponseJson.error("订单不存在", null);
@@ -109,7 +112,7 @@ public class PayOrderServiceImpl implements PayOrderService {
         orderProductList.removeIf(orderProductVo -> orderProductVo.getShopId() == 998);
         map.put("orderProductList", orderProductList);
         //机构信息
-        UserPo user = payOrderMapper.findUser(order.getUserId());
+        UserPo user = orderSubmitMapper.findUser(order.getUserId().intValue());
         map.put("userName", user.getName());
         return ResponseJson.success(map);
     }

+ 11 - 10
src/main/java/com/caimei/service/impl/ProductServiceImpl.java

@@ -4,6 +4,10 @@ import com.caimei.mapper.ProductMapper;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.po.*;
 import com.caimei.model.vo.CartProductVo;
+import com.caimei.model.po.ProductDetailInfoPo;
+import com.caimei.model.po.ProductImagePo;
+import com.caimei.model.po.PromotionsPo;
+import com.caimei.model.po.RelatedParametersPo;
 import com.caimei.model.vo.ClubVo;
 import com.caimei.model.vo.LadderPriceVo;
 import com.caimei.model.vo.ProductVo;
@@ -50,7 +54,7 @@ public class ProductServiceImpl implements ProductService {
         if (null == organizeId) {
             return ResponseJson.error("参数异常", null);
         }
-        PageHelper.startPage(pageNum,pageSize);
+        PageHelper.startPage(pageNum, pageSize);
         List<ProductVo> productList = productMapper.findProductList(organizeId, productName);
         for (ProductVo product : productList) {
             setProductPrice(product);
@@ -60,14 +64,12 @@ public class ProductServiceImpl implements ProductService {
     }
 
 
-
-
     @Override
     public ResponseJson<ProductVo> productDetails(Integer productId) {
         ProductVo product = productMapper.findProductByProductId(productId);
         if (product == null) {
             //商品不存在
-            return ResponseJson.error("商品不存在",null);
+            return ResponseJson.error("商品不存在", null);
         }
         String[] split = null;
         //商品标签
@@ -101,7 +103,7 @@ public class ProductServiceImpl implements ProductService {
         String priceGrade = ProductUtils.getPriceGrade(product.getPrice().doubleValue());
         product.setPriceGrade(priceGrade);
         //商品分类
-        String typeName = productMapper.findTypeName(product.getBigTypeId(),product.getSmallTypeId(), product.getTinyTypeId());
+        String typeName = productMapper.findTypeName(product.getBigTypeId(), product.getSmallTypeId(), product.getTinyTypeId());
         product.setTypeName(typeName);
         //品牌名称
         String brandName = productMapper.findBrandNameByBrandId(product.getBrandId());
@@ -118,9 +120,8 @@ public class ProductServiceImpl implements ProductService {
     }
 
 
-
     @Override
-    public void setProductPrice(ProductVo product){
+    public void setProductPrice(ProductVo product) {
         // 设置图片
         product.setMainImage(ProductUtils.getImageURL("product", product.getMainImage(), 0, domain));
         // 设置商品展示价格
@@ -130,9 +131,9 @@ public class ProductServiceImpl implements ProductService {
             product.setPromotion(activity);
             product.setLadderPriceFlag(0);
             // 活动价
-            if (activity.getType() == 1 && null != activity.getTouchPrice()) {
+            if (activity.getMode() == 1) {
                 product.setRetailPrice(activity.getTouchPrice());
-            }else {
+            } else {
                 product.setRetailPrice(product.getPrice());
             }
             if (activity.getMode() == 3) {
@@ -183,7 +184,7 @@ public class ProductServiceImpl implements ProductService {
             //阶梯价列表添加税费
             boolean addTaxFlag = (0 == product.getIncludedTax() && (1 == product.getInvoiceType() || 2 == product.getInvoiceType()));
             if (addTaxFlag) {
-                ladderPriceList.forEach(item->{
+                ladderPriceList.forEach(item -> {
                     item.setBuyPrice(MathUtil.add(item.getBuyPrice(), MathUtil.div(MathUtil.mul(item.getBuyPrice(), product.getClubTaxPoint()), 100)));
                 });
             }

+ 3 - 0
src/main/resources/mapper/AddressMapper.xml

@@ -23,6 +23,9 @@
                  LEFT JOIN city c ON c.cityID = t.cityID
                  LEFT JOIN province p ON p.provinceID = c.provinceID
         WHERE a.userID = #{userId}
+        ORDER BY
+          defaultFlag DESC,
+          addressID ASC
     </select>
 
     <select id="findDefaultAddress" resultType="com.caimei.model.vo.AddressVo">

+ 176 - 11
src/main/resources/mapper/OrderMapper.xml

@@ -24,6 +24,9 @@
           note,
           orderSource,
           orderTime,
+          productCount,
+          presentCount,
+          promotionalGiftsCount,
           invoiceFlag,
           clauseID AS clauseId,
           clauseContent,
@@ -37,21 +40,20 @@
           <include refid="cm_Order_List"></include>
         from cm_order
         where delFlag = '0'
-        AND userID = #{userId}
         AND organizeID = #{organizeId}
-        <if test="orderState == 1 ">
-            AND status = '0'
+        <if test="userId != null ">
+            AND userID = #{userId}
         </if>
-        <if test="orderState == 2 ">
+        <if test="orderState == 1 ">
             AND status IN(11,12,13,21,22,23)
         </if>
-        <if test="orderState == 3 ">
+        <if test="orderState == 2 ">
             AND status IN(11,12,21,22,31,32)
         </if>
-        <if test="orderState == 4 ">
+        <if test="orderState == 3 ">
             AND status IN(12,13,22,23,32,33)
         </if>
-        <if test="orderState == 5 ">
+        <if test="orderState == 4 ">
             AND refundType IN(1,2)
         </if>
         ORDER BY orderTime DESC
@@ -69,6 +71,7 @@
         cso.organizeID AS organizeId,
         cso.userID AS userId,
         cso.shopID AS shopId,
+        cso.itemCount,
         s.name AS shopName,
         s.logo AS shopLogo
         FROM
@@ -103,15 +106,18 @@
           cop.discountPrice,
           cop.includedTax,
           cop.invoiceType,
+          cop.taxRate,
           cop.totalAddedValueTax,
           cop.notOutStore,
-          p.mainImage AS productImage,
-          p.productCategory as productCategory
+          cop.name,
+          cop.productUnit,
+          cop.productImage,
+          cop.productType,
+          cop.orderPromotionsId
         FROM
           cm_order_product cop
-          LEFT JOIN product p ON cop.productID = p.productID
         WHERE
-          shopOrderID = #{shopOrderId}
+          cop.shopOrderID = #{shopOrderId}
     </select>
 
     <select id="findOrderPromotionsById" resultType="com.caimei.model.po.PromotionsPo">
@@ -348,4 +354,163 @@
             #{delFlag}
           )
     </insert>
+
+    <update id="deleteOrder">
+        UPDATE
+          cm_order
+        SET
+          delFlag = 1,
+          updateDate = NOW(),
+          note = '用户发起删除订单'
+        WHERE
+          orderID = #{orderId}
+    </update>
+
+    <update id="deleteShopOrder">
+        UPDATE cm_shop_order SET delFlag = 1 WHERE orderID = #{orderId}
+    </update>
+
+    <update id="deleteReceiptOrderRelation">
+        UPDATE
+          cm_receipt_order_relation
+        SET
+          delFlag = '1'
+        WHERE
+          orderID = #{orderID}
+    </update>
+
+    <update id="deleteDiscernReceipt">
+         UPDATE
+          cm_discern_receipt
+        SET
+          delFlag = '1'
+        WHERE
+          id =  #{id}
+    </update>
+
+    <select id="findPayShopRecord" resultType="com.caimei.model.po.CmPayShopRecordPo">
+        SELECT
+            id,
+            shopID,
+            shopOrderID,
+            shopOrderNo,
+            payAmount,
+            wipePayment,
+            payType,
+            payTime,
+            payShopID,
+            status,
+            delFlag
+        FROM
+          cm_pay_shop_record
+        WHERE
+          delFlag = '0'
+          AND shopOrderID = #{shopOrderId}
+        ORDER BY payTime desc
+    </select>
+
+    <update id="deletePayShopRecord">
+        UPDATE
+          cm_pay_shop_record
+        SET
+          delFlag = '0'
+        WHERE
+          shopOrderID = #{shopOrderId}
+    </update>
+
+    <update id="updatePayShop">
+        UPDATE
+          cm_pay_shop
+        SET
+          delFlag = '0'
+    WHERE
+          id = #{payShopId}
+    </update>
+
+    <update id="cancelOrder">
+        UPDATE
+          cm_order
+        SET
+          STATUS = 6,
+          updateDate = NOW(),
+          closeReason = '用户主动取消订单',
+          closeTime = NOW()
+        WHERE
+          orderID = #{orderId}
+    </update>
+
+    <select id="searchOrder" resultType="com.caimei.model.vo.OrderVo">
+        SELECT
+          co.orderID AS orderId,
+          co.orderNo,
+          co.organizeID AS organizeId,
+          co.userID AS userId,
+          co.buyUserID AS buyUserId,
+          co.status,
+          co.shopOrderIDs AS shopOrderIds,
+          co.receiptStatus,
+          co.payStatus,
+          co.sendOutStatus,
+          co.refundType,
+          co.onlinePayFlag,
+          co.payTotalFee,
+          co.payableAmount,
+          co.balancePayFee,
+          co.discountFee,
+          co.promotionFullReduction,
+          co.note,
+          co.orderSource,
+          co.orderTime,
+          co.productCount,
+          co.presentCount,
+          co.promotionalGiftsCount,
+          co.invoiceFlag,
+          co.clauseID AS clauseId,
+          co.clauseContent,
+          co.clauseName,
+          co.freePostFlag,
+          co.freight,
+          co.closeReason
+        FROM
+          cm_order co
+          LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
+        WHERE
+          co.organizeID = #{organizeId}
+          AND co.delFlag = '0'
+          AND cop.name LIKE CONCAT('%',#{searchWord},'%')
+        GROUP BY
+          co.orderID
+        ORDER BY
+          co.orderTime DESC
+    </select>
+
+    <select id="getSearchHistoryList" resultType="string">
+        SELECT
+          searchWord
+        FROM
+          cm_mall_order_search_history
+        WHERE
+          organizeID = #{organizeId}
+          AND delFlag = 0
+        ORDER BY
+          searchDate DESC
+        LIMIT
+          10
+    </select>
+
+    <delete id="deleteSearchHistory">
+        DELETE FROM cm_mall_order_search_history WHERE organizeID = #{organizeId}
+    </delete>
+
+    <insert id="insertHistory">
+        INSERT INTO `cm_mall_order_search_history` (
+          `organizeID`, `openID`, `searchWord`,
+          `searchDate`, `delFlag`
+        )
+        VALUES
+          (
+            #{organizeID}, #{openID}, #{searchWord},
+            #{searchDate}, #{delFlag}
+          )
+    </insert>
 </mapper>

+ 18 - 14
src/main/resources/mapper/OrderSubmitMapper.xml

@@ -5,8 +5,8 @@
 <mapper namespace="com.caimei.mapper.OrderSubmitMapper">
     <sql id="Product_Column_List">
         p.productID, p.brandID,p.bigTypeID,p.smallTypeID, p.tinyTypeID,p.productCategory, p.preferredFlag, p.selfTypeID, p.shopID, p.`name`, p.aliasName, p.searchKey, p.productRemarks,
-        p.normalPrice, p.price, p.highestUserLevelPrice, lowestUserLevelPrice, p.lowestUserLevelID,
-        p.price0, p.price0Grade, p.price0Text, price0TextFlag, price1, p.price1Grade, p.price1Text,
+        p.normalPrice, p.price, p.highestUserLevelPrice, p.lowestUserLevelPrice, p.lowestUserLevelID,
+        p.price0, p.price0Grade, p.price0Text, p.price0TextFlag, p.price1, p.price1Grade, p.price1Text,
         p.price1TextFlag, p.price8, p.price8Grade, p.price8Text, p.price8Text as beautyActFlag, p.price8TextFlag, p.ladderPriceFlag,
         p.price2, p.price3, p.price4, p.price5, p.price6, p.price7, p.fee, p.stock, p.hasSkuFlag, p.mainImage,
         p.propertiesInfo, p.addTime, p.updateTime, p.sellNumber, p.weekSellNumber, p.beforeValidFlag,
@@ -41,6 +41,7 @@
         <foreach item="productId" index="index" collection="productIds" open="(" separator="," close=")">
             #{productId}
         </foreach>
+        GROUP BY s.shopID
     </select>
 
     <select id="findProductListByCart" resultType="com.caimei.model.vo.CartProductVo">
@@ -68,6 +69,7 @@
             #{productId}
         </foreach>
           AND p.shopID = #{shopId}
+          AND cmc.userID = #{userId}
     </select>
 
     <select id="findCartByProductId" resultType="com.caimei.model.vo.CartProductVo">
@@ -125,7 +127,8 @@
           bindMobile,
           userName,
           realName,
-          name
+          name,
+          clubID
         FROM
           user
         WHERE
@@ -138,6 +141,9 @@
             <if test="orderNo != null">
                 orderNo,
             </if>
+            <if test="organizeID != null">
+                organizeID,
+            </if>
             <if test="userID != null">
                 userID,
             </if>
@@ -314,6 +320,9 @@
             <if test="orderNo != null">
                 #{orderNo,jdbcType=VARCHAR},
             </if>
+            <if test="organizeID != null">
+                #{organizeID},
+            </if>
             <if test="userID != null">
                 #{userID,jdbcType=BIGINT},
             </if>
@@ -736,9 +745,6 @@
             <if test="shopOtherFee != null">
                 shopOtherFee,
             </if>
-            <if test="refunding != null">
-                refunding,
-            </if>
             <if test="costType != null">
                 costType,
             </if>
@@ -768,7 +774,9 @@
             <if test="orderID != null">
                 #{orderID,jdbcType=BIGINT},
             </if>
-            <if test="organizeID != null">0,</if>
+            <if test="organizeID != null">
+                #{organizeID},
+            </if>
             <if test="userID != null">
                 #{userID,jdbcType=INTEGER},
             </if>
@@ -958,9 +966,6 @@
             <if test="shopOtherFee != null">
                 #{shopOtherFee,jdbcType=DECIMAL},
             </if>
-            <if test="refunding != null">
-                #{refunding,jdbcType=CHAR},
-            </if>
             <if test="costType != null">
                 #{costType,jdbcType=CHAR},
             </if>
@@ -1203,7 +1208,9 @@
             <if test="organizeProductID != null">
                 #{organizeProductID,jdbcType=INTEGER},
             </if>
-            <if test="organizeID != null">0,</if>
+            <if test="organizeID != null">
+                #{organizeID},
+            </if>
             <if test="num != null">
                 #{num,jdbcType=INTEGER},
             </if>
@@ -1393,9 +1400,6 @@
             <if test="orderNo != null">
                 orderNo = #{orderNo,jdbcType=VARCHAR},
             </if>
-            <if test="organizeID != null">
-                organizeID = 0,
-            </if>
             <if test="userID != null">
                 userID = #{userID,jdbcType=BIGINT},
             </if>

+ 56 - 11
src/main/resources/mapper/PayOrderMapper.xml

@@ -12,10 +12,10 @@
           LEFT JOIN cm_discern_receipt cdr ON cror.receiptID = cdr.id
         WHERE
           (
-            cror.orderID = #{orderID}
+            cror.orderID = #{orderId}
             AND cror.relationType = '2'
           OR
-            cror.orderID = #{shopOrderIDs}
+            cror.orderID = #{shopOrderIds}
             AND cror.relationType = '1'
           )
           AND cror.delFlag = '0'
@@ -237,7 +237,15 @@
 
     <select id="findOrderPayLink" resultType="com.caimei.model.vo.OrderPayLinkVo">
         SELECT
-        *
+        `id`,
+        `orderId`,
+        `linkLogo`,
+        `unpaidAmount`,
+        `generateTime`,
+        `effectiveTime`,
+        `payStatus`,
+        `payType`,
+        `delFlag`
         FROM
         cm_order_pay_link
         WHERE
@@ -339,7 +347,15 @@
 
     <select id="getOrderPayLink" resultType="com.caimei.model.vo.OrderPayLinkVo">
         SELECT
-          *
+            `id`,
+          `orderId`,
+          `linkLogo`,
+          `unpaidAmount`,
+          `generateTime`,
+          `effectiveTime`,
+          `payStatus`,
+          `payType`,
+          `delFlag`
         FROM
           cm_order_pay_link
         WHERE
@@ -348,17 +364,46 @@
     </select>
 
     <select id="findAllOrderProduct" resultType="com.caimei.model.vo.OrderProductVo">
-        SELECT * FROM cm_order_product WHERE orderID = #{orderId} ORDER BY shopID ASC, productID ASC
-    </select>
-
-    <select id="findUser" resultType="com.caimei.model.po.UserPo">
         SELECT
-          *
+          orderProductID AS orderProductId,
+          orderID AS orderId,
+          shopOrderID AS shopOrderId,
+          shopID AS shopId,
+          productID AS productId,
+          organizeProductID AS organizeProductId,
+          organizeID AS organizeId,
+          num,
+          presentNum,
+          outStoreType,
+          productNo,
+          price,
+          normalPrice,
+          costPrice,
+          price1,
+          totalAmount,
+          totalFee,
+          shouldPayFee,
+          discount,
+          discountPrice,
+          includedTax,
+          invoiceType,
+          taxRate,
+          totalAddedValueTax,
+          notOutStore,
+          name,
+          productUnit,
+          productImage,
+          productType,
+          orderPromotionsId
         FROM
-          USER
+          cm_order_product
         WHERE
-          userID = #{userID}
+          orderID = #{orderId}
+        ORDER BY
+          shopID ASC,
+          productID ASC
     </select>
+
     <select id="getPayOnLineSwitch" resultType="java.lang.Integer">
         select status from cm_pay_online_switch where id=1
     </select>

+ 1 - 1
src/main/resources/mapper/ShoppingCartMapper.xml

@@ -153,6 +153,6 @@
     </select>
 
     <delete id="deleteCartByProductId">
-        DELETE FROM cm_mall_cart WHERE userID = #{cartId} AND productID = #{productId}
+        DELETE FROM cm_mall_cart WHERE userID = #{userId} AND productID = #{productId}
     </delete>
 </mapper>