FengChaoYu 9 mēneši atpakaļ
vecāks
revīzija
f448177c76

+ 6 - 3
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/helper/ResponseHelper.java

@@ -9,6 +9,7 @@ public class ResponseHelper<T> {
     public final static int ResponseCode_Success = 200;
     public final static int ResponseCode_COMMON = 501;//通用拦截提示
     public final static int ResponseCode_AUTH_ERROR = 1001;//非法请求
+    public final static int ResponseCode_NOT_PHONE = 4001;//未找到师傅手机号
 
     //无权限访问
     public final static int NOT_PERMISSION = 2001;
@@ -28,14 +29,15 @@ public class ResponseHelper<T> {
         object.setData(data);
         return object;
     }
-    public static ResponseHelper success(int code,Object data) {
+
+    public static ResponseHelper success(int code, Object data) {
         ResponseHelper object = new ResponseHelper(ResponseCode_Success, "success");
         object.setData(data);
         object.setCode(code);
         return object;
     }
 
-    public static ResponseHelper success(int code,Object data,String msg) {
+    public static ResponseHelper success(int code, Object data, String msg) {
         ResponseHelper object = new ResponseHelper(ResponseCode_Success, "success");
         object.setData(data);
         object.setCode(code);
@@ -58,13 +60,14 @@ public class ResponseHelper<T> {
     }
 
     public void setData(Object data) {
-        this.data = (T)data;
+        this.data = (T) data;
     }
 
     public ResponseHelper(int code, String message) {
         this.code = code;
         this.message = message;
     }
+
     public int getCode() {
         return code;
     }

+ 2 - 1
mall-server-api/src/main/java/com/gree/mall/manager/bean/user/UserApplyWorkerBean.java

@@ -1,6 +1,5 @@
 package com.gree.mall.manager.bean.user;
 
-import com.gree.mall.manager.enums.ExamineStatusEnum;
 import com.gree.mall.manager.plus.entity.WorkerImg;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -18,6 +17,8 @@ public class UserApplyWorkerBean {
     private String userId;
     @ApiModelProperty("用户昵称")
     private String nickName;
+    @ApiModelProperty("师傅编号")
+    private String workerNumber;
     @ApiModelProperty("联系电话")
     private String mobile;
     @ApiModelProperty("身份证号")

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

@@ -164,7 +164,7 @@ public class MemberController {
             @ApiParam(value = "银行卡", required = false) @RequestParam(required = false) String bankAccount,
             @ApiParam(value = "设置师傅二手商品发布权限true=启用 false=禁用") @RequestParam Boolean isEs,
             @ApiParam(value = "师傅编号", required = true) @RequestParam String workerNumber
-            ) {
+    ) {
         userLogic.updateWorker(userId, websitId, name, idCard, idCardImg, bankAccount, isEs, workerNumber);
         return ResponseHelper.success();
     }

+ 6 - 17
mall-server-api/src/main/java/com/gree/mall/manager/controller/settle/repair/BankAccountController.java

@@ -3,8 +3,6 @@ package com.gree.mall.manager.controller.settle.repair;
 import cn.hutool.core.lang.TypeReference;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gree.mall.manager.annotation.ZfireList;
-import com.gree.mall.manager.bean.material.base.WebsitNormChargeVO;
-import com.gree.mall.manager.bean.settle.repair.DailyBankAccountBean;
 import com.gree.mall.manager.bean.settle.repair.DailyBankAccountVO;
 import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.exception.RemoteServiceException;
@@ -18,7 +16,6 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.integration.redis.util.RedisLockRegistry;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -166,20 +163,12 @@ public class BankAccountController {
 //        return ResponseHelper.success(bean);
 //    }
 //
-//    @GetMapping("/template/download")
-//    @ApiOperation("下载银行账户模板")
-//    public void downloadTemplate(HttpServletResponse response) throws IOException {
-//        String fileName = "银行账户模板.xlsx";
-//        CommonUtils.downloadFile(fileName,response);
-//    }
-//
-//
-//    @PostMapping("/template/import")
-//    @ApiOperation("导入银行账户")
-//    public ResponseHelper importData(MultipartFile file) throws IOException {
-//        repairSettleAccountLogic.importData(file);
-//        return ResponseHelper.success();
-//    }
+    @PostMapping("/template/import")
+    @ApiOperation("导入银行账户")
+    public ResponseHelper importData(MultipartFile file) throws IOException {
+        repairSettleAccountLogic.importData(file);
+        return ResponseHelper.success();
+    }
 //
 //
 //    @Autowired

+ 122 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/settle/repair/RepairSettleAccountLogic.java

@@ -18,6 +18,8 @@ import com.gree.mall.manager.plus.service.AdminWebsitService;
 import com.gree.mall.manager.plus.service.SettleDailyBankAccountService;
 import com.gree.mall.manager.plus.service.UserService;
 import com.gree.mall.manager.plus.service.WebsitUserService;
+import com.gree.mall.manager.utils.CommonUtils;
+import com.gree.mall.manager.utils.excel.ExcelUtils;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import lombok.RequiredArgsConstructor;
@@ -25,6 +27,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -125,8 +128,127 @@ public class RepairSettleAccountLogic {
     }
 
     public void update(SettleDailyBankAccount dailyBankAccount) {
+//        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        final SettleDailyBankAccount oldAccount = settleDailyBankAccountService.getById(dailyBankAccount.getId());
+        dailyBankAccount.setIdcard(oldAccount.getIdcard());
+
+        List<SettleDailyBankAccount> oldList = settleDailyBankAccountService.lambdaQuery()
+                .eq(SettleDailyBankAccount::getIdcard, dailyBankAccount.getIdcard())
+                .list();
+
+        for (SettleDailyBankAccount bean : oldList) {
+            bean.setId(dailyBankAccount.getId())
+                    .setWorkerName(dailyBankAccount.getWorkerName())
+                    .setMobile(dailyBankAccount.getMobile())
+                    .setBankAccount(dailyBankAccount.getBankAccount())
+                    .setBankAccountName(dailyBankAccount.getBankAccountName())
+                    .setDepositBank(dailyBankAccount.getDepositBank())
+                    .setBankAddr(dailyBankAccount.getBankAddr())
+                    .setRemark(dailyBankAccount.getRemark());
+        }
+        settleDailyBankAccountService.updateBatchById(oldList);
     }
 
     public void delete(Integer id) {
+        settleDailyBankAccountService.removeById(id);
+    }
+
+    public void importData(MultipartFile file) throws Exception {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+        List<Object> objects = ExcelUtils.importExcel(file);
+        List<SettleDailyBankAccount> importList = new ArrayList<>();
+
+        List<String> distinctIdcard = new ArrayList<>();
+        for (Object o : objects) {
+            List<Object> row = (List<Object>) o;
+            CommonUtils.initList2(row, row.size() + 1);
+            String workerName = (String) row.get(0);//服务人员名称
+            String idcard = (String) row.get(1);//身份证号码
+            String mobile = (String) row.get(2);//手机号
+            String bankAccount = (String) row.get(3);//银行卡号
+            String bankAccountName = (String) row.get(4);//户名
+            String depositBank = (String) row.get(5);//开户行名称
+            String bankAddr = (String) row.get(6);//开户行地址
+            String remark = (String) row.get(7);//备注
+            if (StringUtils.isEmpty(workerName)) {
+                continue;
+            }
+            if (StringUtils.isEmpty(workerName) || StringUtils.isEmpty(idcard) || StringUtils.isEmpty(bankAccount) ||
+                    StringUtils.isEmpty(depositBank) || StringUtils.isEmpty(mobile) || StringUtils.isEmpty(bankAccountName)) {
+                throw new RemoteServiceException("师傅【" + workerName + "】服务人员名称/身份证号码/银行卡号/开户行名称/手机号/户名都为必填项");
+            }
+            if (!depositBank.contains("招商银行") && StringUtils.isEmpty(bankAddr)) {
+                throw new RemoteServiceException("师傅【" + workerName + "】非招行开户行必填");
+            }
+            if (distinctIdcard.contains(idcard)) {
+                throw new RemoteServiceException("师傅【" + workerName + "】身份证:" + idcard + "重复");
+            }
+            distinctIdcard.add(idcard);
+
+            List<User> userList = userService.lambdaQuery()
+                    .eq(User::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                    .eq(User::getIdCard, idcard)
+                    .eq(User::getType, UserTypeEnum.WORKER.getKey())
+                    .list();
+            if (CollectionUtil.isEmpty(userList)) {
+                throw new RemoteServiceException("身份证在系统不存在:" + idcard);
+            }
+            //删除
+            settleDailyBankAccountService.lambdaUpdate().eq(SettleDailyBankAccount::getIdcard, idcard).remove();
+
+            SettleDailyBankAccount dailyBankAccount = new SettleDailyBankAccount();
+            dailyBankAccount.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId());
+            dailyBankAccount.setCompanyName(adminUser.getAdminCompanyWechat().getCompanyName());
+            dailyBankAccount.setWorkerName(workerName);
+            dailyBankAccount.setIdcard(idcard);
+            dailyBankAccount.setMobile(mobile);
+            dailyBankAccount.setBankAccount(bankAccount);
+            dailyBankAccount.setBankAccountName(bankAccountName);
+            dailyBankAccount.setDepositBank(depositBank);
+            dailyBankAccount.setBankAddr(bankAddr);
+            dailyBankAccount.setRemark(remark);
+            dailyBankAccount.setBankAccount(dailyBankAccount.getBankAccount().replaceAll(" ", ""));
+
+            // 检查师傅已入驻网点并创建相应网点记录
+            final List<WebsitUser> websitUserList = websitUserService.lambdaQuery()
+                    .eq(WebsitUser::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                    .eq(WebsitUser::getExamineStatus, ExamineStatusEnum.OK.getKey())
+                    .in(WebsitUser::getUserId, userList.stream().map(User::getUserId).distinct().collect(Collectors.toList()))
+                    .list();
+
+            final List<String> websits = websitUserList.stream().map(WebsitUser::getWebsitId).distinct().collect(Collectors.toList());
+
+            final Map<String, WebsitUser> websitUserMap = websitUserList.stream()
+                    .collect(Collectors.toMap(WebsitUser::getWebsitId, Function.identity(), (key1, key2) -> key2));
+
+            final List<AdminWebsit> adminWebsits = adminWebsitService.lambdaQuery()
+                    .eq(AdminWebsit::getCompanyWechatId, adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                    .in(AdminWebsit::getWebsitId, websits)
+                    .list();
+
+            final Map<String, String> websitMap = adminWebsits.stream()
+                    .collect(Collectors.toMap(AdminWebsit::getWebsitId, AdminWebsit::getName));
+
+            for (String websit : websits) {
+                final String websitName = websitMap.get(websit);
+                final WebsitUser websitUser = websitUserMap.get(websit);
+                SettleDailyBankAccount account = new SettleDailyBankAccount();
+                BeanUtils.copyProperties(dailyBankAccount, account);
+                account.setCompanyWechatId(adminUser.getAdminCompanyWechat().getCompanyWechatId())
+                        .setCompanyName(adminUser.getAdminCompanyWechat().getCompanyName())
+                        .setWebsitId(websit)
+                        .setWebsitName(websitName)
+                        .setWorkerNumber(websitUser.getWorkerNumber());
+                importList.add(account);
+            }
+        }
+
+        if (CollectionUtil.isNotEmpty(importList))
+            settleDailyBankAccountService.saveBatch(importList);
     }
 }

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

@@ -35,13 +35,13 @@ import com.gree.mall.manager.utils.RedisUtil;
 import com.gree.mall.manager.utils.excel.ExcelUtils;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -49,7 +49,10 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -58,52 +61,33 @@ import java.util.stream.Collectors;
  */
 @Service
 @Slf4j
+@RequiredArgsConstructor
 public class UserLogic {
 
-    @Autowired
-    UserService userService;
-    @Autowired
-    UserAddressService userAddressService;
-    @Autowired
-    GoodsFavoriteService goodsFavoriteService;
-    @Autowired
-    GoodsVisitService goodsVisitService;
-    @Autowired
-    CustomGoodsMapper customGoodsMapper;
-    @Autowired
-    private WxCustomerMapper wxCustomerMapper;
-    @Autowired
-    private CustomMemberMapper customMemberMapper;
-    //    @Autowired
-//    private EnterpriseWechatWorkerService enterpriseWechatWorkerService;
-    @Autowired
-    private CustomWebsitMapper customWebsitMapper;
-    @Autowired
-    WebsitUserService websitUserService;
-    @Autowired
-    CommonMapper commonMapper;
-    @Autowired
-    AdminWebsitService adminWebsitService;
-    @Autowired
-    UserWaitService userWaitService;
-    @Autowired
-    WorkerImgService workerImgService;
-    //    @Autowired
-//    private WorkWechatLogic workWechatLogic;
-    @Autowired
-    CouponLogic couponLogic;
-    @Autowired
-    OrderShareLogic orderShareLogic;
-    @Autowired
-    RedisUtil redisUtil;
-    @Autowired
-    WechatLogic wechatLogic;
-    @Autowired
-    PromotionGroupLogic promotionGroupLogic;
-    @Autowired
-    CommonLogic commonLogic;
-    @Autowired
-    AdminCompanyWechatService adminCompanyWechatService;
+    private final UserService userService;
+    private final UserAddressService userAddressService;
+    private final GoodsFavoriteService goodsFavoriteService;
+    private final GoodsVisitService goodsVisitService;
+    private final CustomGoodsMapper customGoodsMapper;
+    private final WxCustomerMapper wxCustomerMapper;
+    private final CustomMemberMapper customMemberMapper;
+//    private final EnterpriseWechatWorkerService enterpriseWechatWorkerService;
+    private final CustomWebsitMapper customWebsitMapper;
+    private final WebsitUserService websitUserService;
+    private final CommonMapper commonMapper;
+    private final AdminWebsitService adminWebsitService;
+    private final UserWaitService userWaitService;
+    private final WorkerImgService workerImgService;
+//    private final WorkWechatLogic workWechatLogic;
+    private final CouponLogic couponLogic;
+    private final OrderShareLogic orderShareLogic;
+    private final RedisUtil redisUtil;
+    private final WechatLogic wechatLogic;
+    private final PromotionGroupLogic promotionGroupLogic;
+    private final CommonLogic commonLogic;
+    private final AdminCompanyWechatService adminCompanyWechatService;
+    private final SettleDailyBankAccountService settleDailyBankAccountService;
+
 
     /**
      * 客户列表-v2
@@ -294,6 +278,7 @@ public class UserLogic {
         bean.setId(id);
         bean.setUserId(user.getUserId());
         bean.setNickName(user.getNickName());
+        bean.setWorkerNumber(websitUser.getWorkerNumber());
         bean.setMobile(user.getMobile());
         bean.setIdCard(user.getIdCard());
         bean.setIdCardImg(user.getIdCardImg());
@@ -327,6 +312,9 @@ public class UserLogic {
         if (!StringUtils.equals(websitUser.getExamineStatus(), ExamineStatusEnum.WAIT.getKey())) {
             throw new RemoteServiceException("非待审批状态不可审批");
         }
+        if (StringUtils.isBlank(websitUser.getWorkerNumber())) {
+            throw new RemoteServiceException("师傅编号不能为空");
+        }
         websitUser.setExamineStatus(examineStatus.getKey());
         websitUser.setExamineTime(new Date());
         websitUser.setExamineBy(adminUser.getNickName());
@@ -616,6 +604,8 @@ public class UserLogic {
                 .eq(WebsitUser::getWebsitId, websitId)
                 .eq(WebsitUser::getUserId, userId)
                 .update();
+
+
     }