Pārlūkot izejas kodu

修改配送员列表、详情、添加

FengChaoYu 3 nedēļas atpakaļ
vecāks
revīzija
5ddc6ecfbc

+ 26 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/member/UserCompanyDeliveryAddBean.java

@@ -0,0 +1,26 @@
+package com.gree.mall.manager.bean.member;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@ApiModel
+@Accessors(chain = true)
+public class UserCompanyDeliveryAddBean {
+
+    @ApiModelProperty(value = "用户id(添加为空)")
+    private String userId;
+
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+
+    @ApiModelProperty(value = "昵称")
+    private String nickName;
+
+    @ApiModelProperty(value = "仓储id, 空代表全部仓储")
+    private List<String> storageIds;
+}

+ 0 - 21
mall-server-api/src/main/java/com/gree/mall/manager/bean/member/UserCompanyDeliveryBean.java

@@ -1,21 +0,0 @@
-package com.gree.mall.manager.bean.member;
-
-import com.gree.mall.manager.plus.entity.User;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.Date;
-
-@EqualsAndHashCode(callSuper = true)
-@ApiModel
-@Data
-public class UserCompanyDeliveryBean extends User {
-
-    @ApiModelProperty(value = "商户名称")
-    private String companyName;
-
-    @ApiModelProperty(value = "配送员创建时间")
-    private Date deliveryCreateTime;
-}

+ 51 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/member/UserCompanyDeliveryVO.java

@@ -0,0 +1,51 @@
+package com.gree.mall.manager.bean.member;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.plus.entity.User;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+@ApiModel
+@Data
+@ZfireField(tbName = "a")
+public class UserCompanyDeliveryVO {
+
+    @ApiModelProperty(value = "师傅id")
+    @ZfireField(hide = true)
+    private String userId;
+
+    @ApiModelProperty(value = "师傅id")
+    @ZfireField(tbName = "c", hide = true)
+    private String storageId;
+
+    @ZfireField(tbName = "d")
+    @ApiModelProperty(value = "商户名称")
+    private String companyName;
+
+    @ZfireField(tbName = "b")
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+
+    @ZfireField(tbName = "b")
+    @ApiModelProperty(value = "昵称")
+    private String nickName;
+
+    @ApiModelProperty(value = "仓储名称")
+    @ZfireField(tbName = "e")
+    private String storageName;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+}

+ 4 - 9
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/CommonMapper.java

@@ -15,7 +15,7 @@ import com.gree.mall.manager.bean.listvo.param.ExamineZfireParamBean;
 import com.gree.mall.manager.bean.listvo.param.WorkOrderZfireParam;
 import com.gree.mall.manager.bean.listvo.param.WorkOrderZfireParam;
 import com.gree.mall.manager.bean.listvo.workorder.*;
 import com.gree.mall.manager.bean.listvo.workorder.*;
 import com.gree.mall.manager.bean.member.UserCompanyAttrBean;
 import com.gree.mall.manager.bean.member.UserCompanyAttrBean;
-import com.gree.mall.manager.bean.member.UserCompanyDeliveryBean;
+import com.gree.mall.manager.bean.member.UserCompanyDeliveryVO;
 import com.gree.mall.manager.bean.order.LeaseOrderVO;
 import com.gree.mall.manager.bean.order.LeaseOrderVO;
 import com.gree.mall.manager.bean.order.OrderPickTimeConfigVO;
 import com.gree.mall.manager.bean.order.OrderPickTimeConfigVO;
 import com.gree.mall.manager.bean.order.refund.OrderOfflineRefundVO;
 import com.gree.mall.manager.bean.order.refund.OrderOfflineRefundVO;
@@ -26,7 +26,6 @@ import com.gree.mall.manager.bean.settle.SettleMonthWagesWorkerVO;
 import com.gree.mall.manager.bean.settle.repair.*;
 import com.gree.mall.manager.bean.settle.repair.*;
 import com.gree.mall.manager.bean.workorder.*;
 import com.gree.mall.manager.bean.workorder.*;
 import com.gree.mall.manager.enums.UserTypeEnum;
 import com.gree.mall.manager.enums.UserTypeEnum;
-import com.gree.mall.manager.plus.entity.User;
 import com.gree.mall.manager.zfire.bean.WorkerParamBean;
 import com.gree.mall.manager.zfire.bean.WorkerParamBean;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -553,15 +552,11 @@ public interface CommonMapper {
 
 
     /**
     /**
      * 商户配送员
      * 商户配送员
-     * @param companyWechatId
-     * @param nickName
-     * @param mobile
+     * @param zfireParamBean
      * @return
      * @return
      */
      */
-    IPage<UserCompanyDeliveryBean> companyDelivery(Page<Object> page,
-                                                   @Param("companyWechatId") String companyWechatId,
-                                                   @Param("nickName") String nickName,
-                                                   @Param("mobile") String mobile);
+    IPage<UserCompanyDeliveryVO> companyDelivery(Page<Object> page,
+                                                 @Param("ex") ZfireParamBean zfireParamBean);
 
 
     /**
     /**
      * 商户授信人员
      * 商户授信人员

+ 18 - 23
mall-server-api/src/main/java/com/gree/mall/manager/controller/member/MemberController.java

@@ -10,8 +10,8 @@ import com.gree.mall.manager.bean.listvo.UserVO;
 import com.gree.mall.manager.bean.listvo.workorder.UserWaitVO;
 import com.gree.mall.manager.bean.listvo.workorder.UserWaitVO;
 import com.gree.mall.manager.bean.member.UserApplyBean;
 import com.gree.mall.manager.bean.member.UserApplyBean;
 import com.gree.mall.manager.bean.member.UserCompanyAttrBean;
 import com.gree.mall.manager.bean.member.UserCompanyAttrBean;
-import com.gree.mall.manager.bean.member.UserCompanyDeliveryBean;
-import com.gree.mall.manager.bean.user.UserApplyWorkerBean;
+import com.gree.mall.manager.bean.member.UserCompanyDeliveryAddBean;
+import com.gree.mall.manager.bean.member.UserCompanyDeliveryVO;
 import com.gree.mall.manager.bean.user.UserWxBean;
 import com.gree.mall.manager.bean.user.UserWxBean;
 import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.enums.ExamineStatusEnum;
 import com.gree.mall.manager.enums.ExamineStatusEnum;
@@ -325,42 +325,37 @@ public class MemberController {
         return ResponseHelper.success(userCouponIPage);
         return ResponseHelper.success(userCouponIPage);
     }
     }
 
 
+    @ZfireList
     @PostMapping("/company/delivery")
     @PostMapping("/company/delivery")
     @ApiOperation(value = "商户配送员列表")
     @ApiOperation(value = "商户配送员列表")
-    public ResponseHelper<IPage<UserCompanyDeliveryBean>> companyDelivery(
-            @ApiParam(value = "昵称") @RequestParam(required = false) String nickName,
-            @ApiParam(value = "手机号") @RequestParam(required = false) String mobile,
-            @ApiParam(value = "页号", required = true) @RequestParam Integer pageNum,
-            @ApiParam(value = "页大小", required = true) @RequestParam Integer pageSize
+    public ResponseHelper<IPage<UserCompanyDeliveryVO>> companyDelivery(
+            @RequestBody ZfireParamBean zfireParamBean
     ) {
     ) {
-        IPage<UserCompanyDeliveryBean> list = userLogic.companyDelivery(nickName, mobile, pageNum, pageSize);
-        return ResponseHelper.success(list);
+        IPage<UserCompanyDeliveryVO> page = userLogic.companyDelivery(zfireParamBean);
+        return ResponseHelper.success(page, new TypeReference<UserCompanyDeliveryVO>() {
+        });
     }
     }
 
 
-    @PostMapping("/company/delivery/import")
-    @ApiOperation(value = "作废 配送员师傅-导入(模板名称:配送员师傅导入.xlsx)")
-    public ResponseHelper companyDeliveryImport(
-            @RequestParam MultipartFile file
-    ) throws RemoteServiceException, IOException {
-//        List<Object> objects = ExcelUtils.importExcel(file);
-//        userLogic.companyDeliveryImport(objects);
-
-        return ResponseHelper.success();
+    @PostMapping("/company/delivery/detail")
+    @ApiOperation(value = "商户配送员详情")
+    public ResponseHelper<UserCompanyDeliveryAddBean> companyDeliveryDetail(
+            @ApiParam(required = true, value = "用户id") @RequestParam String userId
+    ) {
+        UserCompanyDeliveryAddBean bean = userLogic.companyDeliveryDetail(userId);
+        return ResponseHelper.success(bean);
     }
     }
 
 
     @PostMapping("/company/delivery/add")
     @PostMapping("/company/delivery/add")
     @ApiOperation(value = "商户配送员添加")
     @ApiOperation(value = "商户配送员添加")
     public ResponseHelper companyDeliveryAdd(
     public ResponseHelper companyDeliveryAdd(
-            @ApiParam(value = "用户id", required = true) @RequestParam String mobile,
-            @ApiParam(value = "昵称", required = true) @RequestParam String nickName,
-            @ApiParam(value = "仓储id", required = true) @RequestParam String storageId
+            @RequestBody UserCompanyDeliveryAddBean bean
     ) throws Exception {
     ) throws Exception {
-        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_COMMON + mobile);
+        Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_COMMON + bean.getMobile());
         if(!obtain.tryLock(10, TimeUnit.SECONDS)){
         if(!obtain.tryLock(10, TimeUnit.SECONDS)){
             return ResponseHelper.error("系统繁忙,请稍后再试");
             return ResponseHelper.error("系统繁忙,请稍后再试");
         }
         }
         try {
         try {
-            userLogic.companyDeliveryAdd(mobile, nickName, storageId);
+            userLogic.companyDeliveryAdd(bean);
             return ResponseHelper.success();
             return ResponseHelper.success();
         }finally {
         }finally {
             obtain.unlock();
             obtain.unlock();

+ 22 - 7
mall-server-api/src/main/java/com/gree/mall/manager/logic/StorageLogic.java

@@ -11,13 +11,8 @@ import com.gree.mall.manager.bean.admin.reqDto.AdminUserAddReqBean;
 import com.gree.mall.manager.commonmapper.CommonPageV2Mapper;
 import com.gree.mall.manager.commonmapper.CommonPageV2Mapper;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.logic.common.CommonLogic;
-import com.gree.mall.manager.plus.entity.AdminUser;
-import com.gree.mall.manager.plus.entity.AdminUserStorageRela;
-import com.gree.mall.manager.plus.entity.OrderPickTimeConfig;
-import com.gree.mall.manager.plus.entity.Storage;
-import com.gree.mall.manager.plus.service.AdminUserService;
-import com.gree.mall.manager.plus.service.AdminUserStorageRelaService;
-import com.gree.mall.manager.plus.service.StorageService;
+import com.gree.mall.manager.plus.entity.*;
+import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.zfire.bean.QueryParamBean;
 import com.gree.mall.manager.zfire.bean.QueryParamBean;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import com.gree.mall.manager.zfire.util.FieldUtils;
@@ -39,6 +34,8 @@ public class StorageLogic {
     private final CommonPageV2Mapper commonPageV2Mapper;
     private final CommonPageV2Mapper commonPageV2Mapper;
     private final AdminUserService adminUserService;
     private final AdminUserService adminUserService;
     private final AdminUserStorageRelaService adminUserStorageRelaService;
     private final AdminUserStorageRelaService adminUserStorageRelaService;
+    private final UserCompanyDeliveryService userCompanyDeliveryService;
+    private final UserCompanyDeliveryRelaService userCompanyDeliveryRelaService;
 
 
     /**
     /**
      * 仓储列表
      * 仓储列表
@@ -109,6 +106,24 @@ public class StorageLogic {
         storage.setStorageId(IdWorker.getIdStr());
         storage.setStorageId(IdWorker.getIdStr());
         storageService.save(storage);
         storageService.save(storage);
 
 
+        // 新增就检查配送员是否全部仓库
+        final List<UserCompanyDelivery> deliveryList = userCompanyDeliveryService.lambdaQuery()
+                .eq(UserCompanyDelivery::getCompanyWechatId, storage.getCompanyWechatId())
+                .eq(UserCompanyDelivery::getAllStorage, Boolean.TRUE)
+                .list();
+        if (CollectionUtil.isNotEmpty(deliveryList)) {
+            List<UserCompanyDeliveryRela> relaList = new ArrayList<>();
+            for (UserCompanyDelivery userCompanyDelivery : deliveryList) {
+                UserCompanyDeliveryRela rela = new UserCompanyDeliveryRela();
+                rela.setCompanyWechatId(userCompanyDelivery.getCompanyWechatId())
+                        .setUserId(userCompanyDelivery.getUserId())
+                        .setStorageId(storage.getStorageId());
+                relaList.add(rela);
+            }
+            userCompanyDeliveryRelaService.saveBatch(relaList);
+        }
+
+
         // 初始化一个仓储提货时间配置
         // 初始化一个仓储提货时间配置
         OrderPickTimeConfig config = new OrderPickTimeConfig()
         OrderPickTimeConfig config = new OrderPickTimeConfig()
                 .setCompanyWechatId(storage.getCompanyWechatId())
                 .setCompanyWechatId(storage.getCompanyWechatId())

+ 69 - 76
mall-server-api/src/main/java/com/gree/mall/manager/logic/user/UserLogic.java

@@ -1,6 +1,6 @@
 package com.gree.mall.manager.logic.user;
 package com.gree.mall.manager.logic.user;
 
 
-import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
@@ -14,17 +14,11 @@ import com.gree.mall.manager.bean.listvo.User2VO;
 import com.gree.mall.manager.bean.listvo.UserCustomerVO;
 import com.gree.mall.manager.bean.listvo.UserCustomerVO;
 import com.gree.mall.manager.bean.listvo.UserVO;
 import com.gree.mall.manager.bean.listvo.UserVO;
 import com.gree.mall.manager.bean.listvo.workorder.UserWaitVO;
 import com.gree.mall.manager.bean.listvo.workorder.UserWaitVO;
-import com.gree.mall.manager.bean.member.MemberSortBean;
-import com.gree.mall.manager.bean.member.UserApplyBean;
-import com.gree.mall.manager.bean.member.UserCompanyAttrBean;
-import com.gree.mall.manager.bean.member.UserCompanyDeliveryBean;
-import com.gree.mall.manager.bean.user.UserApplyWorkerBean;
-import com.gree.mall.manager.bean.user.UserDetailBean;
+import com.gree.mall.manager.bean.member.*;
 import com.gree.mall.manager.bean.user.UserWxBean;
 import com.gree.mall.manager.bean.user.UserWxBean;
 import com.gree.mall.manager.commonmapper.*;
 import com.gree.mall.manager.commonmapper.*;
 import com.gree.mall.manager.enums.ExamineStatusEnum;
 import com.gree.mall.manager.enums.ExamineStatusEnum;
 import com.gree.mall.manager.enums.UserTypeEnum;
 import com.gree.mall.manager.enums.UserTypeEnum;
-import com.gree.mall.manager.enums.admin.AdminWebsitTypeEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.logic.coupon.CouponLogic;
 import com.gree.mall.manager.logic.coupon.CouponLogic;
@@ -32,9 +26,7 @@ import com.gree.mall.manager.logic.order.OrderShareLogic;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.utils.CommonUtils;
 import com.gree.mall.manager.utils.CommonUtils;
-import com.gree.mall.manager.utils.RedisUtil;
 import com.gree.mall.manager.utils.StringUtil;
 import com.gree.mall.manager.utils.StringUtil;
-import com.gree.mall.manager.utils.excel.ExcelUtils;
 import com.gree.mall.manager.zfire.bean.WorkerParamBean;
 import com.gree.mall.manager.zfire.bean.WorkerParamBean;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import com.gree.mall.manager.zfire.util.FieldUtils;
@@ -46,14 +38,10 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.*;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -79,6 +67,7 @@ public class UserLogic {
     private final UserCompanyDeliveryService userCompanyDeliveryService;
     private final UserCompanyDeliveryService userCompanyDeliveryService;
     private final UserCompanyAttrService userCompanyAttrService;
     private final UserCompanyAttrService userCompanyAttrService;
     private final StorageService storageService;
     private final StorageService storageService;
+    private final UserCompanyDeliveryRelaService userCompanyDeliveryRelaService;
 
 
     /**
     /**
      * 客户列表-v2
      * 客户列表-v2
@@ -460,105 +449,109 @@ public class UserLogic {
                 .set(UserWait::getMobile,userWait.getMobile()).update();
                 .set(UserWait::getMobile,userWait.getMobile()).update();
     }
     }
 
 
-    public IPage<UserCompanyDeliveryBean> companyDelivery(String nickName, String mobile, Integer pageNum, Integer pageSize) {
-        AdminUserCom adminUser = commonLogic.getAdminUser();
-        return commonMapper.companyDelivery(new Page<>(pageNum, pageSize), adminUser.getCompanyWechatId(), nickName, mobile);
+    public IPage<UserCompanyDeliveryVO> companyDelivery(ZfireParamBean zfireParamBean) {
+        FieldUtils.supplyParam(zfireParamBean, UserWaitVO.class, commonLogic.getAdminUser());
+        return commonMapper.companyDelivery(new Page<>(zfireParamBean.getPageNum(), zfireParamBean.getPageSize()), zfireParamBean);
     }
     }
 
 
-    public void companyDeliveryImport(List<Object> datas) {
+    public UserCompanyDeliveryAddBean companyDeliveryDetail(String userId) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
         AdminUserCom adminUser = commonLogic.getAdminUser();
-        if (StringUtils.isBlank(adminUser.getCompanyWechatId())) {
-            throw new RemoteServiceException("管理员账号不可操作");
-        }
-        int index = 1;
-
-        final DateTime curDate = DateUtil.date();
-
-        List<UserCompanyDelivery> userCompanyDeliveryList = new ArrayList<>();
-        for (Object o : datas) {
-            index++;
-            String errPrefix = "第" + index + "行";
-            List<Object> row = (List<Object>) o;
-            CommonUtils.initList2(row, 10);
-            String mobile = (String) row.get(0);
-
-            if (StringUtils.isAnyBlank(mobile)) {
-                throw new RemoteServiceException(errPrefix + "黄色区域为必填项");
-            }
-
-            final User user = userService.lambdaQuery()
-                    .eq(User::getMobile, mobile)
-                    .one();
-
-            if (Objects.isNull(user)) {
-                throw new RemoteServiceException(errPrefix + " 没有找到对应师傅信息");
-            }
-
-            final Integer count = userCompanyDeliveryService.lambdaQuery()
-                    .eq(UserCompanyDelivery::getUserId, user.getUserId())
-                    .eq(UserCompanyDelivery::getCompanyWechatId, adminUser.getCompanyWechatId())
-                    .count();
+        final User user = userService.getById(userId);
+        final List<UserCompanyDeliveryRela> relaList = userCompanyDeliveryRelaService.lambdaQuery()
+                .select(UserCompanyDeliveryRela::getStorageId)
+                .eq(UserCompanyDeliveryRela::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .eq(UserCompanyDeliveryRela::getUserId, userId)
+                .list();
 
 
-            if (count > 0) {
-                throw new RemoteServiceException(errPrefix + " " + mobile + "已是配送员");
-            }
-
-            UserCompanyDelivery delivery = new UserCompanyDelivery();
-            delivery.setCompanyWechatId(adminUser.getCompanyWechatId())
-                    .setUserId(user.getUserId())
-                    .setId(IdWorker.getIdStr())
-                    .setCreateTime(curDate);
-
-            userCompanyDeliveryList.add(delivery);
-        }
+        UserCompanyDeliveryAddBean bean = new UserCompanyDeliveryAddBean();
 
 
+        bean.setUserId(userId)
+                .setNickName(user.getNickName())
+                .setMobile(user.getMobile())
+                .setStorageIds(relaList.stream().map(UserCompanyDeliveryRela::getStorageId).collect(Collectors.toList()));
 
 
-        userCompanyDeliveryService.saveBatch(userCompanyDeliveryList);
+        return bean;
     }
     }
 
 
     @Transactional
     @Transactional
-    public void companyDeliveryAdd(String mobile, String nickName, String storageId) {
+    public void companyDeliveryAdd(UserCompanyDeliveryAddBean bean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
         AdminUserCom adminUser = commonLogic.getAdminUser();
-        UserCompanyDelivery delivery = new UserCompanyDelivery();
-
-        final Storage storage = storageService.getById(storageId);
-
-        if (Objects.isNull(storage)) {
-            throw new RemoteServiceException("仓储信息错误");
-        }
 
 
         User user = userService.lambdaQuery()
         User user = userService.lambdaQuery()
-                .eq(User::getMobile, mobile)
+                .eq(User::getMobile, bean.getMobile())
                 .one();
                 .one();
 
 
         if (Objects.isNull(user)) {
         if (Objects.isNull(user)) {
+            // 没有生成数据到user表
             final String userId = IdWorker.getIdStr();
             final String userId = IdWorker.getIdStr();
             user = new User()
             user = new User()
                     .setUserId(userId)
                     .setUserId(userId)
-                    .setMobile(mobile)
-                    .setNickName(nickName)
+                    .setMobile(bean.getMobile())
+                    .setNickName(bean.getNickName())
                     .setWorkerNumber(userId)
                     .setWorkerNumber(userId)
                     .setOpenId(userId)
                     .setOpenId(userId)
                     .setType(UserTypeEnum.WORKER.getKey());
                     .setType(UserTypeEnum.WORKER.getKey());
 
 
             user.insert();
             user.insert();
+        } else {
+            final Integer count = userCompanyDeliveryService.lambdaQuery()
+                    .eq(UserCompanyDelivery::getCompanyWechatId, adminUser.getCompanyWechatId())
+                    .eq(UserCompanyDelivery::getUserId, user.getUserId())
+                    .count();
+
+            if (count > 0) {
+                throw new RemoteServiceException("配送员重复添加,请检查");
+            }
         }
         }
 
 
+        UserCompanyDelivery delivery = new UserCompanyDelivery();
+
         delivery.setCompanyWechatId(adminUser.getCompanyWechatId())
         delivery.setCompanyWechatId(adminUser.getCompanyWechatId())
                 .setUserId(user.getUserId())
                 .setUserId(user.getUserId())
-                .setId(IdWorker.getIdStr())
-                .setCreateTime(DateUtil.date())
-                .setStorageId(storageId)
+                .setAllStorage(CollectionUtil.isEmpty(bean.getStorageIds()))
                 .insert();
                 .insert();
+
+        List<UserCompanyDeliveryRela> relaList = new ArrayList<>();
+        if (delivery.getAllStorage()) {
+            // 全部仓储
+            final List<Storage> storages = storageService.lambdaQuery()
+                    .eq(Storage::getCompanyWechatId, delivery.getCompanyWechatId())
+                    .list();
+            for (Storage storage : storages) {
+                UserCompanyDeliveryRela rela = new UserCompanyDeliveryRela();
+                rela.setUserId(user.getUserId())
+                        .setCompanyWechatId(delivery.getCompanyWechatId())
+                        .setStorageId(storage.getStorageId());
+                relaList.add(rela);
+            }
+        } else {
+            for (String storageId : bean.getStorageIds()) {
+                UserCompanyDeliveryRela rela = new UserCompanyDeliveryRela();
+                rela.setUserId(user.getUserId())
+                        .setCompanyWechatId(delivery.getCompanyWechatId())
+                        .setStorageId(storageId);
+                relaList.add(rela);
+            }
+        }
+
+        userCompanyDeliveryRelaService.saveBatch(relaList);
     }
     }
 
 
+    @Transactional
     public void companyDeliveryDel(String userId) {
     public void companyDeliveryDel(String userId) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
         AdminUserCom adminUser = commonLogic.getAdminUser();
 
 
+        // 删除配送员记录
         userCompanyDeliveryService.lambdaUpdate()
         userCompanyDeliveryService.lambdaUpdate()
                 .eq(UserCompanyDelivery::getUserId, userId)
                 .eq(UserCompanyDelivery::getUserId, userId)
                 .eq(UserCompanyDelivery::getCompanyWechatId, adminUser.getCompanyWechatId())
                 .eq(UserCompanyDelivery::getCompanyWechatId, adminUser.getCompanyWechatId())
                 .remove();
                 .remove();
+
+        // 删除关系表
+        userCompanyDeliveryRelaService.lambdaUpdate()
+                .eq(UserCompanyDeliveryRela::getUserId, userId)
+                .eq(UserCompanyDeliveryRela::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .remove();
     }
     }
 
 
     public IPage<UserCompanyAttrBean> companyCredit(String nickName, String mobile, Integer pageNum, Integer pageSize) {
     public IPage<UserCompanyAttrBean> companyCredit(String nickName, String mobile, Integer pageNum, Integer pageSize) {

+ 11 - 14
mall-server-api/src/main/resources/mapper/CommonMapper.xml

@@ -1048,23 +1048,20 @@
             c.status = #{status}
             c.status = #{status}
     </select>
     </select>
 
 
-    <select id="companyDelivery" resultType="com.gree.mall.manager.bean.member.UserCompanyDeliveryBean">
+    <select id="companyDelivery" resultType="com.gree.mall.manager.bean.member.UserCompanyDeliveryVO">
         SELECT
         SELECT
-            a.*,
-            ucd.create_time AS deliveryCreateTime,
-            acw.company_name
+            ${ex.selected}
         FROM
         FROM
-            user a JOIN user_company_delivery ucd ON a.user_id = ucd.user_id
-                LEFT JOIN admin_company_wechat acw ON ucd.company_wechat_id = acw.company_wechat_id
-        WHERE
-            a.type = 'WORKER'
-            AND ucd.company_wechat_id = #{companyWechatId}
-        <if test="nickName != null and nickName != ''">
-            AND a.nick_name LIKE CONCAT('%', #{nickName},'%')
-        </if>
-        <if test="mobile != null and mobile != ''">
-            AND a.mobile LIKE CONCAT('%', #{mobile},'%')
+            user_company_delivery a JOIN user b ON a.user_id = b.user_id
+            LEFT JOIN user_company_delivery_rela c ON b.user_id = c.user_id AND a.company_wechat_id = c.company_wechat_id
+            LEFT JOIN admin_company_wechat d ON a.company_wechat_id = d.company_wechat_id
+            LEFT JOIN storage e ON a.company_wechat_id = e.company_wechat_id AND c.storage_id = e.storage_id
+        ${ex.query}
+            AND b.type = 'WORKER'
+        <if test="ex.orderBy == null or ex.orderBy ==''">
+            ORDER BY b.create_time DESC
         </if>
         </if>
+        ${ex.orderBy}
     </select>
     </select>
 
 
     <select id="companyCredit" resultType="com.gree.mall.manager.bean.member.UserCompanyAttrBean">
     <select id="companyCredit" resultType="com.gree.mall.manager.bean.member.UserCompanyAttrBean">