浏览代码

创建普通网点生成自增网点编号

FengChaoYu 6 月之前
父节点
当前提交
f0d6c4536c

+ 5 - 0
mall-server-api/src/main/java/com/gree/mall/manager/constant/Constant.java

@@ -1,5 +1,8 @@
 package com.gree.mall.manager.constant;
 
+import java.util.Arrays;
+import java.util.List;
+
 public class Constant {
 
     //校验的token
@@ -21,6 +24,8 @@ public class Constant {
     // 辅材编号前缀
     public final static String FC = "FC";
 
+    public final static List<String> INIT_INCR_LIST = Arrays.asList("WEBSIT_ID");
+
     public class Ali {
         public final static String ACCESS_KEY_ID = "LTAI4GK1q4mnpCFbonMd1pji";
         public final static String ACCESS_KEY_SECERT = "E5LW0V1H8HBxqjKkExIxaXUgSyex6C";

+ 4 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminCompanyWechatLogic.java

@@ -12,6 +12,7 @@ import com.gree.mall.manager.bean.admin.reqDto.AdminUserAddReqBean;
 import com.gree.mall.manager.bean.admin.respDto.AdminCompanyWechatRespPageBean;
 import com.gree.mall.manager.commonmapper.AdminMapper;
 import com.gree.mall.manager.config.wx.WxConfiguration;
+import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.enums.RoleTypeEnum;
 import com.gree.mall.manager.enums.admin.AdminWebsitTypeEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
@@ -146,9 +147,11 @@ public class AdminCompanyWechatLogic {
         adminWebsit.setParentId("1");
         adminWebsit.setType(AdminWebsitTypeEnum.B.getKey());
         adminWebsit.insert();
+        commonLogic.initIncrKeyValue(adminCompanyWechat.getCompanyWechatId(), adminCompanyWechat.getCompanyName(), Constant.INIT_INCR_LIST);
         //生成网点部门挂在商户目录下
         AdminWebsit adminWebsit2 = new AdminWebsit();
-        adminWebsit2.setWebsitId(IdWorker.getIdStr());
+        String websitId = commonLogic.getIncrKeyValue(adminCompanyWechat.getCompanyWechatId(), "WEBSIT_ID", "A",6);
+        adminWebsit2.setWebsitId(websitId);
         adminWebsit2.setName(adminCompanyWechat.getCompanyName()+"-网点");
         adminWebsit2.setWebsitNumber(adminWebsit.getWebsitId());
         adminWebsit2.setCompanyWechatId(adminCompanyWechat.getCompanyWechatId());

+ 6 - 5
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminWebsitLogic.java

@@ -175,10 +175,16 @@ public class AdminWebsitLogic {
 //            }
 //        }
 
+        adminWebsit.setCompanyWechatId(parent.getCompanyWechatId());
+        adminWebsit.setCompanyWechatName(parent.getCompanyWechatName());
+
         if (parent.getType().equals(AdminWebsitTypeEnum.A.getKey())) {
+            adminWebsit.setWebsitId(IdWorker.getIdStr());
             adminWebsit.setType(AdminWebsitTypeEnum.B.getKey());
         } else if (parent.getType().equals(AdminWebsitTypeEnum.B.getKey())) {
             adminWebsit.setType(AdminWebsitTypeEnum.C.getKey());
+            String websitId = commonLogic.getIncrKeyValue(adminWebsit.getCompanyWechatId(), "WEBSIT_ID", "A",6);
+            adminWebsit.setWebsitId(websitId);
         }
 
         if (adminUser.getType() == 2 && adminWebsit.getType().equals(AdminWebsitTypeEnum.C.getKey())) {
@@ -193,11 +199,6 @@ public class AdminWebsitLogic {
             throw new RemoteServiceException("支付配置不能为空");
         }
 
-        adminWebsit.setCompanyWechatId(parent.getCompanyWechatId());
-        adminWebsit.setCompanyWechatName(parent.getCompanyWechatName());
-        if (!adminWebsit.getType().equals(AdminWebsitTypeEnum.C.getKey())) {
-            adminWebsit.setWebsitId(IdWorker.getIdStr());
-        }
         adminWebsit.setWebsitNumber(adminWebsit.getWebsitId());
         adminWebsit.insert();
 

+ 37 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/CommonLogic.java

@@ -1,5 +1,6 @@
 package com.gree.mall.manager.logic.common;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
@@ -23,6 +24,8 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
@@ -90,6 +93,8 @@ public class CommonLogic {
 
     @Autowired
     AdminDeptWebsitService adminDeptWebsitService;
+    @Autowired
+    IncrKeyValueService incrKeyValueService;
 
     public Map<String, String> getOSSConfig() throws UnsupportedEncodingException {
         return ossUtil.getConfig();
@@ -583,4 +588,36 @@ public class CommonLogic {
                 return BigDecimal.ZERO;
         }
     }
+
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
+    public String getIncrKeyValue(String companyWechatId, String key, String start, int length) {
+        final IncrKeyValue incrKeyValue = incrKeyValueService.lambdaQuery()
+                .eq(IncrKeyValue::getCompanyWechatId, companyWechatId)
+                .eq(IncrKeyValue::getIncrKey, key)
+                .one();
+        final Integer value = incrKeyValue.getIncrValue();
+        incrKeyValue.setIncrValue(incrKeyValue.getIncrValue() + 1)
+                .updateById();
+        StringBuilder number = new StringBuilder();
+        number.append(start);
+        int ramainLen = length - number.toString().length();
+        //自增 填充位数
+        number.append(String.format("%0" + ramainLen + "d", Integer.parseInt(value.toString())));
+        return number.toString();
+    }
+
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
+    public void initIncrKeyValue(String companyWechatId, String companyWechatName, List<String> keys) {
+        if (CollectionUtil.isNotEmpty(keys)) {
+            List<IncrKeyValue> list = new ArrayList<>();
+            for (String key : keys) {
+                IncrKeyValue incrKeyValue = new IncrKeyValue();
+                incrKeyValue.setCompanyWechatId(companyWechatId)
+                        .setCompanyName(companyWechatName)
+                        .setIncrKey(key);
+                list.add(incrKeyValue);
+            }
+            incrKeyValueService.saveBatch(list);
+        }
+    }
 }