Browse Source

3.6门店经销商人员diy同步

njs 2 years ago
parent
commit
e4ce342cfa

+ 203 - 1
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/AnalysisDiyCustomerComponent.java

@@ -67,6 +67,7 @@ public class AnalysisDiyCustomerComponent {
     private Long[] roleCwIds;
     private Long[] roleCwDiyIds;
     private Long[] roleFXDiyIds;  //3.4接口,同步分销用户
+    private Long[] roleStoreIds; //3.6门店经销商
      /**
      * 获取并解析DIY经销商用户
      * 因为经销商用户并不涉及用信息更新等方面 所以只插入不更新
@@ -99,6 +100,10 @@ public class AnalysisDiyCustomerComponent {
             Long roleId = Long.parseLong(configService.selectConfigByKey("libang.fx.roleid"));
             roleFXDiyIds = new Long[]{roleId};
         }
+        if (roleStoreIds == null) {
+            Long roleId = Long.parseLong(configService.selectConfigByKey("libang.storeCustomer.roleid"));
+            roleStoreIds = new Long[]{roleId};
+        }
 
 
         List<SyncFailDetail> failDetails = new ArrayList<>();
@@ -275,6 +280,51 @@ public class AnalysisDiyCustomerComponent {
             }
         }
 
+        //3.6经销商经销人员列表
+        try {
+            JSONObject bossListJson = JSONObject.parseObject(HttpUtils.sendSSLGet(customerAccessTokenUtil.getUrl(UrlType.STAFF, 1+"")));
+            int codeStaff = bossListJson.getInteger("code");
+            if (codeStaff == 0) {
+                success += buildSysUserStaff(bossListJson, loginNameSet, diyNameSet, failDetails, packageId, chainsMap);
+                total += bossListJson.getJSONArray("data").size();
+            }
+        } catch (Exception e) {
+            log.error("3.6经销商经销人员列表!");
+            customerAccessTokenUtil.reSetToken();
+            throw e;
+        }
+
+        JSONObject json = JSONObject.parseObject(financeJson);
+        Integer Staffcount = json.getInteger("count");
+        if(Staffcount>100){
+            int co = 0;
+            if (Staffcount%100 != 0){
+                co = (Staffcount/100) +2;
+            }else{
+                co = (Staffcount/100) +1;
+            }
+            for (int i = 1; i < co; i++) {
+                try {
+                    json = JSONObject.parseObject(HttpUtils.sendSSLGet(customerAccessTokenUtil.getUrl(UrlType.STAFF,i+"")));
+                } catch (Exception e) {
+                    log.error("循环获取3.6接口错误!第"+i+"页");
+                    customerAccessTokenUtil.reSetToken();
+                    throw e;
+                }
+                code = json.getInteger("code");
+                if(code==0){
+                    success += buildSysUserStaff(json, loginNameSet, diyNameSet, failDetails, packageId, chainsMap);
+                    total += json.getJSONArray("data").size();
+                }
+            }
+        }else{
+            code = json.getInteger("code");
+            if(code==0){
+                success += buildSysUserStaff(json, loginNameSet, diyNameSet, failDetails, packageId, chainsMap);
+                total += json.getJSONArray("data").size();
+            }
+        }
+
         /*try {
             JSONObject bossListJson = JSONObject.parseObject(HttpUtils.sendSSLGet(customerAccessTokenUtil.getUrl(UrlType.BOSSLIST, null)));
             code = bossListJson.getInteger("code");
@@ -555,8 +605,11 @@ public class AnalysisDiyCustomerComponent {
 //                        user.setRoleIds(roleIds);
 //                        sysUserService.updateUser(user);
 //                    }
-
+                    if(isManager == 0){
+                        sysUserService.insertUserRole(user.getUserId(), roleGuideIds[0]);
+                    }else{
                     sysUserService.insertUserRole(user.getUserId(), roleIds[0]);
+                    }
 
                     if (!user.getSysUserExt().getIsCustomerManager().contains(isManager + "") ||
                             !user.getSysUserExt().getCustomerCode().equals(customerCode) || !user.getSysUserExt().getOrgCode().equals(customerCode)) {
@@ -848,6 +901,155 @@ public class AnalysisDiyCustomerComponent {
 
         return count;
     }
+
+    /***
+     *
+     * 3.6经销商经销人员门店
+     * **/
+    public Integer buildSysUserStaff(JSONObject json, Set<String> loginNameSet,Set<String> diyNameSet, List<SyncFailDetail> failDetails,String packageId, Map<String,Customers> cusMap){
+        JSONArray jsonArray = json.getJSONArray("data");
+        int count = 0;
+        int isManager=8;
+        for(int i =0;i<jsonArray.size();i++){
+            JSONObject jo = jsonArray.getJSONObject(i);
+
+            try {
+                String userNo = jo.getString("userNo");
+                String name = jo.getString("name");
+                String userid = jo.getString("userid");
+                String customerCode = jo.getString("depCode");
+
+
+                /*企业微信中成员启用状态。1表示启用的成员,0表示被禁用*/
+                /*if(enable==null||enable.trim().equals("0")){
+                    continue;
+                }
+                *//*企业微信中人员激活状态: 1=已激活,2=已禁用,4=未激活,5=退出企业。*//*
+                if(status==null || !status.trim().equals("1")){
+                    continue;
+                }
+                *//*人员信息是否已更新入企业微信。true:更新成功false:更新失败*//*
+                if(!isSync){
+                    continue;
+                }
+                *//*人员信息是否被标记删除true:删除,false:未删除*//*
+                if(isDelete){
+                    continue;
+                }*/
+                if(userid==null||userid.trim().equals("")){
+                    continue;
+                }
+                if (!loginNameSet.contains(userid)) {
+
+                    /** =============用户基本信息构建 start===============*/
+                    SysUser user = new SysUser();
+                    user.setCompanyId(1L);
+                    user.setDeptId(deptId);
+                    user.setLoginName(userid);
+                    user.setUserName(jo.getString("name"));
+                    user.setPhonenumber(jo.getString("mobile"));
+                    user.setRoleIds(roleStoreIds);
+                    user.setPassword(user.getLoginName());
+                    user.setSalt(ShiroSaltUtil.randomSalt());
+                    user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
+
+
+                    /** =============用户基本信息构建 end===============*/
+
+
+                    /**======== 构建diy用户扩展信息表 start===============*/
+                    SysUserExt userExt = new SysUserExt();
+                    userExt.setSalesLevel("customer_level");
+
+                    userExt.setIdentity(UserIdentityUtil.UI_DIY);// 1=diy,2=ebr,3=all
+
+                    userExt.setCustomerCode(jo.getString("depCode"));
+                    userExt.setIsCustomerManager(isManager + "");
+                    userExt.setSapEmployeeId(userNo);
+
+                    userExt.setPostName("DIY经销商");
+                    String orgCode = jo.getString("depCode");
+                    if(cusMap.containsKey(orgCode)){
+                        Customers c = cusMap.get(orgCode);
+                        userExt.setOrgCode(c.getChainsCode());
+                        userExt.setOrgName(c.getChainsName());
+                    }else{
+                        userExt.setOrgCode(orgCode);
+                    }
+
+//                    /**======== 构建diy用户wx信息表 start===============*/
+//                    WxQyUser wxQyUser = new WxQyUser();
+//                    wxQyUser.setUserid(jo.getString("userid"));
+//                    wxQyUser.setMobile(jo.getString("mobile"));
+                    user.setSysUserExt(userExt);
+                    insertUserAndExt(user);
+                    count++;
+                    loginNameSet.add(userid);
+                    diyNameSet.add(userid);
+                }else{
+                    /*已经存在的,需要先清空职位,更新职位
+                    (首先查询当前用户职位,判断当前职位是否包含当前职位,不存在就更新,存在就不更新)*/
+                    SysUser user = sysUserService.selectUserByLoginName(userid);
+                    sysUserService.insertUserRole(user.getUserId(), roleStoreIds[0]);
+
+                    if (!user.getSysUserExt().getIsCustomerManager().contains(isManager + "") ||
+                            !user.getSysUserExt().getCustomerCode().equals(customerCode) || !user.getSysUserExt().getOrgCode().equals(customerCode)) {
+                        if (!user.getSysUserExt().getIsCustomerManager().contains(isManager + "")) {
+                            /*更新职位*/
+                            user.getSysUserExt().setIsCustomerManager(user.getSysUserExt().getIsCustomerManager() + "," + isManager);
+                        }
+                        if (!user.getSysUserExt().getCustomerCode().equals(customerCode) || !user.getSysUserExt().getOrgCode().equals(customerCode)) {
+                            /*更新经销商code*/
+                            if (cusMap.containsKey(customerCode)) {
+                                Customers c = cusMap.get(customerCode);
+                                user.getSysUserExt().setOrgCode(c.getChainsCode());
+                                user.getSysUserExt().setOrgName(c.getChainsName());
+                            } else {
+                                user.getSysUserExt().setOrgCode(customerCode);
+                            }
+                        }
+                        log.info("updateSysUserExt" + customerCode);
+                        sysUserExtMapper.updateSysUserExt(user.getSysUserExt());
+                    }
+                    /*解决名称不一样的情况*/
+                    if(!user.getUserName().equals(name)){
+                        user.setUserName(name);
+                        if("2".equals(user.getQuit())){
+                            user.setQuit(null);
+                        }
+                        sysUserService.updateUserInfo(user);
+                    }
+                    //更新 identity 1=diy,2=ebr,3=all
+                    if (diyNameSet.contains(userid) && !"1,2".equals(user.getSysUserExt().getIdentity())) {
+
+                        log.info("updateSysUserExt identity 1,2" + userid);
+                        user.getSysUserExt().setIdentity(UserIdentityUtil.UI_DIY+","+UserIdentityUtil.UI_CW);
+
+                        sysUserExtMapper.updateSysUserExt(user.getSysUserExt());
+                    }
+                    if (!diyNameSet.contains(userid) && !"2".equals(user.getSysUserExt().getIdentity())) {
+                        log.info("updateSysUserExt identity 2" + userid);
+                        user.getSysUserExt().setIdentity(UserIdentityUtil.UI_CW);
+                        sysUserExtMapper.updateSysUserExt(user.getSysUserExt());
+                    }
+
+
+                }
+            }catch (Exception e){
+                log.error(e.getMessage());
+                e.printStackTrace();
+                SyncFailDetail syncFailDetail = new SyncFailDetail();
+                syncFailDetail.setPackageId(packageId);
+                syncFailDetail.setFailReason(e.getMessage());
+                syncFailDetail.setDataJson(jo.toJSONString());
+                syncFailDetail.setFailLevel("1");
+                syncFailDetail.setExceptionType(e.getClass().getSimpleName());
+                failDetails.add(syncFailDetail);
+            }
+        }
+
+        return count;
+    }
     /**
      * 构建 插入分销 3.4 分销业务员人员 List
      * @param json

+ 10 - 2
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/utils/CustomerAccessTokenUtil.java

@@ -23,8 +23,8 @@ public class CustomerAccessTokenUtil {
         MANAGERLIST,
         BUSINESSLIST,*/
         WAREHOUSE,
-        AllRole;
-
+        AllRole,
+        STAFF;
 
 
     }
@@ -75,6 +75,9 @@ public class CustomerAccessTokenUtil {
     //获取所有角色员列表
     private String allRoleUrl ;
 
+    //获取经销商经销商人员列表
+    private String staffUrl;
+
     @PostConstruct
     public void init() {
         tokenUrl=domain+"/auth/jwt/v1/gettoken?appid=%s&appsecret=%s";
@@ -94,6 +97,8 @@ public class CustomerAccessTokenUtil {
         resellerUrl =domain+"/api/diydt/v2/user/reseller/list?page=%s&access_token=%s";
       /*  businessUrl =domain+"/wechatwork/chuwei/v1/user/business/list?access_token=%s";*/
         allRoleUrl=domain+"/api/chuwei/v1/user/all/list?access_token=%s";
+
+        staffUrl=domain+"/api/diydt/v1/user/staff/list?page=%s&access_token=%s";
     }
 
     public String getAccessToken(){
@@ -169,6 +174,9 @@ public class CustomerAccessTokenUtil {
                 break;*/
             case AllRole:
                 url = String.format(allRoleUrl,token);
+                break;
+            case STAFF:
+                url = String.format(staffUrl,pageNum,token);
         }
         return url;
     }

+ 1 - 1
suishenbang-system/src/main/resources/mapper/system/SysUserSalesExtMapper.xml

@@ -88,7 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isCustomerManager != null  and isCustomerManager != ''"> is_customer_manager = #{isCustomerManager},</if>
             <if test="postCode != null and postCode != ''">  post_code = #{postCode},</if>
             <if test="postName != null  and postName != ''">  post_name = #{postName}, </if>
-            <if test="identity != null  and identity != ''">  identity = #{identity}, </if>
+            <if test="identity != null  and identity != ''">  `identity` = #{identity}, </if>
         </trim>
         where user_id = #{userId}
     </update>