فهرست منبع

联合丽格改版

zhijiezhao 2 سال پیش
والد
کامیت
22886e3c86
30فایلهای تغییر یافته به همراه419 افزوده شده و 366 حذف شده
  1. 10 4
      src/main/java/com/caimei/modules/groupbuy/controller/GroupBuyController.java
  2. 7 1
      src/main/java/com/caimei/modules/groupbuy/entity/BuyerDto.java
  3. 44 19
      src/main/java/com/caimei/modules/groupbuy/service/ProcureService.java
  4. 3 3
      src/main/java/com/caimei/modules/order/controller/OrderDeliverController.java
  5. 5 2
      src/main/java/com/caimei/modules/order/controller/OrganizeOrderController.java
  6. 2 0
      src/main/java/com/caimei/modules/order/dao/LogisticsBatchDao.java
  7. 2 0
      src/main/java/com/caimei/modules/order/dao/LogisticsInformationDao.java
  8. 3 0
      src/main/java/com/caimei/modules/order/dao/LogisticsRecordDao.java
  9. 27 0
      src/main/java/com/caimei/modules/order/entity/DeliverDto.java
  10. 26 87
      src/main/java/com/caimei/modules/order/entity/LogisticsBatch.java
  11. 5 3
      src/main/java/com/caimei/modules/order/entity/LogisticsDetailVo.java
  12. 36 131
      src/main/java/com/caimei/modules/order/entity/LogisticsInformation.java
  13. 24 86
      src/main/java/com/caimei/modules/order/entity/LogisticsRecord.java
  14. 2 0
      src/main/java/com/caimei/modules/order/entity/NewOrderProduct.java
  15. 24 0
      src/main/java/com/caimei/modules/order/entity/Transportation.java
  16. 6 0
      src/main/java/com/caimei/modules/order/service/OrderDeliverService.java
  17. 84 7
      src/main/java/com/caimei/modules/order/service/impl/OrderDeliverServiceImpl.java
  18. 3 5
      src/main/java/com/caimei/modules/order/service/impl/PayShopServiceImpl.java
  19. 2 2
      src/main/java/com/caimei/modules/order/util/OrderUtils.java
  20. 3 0
      src/main/java/com/caimei/modules/shiro/dao/UserDao.java
  21. 2 1
      src/main/resources/mapper/CmMallOrganizeProductsMapper.xml
  22. 1 1
      src/main/resources/mapper/CmUserMapper.xml
  23. 26 2
      src/main/resources/mapper/LogisticsBatchMapper.xml
  24. 31 1
      src/main/resources/mapper/LogisticsInformationMapper.xml
  25. 23 1
      src/main/resources/mapper/LogisticsRecordMapper.xml
  26. 5 5
      src/main/resources/mapper/NewOrderMapper.xml
  27. 1 0
      src/main/resources/mapper/NewOrderProductMapper.xml
  28. 2 2
      src/main/resources/mapper/NewShopOrderMapper.xml
  29. 3 3
      src/main/resources/mapper/PayShopDao.xml
  30. 7 0
      src/main/resources/mapper/UserMapper.xml

+ 10 - 4
src/main/java/com/caimei/modules/groupbuy/controller/GroupBuyController.java

@@ -31,16 +31,22 @@ public class GroupBuyController {
             @ApiImplicitParam(required = true, name = "pageNum", value = "当前页码"),
             @ApiImplicitParam(required = true, name = "pageSize", value = "每页大小")
     })
-    @PostMapping("/buy/list")
-    public ResponseJson<Page<BuyerDto>> saveTheme(@RequestBody BuyerDto dto,
+    @GetMapping("/buy/list")
+    public ResponseJson<Page<BuyerDto>> saveTheme(BuyerDto dto,
                                                   @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                   @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
         return ResponseJson.success(procureService.findBuyListByPro(dto, pageNum, pageSize));
     }
 
-    @ApiImplicitParam(required = true, name = "id", value = "集采id")
+    @ApiOperation("集采详情")
     @GetMapping("/detail")
-    public ResponseJson<Map<String, Object>> checkDetail(String id){
+    public ResponseJson<Map<String, Object>> checkDetail(String id) {
         return ResponseJson.success(procureService.findDetail(id));
     }
+
+    @ApiOperation("置为已完成")
+    @GetMapping("/done")
+    public ResponseJson checkDone(String id) {
+        return procureService.checkDone(id);
+    }
 }

+ 7 - 1
src/main/java/com/caimei/modules/groupbuy/entity/BuyerDto.java

@@ -36,7 +36,7 @@ public class BuyerDto {
     @ApiModelProperty("创建人Id")
     private String createUserId;
 
-    @ApiModelProperty("是否实现 0 以实现 1 未实现")
+    @ApiModelProperty("是否实现 1 以实现 0 未实现")
     private String isAchieve;
 
     @ApiModelProperty("是否删除 0 未删除 其他删除")
@@ -45,6 +45,12 @@ public class BuyerDto {
     @ApiModelProperty("机构名称")
     private String clubName;
 
+    @ApiModelProperty("联系人")
+    private String linkMan;
+
+    @ApiModelProperty("手机号")
+    private String mobile;
+
 
 
     @ApiModelProperty("参与机构数")

+ 44 - 19
src/main/java/com/caimei/modules/groupbuy/service/ProcureService.java

@@ -1,11 +1,14 @@
 package com.caimei.modules.groupbuy.service;
 
 
+import com.caimei.modules.club.entity.CmUser;
 import com.caimei.modules.club.entity.Page;
 import com.caimei.modules.groupbuy.dao.ProcureRepository;
 import com.caimei.modules.groupbuy.entity.AdditionalPo;
 import com.caimei.modules.groupbuy.entity.BuyerDto;
 import com.caimei.modules.groupbuy.entity.ProcurePo;
+import com.caimei.modules.shiro.dao.UserDao;
+import com.caimei.utils.ResponseJson;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.data.domain.PageImpl;
@@ -16,12 +19,12 @@ import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.stereotype.Service;
 import org.springframework.data.mongodb.core.query.Query;
+import sun.util.calendar.BaseCalendar;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import javax.xml.ws.Response;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.regex.Pattern;
 
 @Service
@@ -33,6 +36,9 @@ public class ProcureService {
     private MongoTemplate mongoTemplate;
     @Resource
     private AdditionalService additionalService;
+    @Resource
+    private UserDao userDao;
+
     /**
      * 保存
      *
@@ -134,16 +140,27 @@ public class ProcureService {
     }
 
     public Page<BuyerDto> findBuyListByPro(BuyerDto dto, Integer pageNum, Integer pageSize) {
-        Pageable pageable = PageRequest.of(pageNum, pageSize);
+        Pageable pageable = PageRequest.of(pageNum - 1, pageSize);
         Query query = new Query();
-        Criteria criteria = setCriteriaVal(dto);
-        query.addCriteria(criteria).with(Sort.by(Sort.Direction.DESC, "saveTime")).with(pageable);
+        setCriteriaVal(query, dto);
+        query.with(Sort.by(Sort.Direction.DESC, "saveTime")).with(pageable);
         List<ProcurePo> procurePos = mongoTemplate.find(query, ProcurePo.class);
         List<BuyerDto> buyerDtos = new ArrayList<>();
+        // 定义格式化字符串
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         procurePos.forEach(p -> {
             BuyerDto buyerDto = new BuyerDto();
+            Date date = new Date(Long.parseLong(p.getSaveTime()));
+            p.setSaveTime(dateFormat.format(date));
             int count = (int) mongoTemplate.count(Query.query(Criteria.where("procureId").is(p.getId())), AdditionalPo.class);
+            CmUser linkMan = userDao.findLinkMan(p.getUserId());
+            buyerDto.setLinkMan(linkMan.getLinkMan());
+            buyerDto.setMobile(linkMan.getMobile());
             buyerDto.setClubCount(count);
+            // 1未完成 2已完成 3已删除
+            Integer status = "0".equals(p.getIsAchieve()) ? 1 : 2;
+            status = !"0".equals(p.getDelFlag()) ? 3 : status;
+            buyerDto.setStatus(status);
             BeanUtils.copyProperties(p, buyerDto);
             buyerDtos.add(buyerDto);
         });
@@ -165,30 +182,31 @@ public class ProcureService {
     }
 
 
-    public Criteria setCriteriaVal(BuyerDto dto) {
-        Criteria criteria = new Criteria();
+    public Query setCriteriaVal(Query query, BuyerDto dto) {
+        // 发布者有创建者id
+        query.addCriteria(Criteria.where("createUserId").ne(null));
         if (StringUtils.isNotBlank(dto.getClubName())) {
             Pattern pattern = Pattern.compile("^.*" + dto.getClubName() + ".*$", Pattern.CASE_INSENSITIVE);
-            criteria.andOperator(Criteria.where("clubName").regex(pattern));
+            query.addCriteria(Criteria.where("clubName").regex(pattern));
         }
         if (StringUtils.isNotBlank(dto.getProductName())) {
             Pattern pattern = Pattern.compile("^.*" + dto.getProductName() + ".*$", Pattern.CASE_INSENSITIVE);
-            criteria.andOperator(Criteria.where("productName").regex(pattern));
+            query.addCriteria(Criteria.where("productName").regex(pattern));
         }
         if (null != dto.getStatus()) {
             if (3 == dto.getStatus()) {
-                criteria.andOperator(Criteria.where("delFlag").is("1"));
+                query.addCriteria(Criteria.where("delFlag").is("1"));
             } else {
-                criteria.andOperator(Criteria.where("isAchieve").is(dto.getStatus().toString()));
+                query.addCriteria(Criteria.where("isAchieve").is(dto.getStatus().toString()));
             }
         }
         if (StringUtils.isNotBlank(dto.getStartSaveTime())) {
-            criteria.andOperator(Criteria.where("saveTime").gte(dto.getStartSaveTime()));
+            query.addCriteria(Criteria.where("saveTime").gte(dto.getStartSaveTime()));
         }
         if (StringUtils.isNotBlank(dto.getEndSaveTime())) {
-            criteria.andOperator(Criteria.where("saveTime")).lte(dto.getEndSaveTime());
+            query.addCriteria(Criteria.where("saveTime").lte(dto.getEndSaveTime()));
         }
-        return criteria;
+        return query;
     }
 
     public Map<String, Object> findDetail(String id) {
@@ -197,13 +215,20 @@ public class ProcureService {
         // 参与者
         List<AdditionalPo> procureById = additionalService.findProcureById(byId.getId());
         List<ProcurePo> procurePos = new ArrayList<>();
-        procureById.forEach(p->{
+        procureById.forEach(p -> {
             ProcurePo byId1 = findById(p.getProcureId());
             procurePos.add(byId1);
         });
         Map<String, Object> map = new HashMap<>(2);
-        map.put("publishMan",byId);
-        map.put("followMan",procurePos);
+        map.put("publishMan", byId);
+        map.put("followMan", procurePos);
         return map;
     }
+
+    public ResponseJson checkDone(String id) {
+        ProcurePo byId = findById(id);
+        byId.setIsAchieve("1");
+        update(byId);
+        return ResponseJson.success();
+    }
 }

+ 3 - 3
src/main/java/com/caimei/modules/order/controller/OrderDeliverController.java

@@ -1,5 +1,6 @@
 package com.caimei.modules.order.controller;
 
+import com.caimei.modules.order.entity.DeliverDto;
 import com.caimei.modules.order.entity.NewOrder;
 import com.caimei.modules.order.service.OrderDeliverService;
 import com.caimei.utils.ResponseJson;
@@ -26,7 +27,6 @@ public class OrderDeliverController {
     private OrderDeliverService deliverService;
 
     @ApiOperation("去发货")
-    @ApiImplicitParam(required = true, name = "orderId", value = "订单Id")
     @GetMapping("/to/deliver/{orderId}")
     public ResponseJson<NewOrder> toDeliver(@PathVariable("id") Integer orderId) {
         return ResponseJson.success(deliverService.toDeliver(orderId));
@@ -34,7 +34,7 @@ public class OrderDeliverController {
 
     @ApiOperation("确认发货")
     @PostMapping("/confirm/deliver")
-    public ResponseJson confirmDeliver() {
-        return ResponseJson.success(deliverService.confirmDeliver());
+    public ResponseJson confirmDeliver(DeliverDto dto) {
+        return deliverService.confirmDeliver(dto);
     }
 }

+ 5 - 2
src/main/java/com/caimei/modules/order/controller/OrganizeOrderController.java

@@ -101,8 +101,11 @@ public class OrganizeOrderController {
         cmReturnedPurchase.setStatus("2");
         cmReturnedPurchase.setOrderId(order.getOrderId());
         List<CmReturnedPurchase> dataList = cmReturnedPurchaseService.getReturnedPurchaseList(cmReturnedPurchase);
-        Double returnedPurchaseFee = 0D;    //退款(退货)总金额
-        Double refundFee = 0D;  //退款总额(给买家)
+
+        //退款(退货)总金额
+        Double returnedPurchaseFee = 0D;
+        //退款总额(给买家)
+        Double refundFee = 0D;
         for (CmReturnedPurchase bean : dataList) {
             if (!"3".equals(bean.getStatus())) {
                 returnedPurchaseFee += bean.getReturnedPurchaseFee();

+ 2 - 0
src/main/java/com/caimei/modules/order/dao/LogisticsBatchDao.java

@@ -10,4 +10,6 @@ import java.util.List;
 public interface LogisticsBatchDao {
 
     List<LogisticsBatch> findBatch(@Param("orderId")Integer orderId, @Param("logisticsBatchId")String logisticsBatchId);
+
+    void insert(LogisticsBatch batch);
 }

+ 2 - 0
src/main/java/com/caimei/modules/order/dao/LogisticsInformationDao.java

@@ -10,4 +10,6 @@ import java.util.List;
 public interface LogisticsInformationDao {
     
     List<LogisticsInformation> findByLogisticsBatchId(@Param("logisticsBatchId") Integer logisticsBatchId);
+
+    void insert(LogisticsInformation formation);
 }

+ 3 - 0
src/main/java/com/caimei/modules/order/dao/LogisticsRecordDao.java

@@ -1,5 +1,6 @@
 package com.caimei.modules.order.dao;
 
+import com.caimei.modules.order.entity.LogisticsInformation;
 import com.caimei.modules.order.entity.LogisticsRecord;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -10,4 +11,6 @@ import java.util.List;
 public interface LogisticsRecordDao {
 
     List<LogisticsRecord> findByLogisticsBatchId(@Param("logisticsBatchId") Integer logisticsBatchId);
+
+    void insert(LogisticsRecord record);
 }

+ 27 - 0
src/main/java/com/caimei/modules/order/entity/DeliverDto.java

@@ -0,0 +1,27 @@
+package com.caimei.modules.order.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zzj
+ */
+@ApiModel(description = "发货实体对象")
+@Data
+public class DeliverDto {
+
+    @ApiModelProperty("发货订单商品")
+    private List<NewOrderProduct> orderProducts;
+
+    @ApiModelProperty("发货图片")
+    private List<String> images;
+
+    @ApiModelProperty("发货备注")
+    private String remark;
+
+    @ApiModelProperty("快递物流信息")
+    private List<Transportation> transportations;
+}

+ 26 - 87
src/main/java/com/caimei/modules/order/entity/LogisticsBatch.java

@@ -1,98 +1,37 @@
 package com.caimei.modules.order.entity;
 
 
-import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
-/**
- * @author lwt
- * @date 2018-08-13
- * @description 发货批次
- */
+@ApiModel(description="发货批次实体")
+@Data
 public class LogisticsBatch {
+    @ApiModelProperty("发货批次id")
     private Integer id;
-    private Integer shopOrderID;//子订单ID
-    private Integer orderID;//主订单ID
-    private Integer outStoreTimes;//第几批发货
-    private String mailer;//邮寄者  0 采美   1 供应商
-    private Integer shopID;//供应商ID
-    private Date updateDate;//最后更新时间
+    @ApiModelProperty("子订单Id")
+    private Integer shopOrderId;
+    @ApiModelProperty("主订单Id")
+    private Integer orderId;
+    @ApiModelProperty("第几批发货")
+    private Integer outStoreTimes;
+    @ApiModelProperty("邮寄者 0采美,1供应商,2组织")
+    private Integer mailer;
+    @ApiModelProperty("供应商Id")
+    private Integer shopId;
+    @ApiModelProperty("最后更新时间")
+    private Date updateDate;
+    @ApiModelProperty("发货时间")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date deliveryTime;//发货时间
-    private Date receiptTime;//收货时间
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public Integer getShopOrderID() {
-        return shopOrderID;
-    }
-
-    public void setShopOrderID(Integer shopOrderID) {
-        this.shopOrderID = shopOrderID;
-    }
-
-    public Integer getOrderID() {
-        return orderID;
-    }
-
-    public void setOrderID(Integer orderID) {
-        this.orderID = orderID;
-    }
-
-    public Integer getOutStoreTimes() {
-        return outStoreTimes;
-    }
-
-    public void setOutStoreTimes(Integer outStoreTimes) {
-        this.outStoreTimes = outStoreTimes;
-    }
-
-    public String getMailer() {
-        return mailer;
-    }
-
-    public void setMailer(String mailer) {
-        this.mailer = mailer;
-    }
-
-    public Integer getShopID() {
-        return shopID;
-    }
-
-    public void setShopID(Integer shopID) {
-        this.shopID = shopID;
-    }
-
-    public Date getUpdateDate() {
-        return updateDate;
-    }
-
-    public void setUpdateDate(Date updateDate) {
-        this.updateDate = updateDate;
-    }
-
-    public Date getDeliveryTime() {
-        return deliveryTime;
-    }
-
-    public void setDeliveryTime(Date deliveryTime) {
-        this.deliveryTime = deliveryTime;
-    }
-
-    public Date getReceiptTime() {
-        return receiptTime;
-    }
-
-    public void setReceiptTime(Date receiptTime) {
-        this.receiptTime = receiptTime;
-    }
+    private Date deliveryTime;
+    @ApiModelProperty("收货时间")
+    private Date receiptTime;
+    @ApiModelProperty("备注")
+    private String remark;
+    @ApiModelProperty("备注图片,以##隔开")
+    private String remarkImage;
 }

+ 5 - 3
src/main/java/com/caimei/modules/order/entity/LogisticsDetailVo.java

@@ -1,11 +1,13 @@
 package com.caimei.modules.order.entity;
 
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
-/**
- * 单条物流信息展示
- */
+
+@ApiModel(description = "单条物流信息展示")
 public class LogisticsDetailVo {
 
     private String time;

+ 36 - 131
src/main/java/com/caimei/modules/order/entity/LogisticsInformation.java

@@ -1,139 +1,44 @@
 package com.caimei.modules.order.entity;
 
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
 import java.util.Date;
 import java.util.List;
 
-/**
- * @author lwt
- * @date 2018-08-13
- * @description 物流信息表
- */
+@ApiModel(description = "物流信息表")
+@Data
 public class LogisticsInformation {
-    private Integer logisticsBatchID; // 发货批次表ID
-    private String type; // 类型:1 采美365  2 呵呵商城 3 大宗采购'
-    private Integer shopOrderID;
-    private Integer orderID;
-    private String orderProductID;
-    private String nu; //快递单号
-    private String state; //快递单当前的状态(0:在途,即货物处于运输过程中;1:揽件,货物已由快递公司揽收并且产生了第一条跟踪信息;2:疑难,货物寄送过程出了问题;3:签收,收件人已签收;4:退签,即货物由于用户拒签、超区等原因退回,而且发件人已经签收;5:派件,即快递正在进行同城派件;6:退回,货物正处于退回发件人的途中;)
-    private String info; //物流跟踪信息
-    private String logisticsCompanyName; //物流公司名称
-    private String logisticsCompanyCode; //物流公司代码
-    private Integer shopID; //供应商ID
-    private String remarks; //备注
-    private Date updateDate; //最后更新时间
-    private List<LogisticsDetailVo> logisticsDetailVos; // 格式化后的物流跟踪信息
-
-    public Integer getLogisticsBatchID() {
-        return logisticsBatchID;
-    }
-
-    public void setLogisticsBatchID(Integer logisticsBatchID) {
-        this.logisticsBatchID = logisticsBatchID;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public Integer getShopOrderID() {
-        return shopOrderID;
-    }
-
-    public void setShopOrderID(Integer shopOrderID) {
-        this.shopOrderID = shopOrderID;
-    }
-
-    public Integer getOrderID() {
-        return orderID;
-    }
-
-    public void setOrderID(Integer orderID) {
-        this.orderID = orderID;
-    }
-
-    public String getOrderProductID() {
-        return orderProductID;
-    }
-
-    public void setOrderProductID(String orderProductID) {
-        this.orderProductID = orderProductID;
-    }
-
-    public String getNu() {
-        return nu;
-    }
-
-    public void setNu(String nu) {
-        this.nu = nu;
-    }
-
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    public String getInfo() {
-        return info;
-    }
-
-    public void setInfo(String info) {
-        this.info = info;
-    }
-
-    public String getLogisticsCompanyName() {
-        return logisticsCompanyName;
-    }
-
-    public void setLogisticsCompanyName(String logisticsCompanyName) {
-        this.logisticsCompanyName = logisticsCompanyName;
-    }
-
-    public String getLogisticsCompanyCode() {
-        return logisticsCompanyCode;
-    }
-
-    public void setLogisticsCompanyCode(String logisticsCompanyCode) {
-        this.logisticsCompanyCode = logisticsCompanyCode;
-    }
-
-    public String getRemarks() {
-        return remarks;
-    }
-
-    public void setRemarks(String remarks) {
-        this.remarks = remarks;
-    }
-
-    public Date getUpdateDate() {
-        return updateDate;
-    }
-
-    public void setUpdateDate(Date updateDate) {
-        this.updateDate = updateDate;
-    }
-
-    public Integer getShopID() {
-        return shopID;
-    }
-
-    public void setShopID(Integer shopID) {
-        this.shopID = shopID;
-    }
-
-    public List<LogisticsDetailVo> getLogisticsDetailVos() {
-        return logisticsDetailVos;
-    }
-
-    public void setLogisticsDetailVos(List<LogisticsDetailVo> logisticsDetailVos) {
-        this.logisticsDetailVos = logisticsDetailVos;
-    }
+    @ApiModelProperty("发货批次表Id")
+    private Integer logisticsBatchId;
+    @ApiModelProperty("类型:1 采美365  2 呵呵商城 3 大宗采购 4 组织发货")
+    private Integer type;
+    @ApiModelProperty("shopOrderId")
+    private Integer shopOrderId;
+    @ApiModelProperty("orderId")
+    private Integer orderId;
+    @ApiModelProperty("orderProductId")
+    private String orderProductId;
+    @ApiModelProperty("快递单号")
+    private String nu;
+    @ApiModelProperty("快递单当前的状态(0:在途,即货物处于运输过程中;1:揽件,货物已由快递公司揽收并且产生了第一条跟踪信息;" +
+            "2:疑难,货物寄送过程出了问题;3:签收,收件人已签收;" +
+            "4:退签,即货物由于用户拒签、超区等原因退回,而且发件人已经签收;5:派件,即快递正在进行同城派件;6:退回,货物正处于退回发件人的途中;)")
+    private String state;
+    @ApiModelProperty("物流跟踪信息")
+    private String info;
+    @ApiModelProperty("物流公司名称")
+    private String logisticsCompanyName;
+    @ApiModelProperty("物流公司代码")
+    private String logisticsCompanyCode;
+    @ApiModelProperty("供应商Id")
+    private Integer shopId;
+    @ApiModelProperty("备注")
+    private String remarks;
+    @ApiModelProperty("最后更新时间")
+    private Date updateDate;
+    @ApiModelProperty("格式化后的物流跟踪信息")
+    private List<LogisticsDetailVo> logisticsDetailVos;
 }

+ 24 - 86
src/main/java/com/caimei/modules/order/entity/LogisticsRecord.java

@@ -1,93 +1,31 @@
 package com.caimei.modules.order.entity;
 
 
-/**
- * @author lwt
- * @date 2018-07-24
- * @description 发货记录
- */
-public class LogisticsRecord{
-
-    private Integer logisticsBatchID; //发货物流批次ID
-    private Integer orderID; //子订单ID
-    private Integer shopOrderID; //主订单ID
-    private Integer orderProductID; //订单商品ID
-    private Integer buyNum; //商品购买数量
-    private Integer num; //此次发货数量
-    private Integer productID; //商品ID
-    private String productName; //商品名称
-    private String image; //商品图片
-
-
-    public Integer getLogisticsBatchID() {
-        return logisticsBatchID;
-    }
-
-    public void setLogisticsBatchID(Integer logisticsBatchID) {
-        this.logisticsBatchID = logisticsBatchID;
-    }
-
-    public Integer getOrderID() {
-        return orderID;
-    }
-
-    public void setOrderID(Integer orderID) {
-        this.orderID = orderID;
-    }
-
-    public Integer getShopOrderID() {
-        return shopOrderID;
-    }
-
-    public void setShopOrderID(Integer shopOrderID) {
-        this.shopOrderID = shopOrderID;
-    }
-
-    public Integer getOrderProductID() {
-        return orderProductID;
-    }
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
-    public void setOrderProductID(Integer orderProductID) {
-        this.orderProductID = orderProductID;
-    }
 
-    public Integer getBuyNum() {
-        return buyNum;
-    }
-
-    public void setBuyNum(Integer buyNum) {
-        this.buyNum = buyNum;
-    }
-
-    public Integer getNum() {
-        return num;
-    }
-
-    public void setNum(Integer num) {
-        this.num = num;
-    }
-
-    public Integer getProductID() {
-        return productID;
-    }
-
-    public void setProductID(Integer productID) {
-        this.productID = productID;
-    }
-
-    public String getProductName() {
-        return productName;
-    }
-
-    public void setProductName(String productName) {
-        this.productName = productName;
-    }
-
-    public String getImage() {
-        return image;
-    }
+@ApiModel(description="发货记录")
+@Data
+public class LogisticsRecord{
 
-    public void setImage(String image) {
-        this.image = image;
-    }
+    @ApiModelProperty("发货物流批次Id")
+    private Integer logisticsBatchId;
+    @ApiModelProperty("订单Id")
+    private Integer orderId;
+    @ApiModelProperty("子订单Id")
+    private Integer shopOrderId;
+    @ApiModelProperty("订单商品Id")
+    private Integer orderProductId;
+    @ApiModelProperty("商品购买数量")
+    private Integer buyNum;
+    @ApiModelProperty("此次发货数量")
+    private Integer num;
+    @ApiModelProperty("商品Id")
+    private Integer productId;
+    @ApiModelProperty("商品名称")
+    private String productName;
+    @ApiModelProperty("商品图片")
+    private String image;
 }

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

@@ -26,6 +26,8 @@ public class NewOrderProduct {
     private Integer presentNum;
     @ApiModelProperty("skuId")
     private Integer skuId;
+    @ApiModelProperty("组织skuId")
+    private Integer organizeSkuId;
     @ApiModelProperty("商品编号")
     private String productNo;
     @ApiModelProperty("订单商品购买价格")

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

@@ -0,0 +1,24 @@
+package com.caimei.modules.order.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zzj
+ */
+@ApiModel(description = "快递物流信息")
+@Data
+public class Transportation {
+
+    @ApiModelProperty("物流公司名称")
+    private String logisticsCompanyName;
+
+    @ApiModelProperty("物流公司代码")
+    private String logisticsCompanyCode;
+
+    @ApiModelProperty("物流单号")
+    private List<String> logisticsNu;
+}

+ 6 - 0
src/main/java/com/caimei/modules/order/service/OrderDeliverService.java

@@ -1,6 +1,10 @@
 package com.caimei.modules.order.service;
 
+import com.caimei.modules.order.entity.DeliverDto;
 import com.caimei.modules.order.entity.NewOrder;
+import com.caimei.utils.ResponseJson;
+
+import javax.xml.ws.Response;
 
 /**
  * @author zzj
@@ -8,4 +12,6 @@ import com.caimei.modules.order.entity.NewOrder;
 public interface OrderDeliverService {
 
     NewOrder toDeliver(Integer orderId);
+
+    ResponseJson confirmDeliver(DeliverDto dto);
 }

+ 84 - 7
src/main/java/com/caimei/modules/order/service/impl/OrderDeliverServiceImpl.java

@@ -1,16 +1,21 @@
 package com.caimei.modules.order.service.impl;
 
-import com.caimei.modules.order.dao.NewOrderDao;
-import com.caimei.modules.order.dao.NewOrderProductDao;
-import com.caimei.modules.order.entity.NewOrder;
-import com.caimei.modules.order.entity.NewOrderProduct;
+import com.caimei.modules.order.dao.*;
+import com.caimei.modules.order.entity.*;
 import com.caimei.modules.order.service.OrderDeliverService;
 import com.caimei.modules.order.util.OrderUtils;
+import com.caimei.utils.ResponseJson;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.xml.ws.Response;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
 
 
 /**
@@ -26,15 +31,87 @@ public class OrderDeliverServiceImpl implements OrderDeliverService {
     private OrderUtils orderUtil;
     @Resource
     private NewOrderProductDao orderProductDao;
+    @Resource
+    private LogisticsBatchDao logisticsBatchDao;
+    @Resource
+    private LogisticsRecordDao recordDao;
+    @Resource
+    private LogisticsInformationDao informationDao;
 
     @Override
     public NewOrder toDeliver(Integer orderId) {
         NewOrder newOrder = orderDao.get(orderId.toString());
         orderUtil.setReceiverVal(newOrder);
-        List<NewOrderProduct> orderProducts=orderProductDao.findListByOrderId(orderId);
-        orderProducts.forEach(o->{
-            o.setNotOutStore(o.getNotOutStore()-orderProductDao.getActualCancelNum(o.getOrderProductId()));
+        List<NewOrderProduct> orderProducts = orderProductDao.findListByOrderId(orderId);
+        orderProducts.forEach(o -> {
+            o.setNotOutStore(o.getNotOutStore() - orderProductDao.getActualCancelNum(o.getOrderProductId()));
         });
         return newOrder;
     }
+
+    @Override
+    @Transactional(readOnly = false, rollbackFor = Exception.class)
+    public ResponseJson confirmDeliver(DeliverDto dto) {
+        List<NewOrderProduct> orderProducts = dto.getOrderProducts();
+        Integer orderId = orderProducts.get(0).getOrderId();
+        //新增发货批次记录
+        LogisticsBatch batch = new LogisticsBatch();
+        batch.setOrderId(orderId);
+        batch.setMailer(2);
+        batch.setUpdateDate(new Date());
+        batch.setDeliveryTime(new Date());
+        batch.setRemark(dto.getRemark());
+        StringBuilder stringBuilder = new StringBuilder();
+        if (null != dto.getImages() && dto.getImages().size() > 0) {
+            dto.getImages().forEach(i -> stringBuilder.append(i).append("##"));
+        }
+        batch.setRemarkImage(stringBuilder.toString());
+        logisticsBatchDao.insert(batch);
+
+        Map<Integer, Integer> shopSetNum = new HashMap<>();
+        orderProducts.forEach(p -> {
+            boolean flag = shopSetNum.containsKey(p.getShopOrderId());
+            if (flag) {
+                Integer num = shopSetNum.get(p.getShopOrderId());
+                shopSetNum.put(p.getShopOrderId(), p.getDeliveryNum() + num);
+            }
+            LogisticsRecord record = new LogisticsRecord();
+            record.setLogisticsBatchId(batch.getId());
+            record.setShopOrderId(p.getShopOrderId());
+            record.setOrderId(orderId);
+            record.setOrderProductId(p.getOrderProductId());
+            record.setBuyNum(p.getNum());
+            record.setNum(p.getDeliveryNum());
+            record.setProductId(p.getProductId());
+            record.setProductName(p.getName());
+            record.setImage(p.getProductImage());
+        });
+
+        List<Transportation> transportations = dto.getTransportations();
+        transportations.forEach(t -> {
+            t.getLogisticsNu().forEach(c -> {
+                LogisticsInformation formation = new LogisticsInformation();
+                formation.setLogisticsBatchId(batch.getId());
+                formation.setType(4);
+                formation.setOrderId(orderId);
+                formation.setNu(c);
+                /**
+                 * 快递单当前的状态(0:在途,即货物处于运输过程中;
+                 * 1:揽件,货物已由快递公司揽收并且产生了第一条跟踪信息;
+                 * 2:疑难,货物寄送过程出了问题;
+                 * 3:签收,收件人已签收;
+                 * 4:退签,即货物由于用户拒签、超区等原因退回,而且发件人已经签收;
+                 * 5:派件,即快递正在进行同城派件;
+                 * 6:退回,货物正处于退回发件人的途中;)
+                 */
+                formation.setState("1");
+                formation.setRemarks(dto.getRemark());
+                formation.setLogisticsCompanyName(t.getLogisticsCompanyName());//物流公司名称
+                formation.setLogisticsCompanyCode(t.getLogisticsCompanyCode());
+                formation.setUpdateDate(new Date());
+                informationDao.insert(formation);
+            });
+        });
+        return ResponseJson.success();
+    }
 }

+ 3 - 5
src/main/java/com/caimei/modules/order/service/impl/PayShopServiceImpl.java

@@ -52,8 +52,7 @@ public class PayShopServiceImpl implements PayShopService {
             p.setOrderNos(payShopDao.findShopOrderNosByPayShop(p.getPayShopId()));
             p.setShopOrderNos(payShopDao.findOrderNos(p.getPayShopId()));
         });
-        PageInfo<OrderPayShop> pageInfo = new PageInfo(payShops);
-        return pageInfo;
+        return new PageInfo(payShops);
     }
 
     @Override
@@ -369,10 +368,9 @@ public class PayShopServiceImpl implements PayShopService {
         PageHelper.startPage(pageNum, pageSize);
         List<NewShopOrder> shopOrders = newShopOrderDao.findPayShopOrderList(orderPayShop);
         shopOrders.forEach(s -> {
-            s.setNewOrderProducts(payShopDao.findPayOrderProducts(s.getShopOrderId()));
+            orderUtils.getShouldPay(s);
         });
-        PageInfo<NewShopOrder> pageInfo = new PageInfo(shopOrders);
-        return pageInfo;
+        return new PageInfo(shopOrders);
     }
 
     @Override

+ 2 - 2
src/main/java/com/caimei/modules/order/util/OrderUtils.java

@@ -70,9 +70,9 @@ public class OrderUtils {
         shopOrder.setNewOrderProducts(products);
         products.forEach(p -> {
             // 商品总价 * 供应商成本比例 - 手续费 = 应付供应商
-            shopFee.set(MathUtil.add(MathUtil.mul(p.getTotalAmount(), p.getShopPercent(), 2), shopFee.get()));
+            shopFee.set(MathUtil.add(MathUtil.mul(p.getTotalAmount(), MathUtil.div(p.getShopPercent(), 100), 2), shopFee.get()));
             // 商品总价 * 组织佣金比例 = 应付组织
-            organizeFee.set(MathUtil.add(MathUtil.mul(p.getTotalAmount(), p.getOrganizePercent(), 2), organizeFee.get()));
+            organizeFee.set(MathUtil.add(MathUtil.mul(p.getTotalAmount(), MathUtil.div(p.getOrganizePercent(), 100), 2), organizeFee.get()));
             // 商品总价
             totalAmount.set(MathUtil.add(p.getTotalAmount(), totalAmount.get()));
         });

+ 3 - 0
src/main/java/com/caimei/modules/shiro/dao/UserDao.java

@@ -1,6 +1,7 @@
 package com.caimei.modules.shiro.dao;
 
 
+import com.caimei.modules.club.entity.CmUser;
 import com.caimei.modules.shiro.entity.CmMallAdminUser;
 import com.caimei.modules.shiro.entity.CmMallOrganize;
 import org.apache.ibatis.annotations.Mapper;
@@ -18,4 +19,6 @@ public interface UserDao {
     CmMallOrganize findOrganize(Integer id);
 
     void updateOrganizeInfo(CmMallOrganize mallOrganize);
+
+    CmUser findLinkMan(String userId);
 }

+ 2 - 1
src/main/resources/mapper/CmMallOrganizeProductsMapper.xml

@@ -44,6 +44,7 @@
             <if test="shopName != null and shopName != ''">
                 AND s.name LIKE concat('%',#{shopName},'%')
             </if>
+            and a.delFlag = 0
         </where>
         ORDER BY
         a.addTime DESC,a.id DESC
@@ -73,7 +74,7 @@
     <update id="updateValidFlag">
         UPDATE cm_mall_organize_products
         SET validFlag = #{validFlag}
-        WHERE id = #{id}
+        WHERE id = #{productId}
     </update>
 
     <update id="saveSort">

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

@@ -7,7 +7,7 @@
     <select id="findListBuyUserInfo" resultType="com.caimei.modules.club.entity.CmUser"
             parameterType="com.caimei.modules.club.entity.CmUser">
         SELECT
-        a.userName,
+        c.name as userName,
         a.bindMobile,
         a.clubStatus,
         a.registerTime,

+ 26 - 2
src/main/resources/mapper/LogisticsBatchMapper.xml

@@ -15,11 +15,35 @@
         a.receiptTime AS receiptTime
     </sql>
 
+    <insert id="insert" parameterType="com.caimei.modules.order.entity.LogisticsBatch" keyProperty="id"
+            useGeneratedKeys="true">
+        INSERT INTO cm_logistics_batch (shopOrderID,
+                                        orderID,
+                                        outStoreTimes,
+                                        mailer,
+                                        shopID,
+                                        updateDate,
+                                        deliveryTime,
+                                        receiptTime,
+                                        remarkImage,
+                                        remark)
+        VALUES (#{shopOrderId},
+                #{orderId},
+                #{outStoreTimes},
+                #{mailer},
+                #{shopId},
+                #{updateDate},
+                #{deliveryTime},
+                #{receiptTime},
+                #{remarkImage},
+                #{remark})
+    </insert>
+
     <select id="findBatch" resultType="com.caimei.modules.order.entity.LogisticsBatch">
-        select <include refid="columns"/>
+        select
+        <include refid="columns"/>
         from cm_logistics_batch a
         <where>
-            1 = 1
             <if test="orderId != null and orderId != ''">
                 and a.orderId = #{orderId}
             </if>

+ 31 - 1
src/main/resources/mapper/LogisticsInformationMapper.xml

@@ -20,8 +20,38 @@
         a.remarks AS remarks
     </sql>
 
+    <insert id="insert">
+        INSERT INTO logistics_information (logisticsBatchID,
+                                           type,
+                                           shopOrderID,
+                                           orderProductID,
+                                           orderID,
+                                           nu,
+                                           state,
+                                           info,
+                                           logisticsCompanyName,
+                                           logisticsCompanyCode,
+                                           shopID,
+                                           updateDate,
+                                           remarks)
+        VALUES (#{logisticsBatchId},
+                #{type},
+                #{shopOrderId},
+                #{orderProductId},
+                #{orderId},
+                #{nu},
+                #{state},
+                #{info},
+                #{logisticsCompanyName},
+                #{logisticsCompanyCode},
+                #{shopId},
+                #{updateDate},
+                #{remarks})
+    </insert>
+
     <select id="findByLogisticsBatchId" resultType="com.caimei.modules.order.entity.LogisticsInformation">
-        select <include refid="columns"/>
+        select
+        <include refid="columns"/>
         from logistics_information a where a.logisticsBatchId = #{logisticsBatchId}
     </select>
 </mapper>

+ 23 - 1
src/main/resources/mapper/LogisticsRecordMapper.xml

@@ -16,8 +16,30 @@
         a.image AS image
     </sql>
 
+    <insert id="insert">
+        INSERT INTO cm_logistics_record (logisticsBatchID,
+                                         shopOrderID,
+                                         orderID,
+                                         orderProductID,
+                                         buyNum,
+                                         num,
+                                         productID,
+                                         productName,
+                                         image)
+        VALUES (#{logisticsBatchId},
+                #{shopOrderId},
+                #{orderId},
+                #{orderProductId},
+                #{buyNum},
+                #{num},
+                #{productId},
+                #{productName},
+                #{image})
+    </insert>
+
     <select id="findByLogisticsBatchId" resultType="com.caimei.modules.order.entity.LogisticsRecord">
-        select <include refid="columns"/>
+        select
+        <include refid="columns"/>
         from cm_logistics_record a where a.logisticsBatchId = #{logisticsBatchId}
     </select>
 </mapper>

+ 5 - 5
src/main/resources/mapper/NewOrderMapper.xml

@@ -16,7 +16,7 @@
 		a.payTotalFee AS payTotalFee,
 		a.payableAmount AS payableAmount,
 		a.balancePayFee  AS balancePayFee ,
-		a.discountFee AS discountFee,
+		ifnull(a.discountFee,0) AS discountFee,
 		a.spId AS spId,
 		a.note AS note,
 		a.clubId AS clubId,
@@ -560,8 +560,8 @@
                cop.organizePercent,
                cop.shopPercent
         FROM cm_order_product cop
-        LEFT JOIN product p ON cop.productID = p.productID
-        left join cm_order co on co.orderID = cop.orderID
+                 LEFT JOIN product p ON cop.productID = p.productID
+                 left join cm_order co on co.orderID = cop.orderID
         WHERE cop.shopOrderID = #{shopOrderId}
           AND IF(co.userBeans = 0, 1 = 1, cop.shopid != 998)
         ORDER BY cop.discountPrice DESC
@@ -578,7 +578,7 @@
     <select id="findPayAmount" resultType="java.lang.Double">
         SELECT SUM(splitAccount)
         FROM cm_split_account csa
-        LEFT JOIN cm_receipt_order_relation cror ON csa.shopOrderId = cror.shopOrderId
+                 LEFT JOIN cm_receipt_order_relation cror ON csa.shopOrderId = cror.shopOrderId
         WHERE csa.shopOrderId = #{shopOrderId}
           AND csa.type = 5
           AND csa.settleStatus = 0
@@ -610,7 +610,7 @@
         LEFT JOIN cm_shop_order cso ON co.orderID = cso.orderID
         LEFT JOIN club c ON c.userID = co.userID
         <where>
-             co.organizeId = #{organizeId}
+            co.organizeId = #{organizeId}
             <if test="clubName != null and clubName != ''">
                 AND c.name like concat('%', #{clubName} ,'%')
             </if>

+ 1 - 0
src/main/resources/mapper/NewOrderProductMapper.xml

@@ -14,6 +14,7 @@
 		  a.`num` AS `num`,
 		  a.`presentNum` AS `presentNum`,
 		  a.`outStoreType` AS `outStoreType`,
+		  a.organizeSkuId,
 		  a.`skuId` AS `skuId`,
 		  a.`productNo` AS `productNo`,
 		  a.`price` AS `price`,

+ 2 - 2
src/main/resources/mapper/NewShopOrderMapper.xml

@@ -228,8 +228,8 @@
     <select id="findListByOrderId" resultType="com.caimei.modules.order.entity.NewShopOrder">
         SELECT<include refid="shopOrderColumns"/>,
         b.name as shopName,
-        ifnull((select sum(payAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId),0) as payedShopAmount,
-        ifnull((select sum(payCmAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId),0) as payCmAmount
+        ifnull((select sum(payAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId and status = 1),0) as payedShopAmount,
+        ifnull((select sum(payCmAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId and status = 1),0) as payCmAmount
         FROM cm_shop_order a
         left join shop b on a.shopId = b.shopId
         WHERE a.orderId = #{orderId} ORDER BY a.shopOrderNo DESC

+ 3 - 3
src/main/resources/mapper/PayShopDao.xml

@@ -261,7 +261,7 @@
                 AND a.id in (SELECT cpsr.payShopID FROM cm_pay_shop_record cpsr LEFT JOIN cm_shop_order so ON
                 so.shopOrderID=cpsr.shopOrderID WHERE so.orderNo LIKE CONCAT('%',#{orderNo},'%'))
             </if>
-            and a.delFlag = '0'
+            and a.delFlag = 0
             and a.shopID != 998
         </where>
         ORDER BY a.id desc
@@ -309,9 +309,9 @@
                         a.payStatus         AS payStatus,
                         a.shopProductAmount AS shopProductAmount,
                         a.shopPostFee       AS shopPostFee,
-                        ifnull((select sum(payAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId),
+                        ifnull((select sum(payAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId and status = 1),
                                0)           as payedShopAmount,
-                        ifnull((select sum(payCmAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId),
+                        ifnull((select sum(payCmAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId and status = 1),
                                0)           as payCmAmount,
                         a.payedShopAmount   AS payedShopAmount,
                         co.payTotalFee      AS payTotalFee,

+ 7 - 0
src/main/resources/mapper/UserMapper.xml

@@ -63,6 +63,13 @@
           AND delFlag = '0'
     </select>
 
+    <select id="findLinkMan" resultType="com.caimei.modules.club.entity.CmUser">
+        select linkMan,
+               contractMobile as mobile
+        from club
+        where userId = #{userId}
+    </select>
+
     <update id="updateOrganizeInfo" parameterType="com.caimei.modules.shiro.entity.CmMallOrganize">
         UPDATE
         cm_mall_organize