Kaynağa Gözat

同步DIY经销商人员

qxp192083 4 yıl önce
ebeveyn
işleme
928080026a
18 değiştirilmiş dosya ile 559 ekleme ve 74 silme
  1. 7 0
      suishenbang-admin/src/main/resources/application-dev.yml
  2. 7 0
      suishenbang-admin/src/main/resources/application-test.yml
  3. 5 0
      suishenbang-quartz/pom.xml
  4. 18 0
      suishenbang-quartz/src/main/java/com/dgtly/quartz/task/RyTask.java
  5. 6 0
      suishenbang-sync/suishenbang-sync-common/pom.xml
  6. 59 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaCustomerUser.java
  7. 214 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/AnalysisDiyCustomerComponent.java
  8. 73 68
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/AnalysisSysUserService.java
  9. 106 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/utils/CustomerAccessTokenUtil.java
  10. 1 0
      suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/SyncLogMapper.xml
  11. 4 1
      suishenbang-system/pom.xml
  12. 22 0
      suishenbang-system/src/main/java/com/dgtly/system/domain/SysUserExt.java
  13. 3 1
      suishenbang-system/src/main/java/com/dgtly/system/service/ISysUserService.java
  14. 8 2
      suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserServiceImpl.java
  15. 3 1
      suishenbang-system/src/main/resources/mapper/system/SysUserMapper.xml
  16. 20 1
      suishenbang-system/src/main/resources/mapper/system/SysUserSalesExtMapper.xml
  17. 1 0
      suishenbang-wxportal/suishenbang-wxportal-common/pom.xml
  18. 2 0
      suishenbang-wxportal/suishenbang-wxportal-common/src/main/java/com/dgtly/wxportal/service/IWxQyUserService.java

+ 7 - 0
suishenbang-admin/src/main/resources/application-dev.yml

@@ -13,6 +13,13 @@ ruoyi:
   # 获取ip地址开关
   addressEnabled: true
   cloudPath: http://10.32.2.212:8000/
+#经销商微信接口相关配置
+customer:
+  appid: ap4f8e6a38b6142187
+  appsecret: d5c234b37e9f9ecb47a71ba6a788bd3e
+  #正式域名 https://ac.nipponpaint.com.cn
+  domain: https://ac.nipponpaint.com.cn
+
 
 # 开发环境配置
 server:

+ 7 - 0
suishenbang-admin/src/main/resources/application-test.yml

@@ -13,6 +13,13 @@ ruoyi:
   # 获取ip地址开关
   addressEnabled: true
   cloudPath: http://10.32.2.212:8000/
+#经销商微信接口相关配置
+customer:
+  appid: ap4f8e6a38b6142187
+  appsecret: d5c234b37e9f9ecb47a71ba6a788bd3e
+  #正式域名 https://ac.nipponpaint.com.cn
+  domain: https://ac.nipponpaint.com.cn
+
 
 # 开发环境配置
 server:

+ 5 - 0
suishenbang-quartz/pom.xml

@@ -34,6 +34,11 @@
             <groupId>com.dgtly</groupId>
             <artifactId>suishenbang-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.dgtly</groupId>
+            <artifactId>suishenbang-sync-common</artifactId>
+            <version>4.0.0</version>
+        </dependency>
 
     </dependencies>
 	

+ 18 - 0
suishenbang-quartz/src/main/java/com/dgtly/quartz/task/RyTask.java

@@ -1,8 +1,12 @@
 package com.dgtly.quartz.task;
 
+import com.dgtly.sync.service.AnalysisDiyCustomerComponent;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.dgtly.common.utils.StringUtils;
 
+import javax.annotation.PostConstruct;
+
 /**
  * 定时任务调度测试
  * 
@@ -11,6 +15,16 @@ import com.dgtly.common.utils.StringUtils;
 @Component("ryTask")
 public class RyTask
 {
+
+    @Autowired
+    private AnalysisDiyCustomerComponent analysisDiyCustomerComponent;
+//    private static RyTask ryTask;
+//    @PostConstruct
+//    public void init() {
+//        ryTask = this;
+//        ryTask.analysisDiyCustomerComponent = this.analysisDiyCustomerComponent;
+//    }
+
     public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
     {
         System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
@@ -25,4 +39,8 @@ public class RyTask
     {
         System.out.println("执行无参方法");
     }
+
+    public void analyDiyCustomer(){
+        analysisDiyCustomerComponent.analyDiyCustomer();
+    }
 }

+ 6 - 0
suishenbang-sync/suishenbang-sync-common/pom.xml

@@ -19,6 +19,12 @@
             <groupId>com.dgtly</groupId>
             <artifactId>suishenbang-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.dgtly</groupId>
+            <artifactId>suishenbang-wxportal-common</artifactId>
+            <version>4.0.0</version>
+        </dependency>
+
     </dependencies>
 
 

+ 59 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/domain/MetaCustomerUser.java

@@ -0,0 +1,59 @@
+package com.dgtly.sync.domain;
+
+import com.dgtly.common.core.domain.BaseEntity;
+
+/**
+ * 通过经销微信接口 获取的经销商员工实体
+ */
+public class MetaCustomerUser extends BaseEntity {
+
+    private String userid;
+
+    private String userNo;
+
+    private String name;
+
+    private String mobile;
+
+    private String depCode;
+
+    public String getUserid() {
+        return userid;
+    }
+
+    public void setUserid(String userid) {
+        this.userid = userid;
+    }
+
+    public String getUserNo() {
+        return userNo;
+    }
+
+    public void setUserNo(String userNo) {
+        this.userNo = userNo;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getDepCode() {
+        return depCode;
+    }
+
+    public void setDepCode(String depCode) {
+        this.depCode = depCode;
+    }
+}

+ 214 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/AnalysisDiyCustomerComponent.java

@@ -0,0 +1,214 @@
+package com.dgtly.sync.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.dgtly.common.exception.BusinessException;
+import com.dgtly.common.utils.ShiroSaltUtil;
+import com.dgtly.common.utils.http.HttpUtils;
+import com.dgtly.common.utils.security.EncryptPassWordClass;
+import com.dgtly.sync.domain.SyncFailDetail;
+import com.dgtly.sync.domain.SyncLog;
+import com.dgtly.sync.mapper.SyncFailDetailMapper;
+import com.dgtly.sync.utils.CustomerAccessTokenUtil;
+import com.dgtly.sync.utils.CustomerAccessTokenUtil.UrlType;
+import com.dgtly.system.domain.SysUser;
+import com.dgtly.system.domain.SysUserExt;
+import com.dgtly.system.mapper.SysUserExtMapper;
+import com.dgtly.system.mapper.SysUserMapper;
+import com.dgtly.system.service.ISysConfigService;
+import com.dgtly.system.service.impl.SysUserServiceImpl;
+import com.dgtly.wxportal.domain.WxQyUser;
+import com.dgtly.wxportal.mapper.WxQyUserMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+@Component
+public class AnalysisDiyCustomerComponent {
+
+    private static final Logger log = LoggerFactory.getLogger(AnalysisDiyCustomerComponent.class);
+
+
+    @Autowired
+    private CustomerAccessTokenUtil customerAccessTokenUtil;
+    @Autowired
+    private SysUserServiceImpl sysUserService;
+    @Autowired
+    private SysUserExtMapper sysUserExtMapper;
+    @Autowired
+    private SysUserMapper sysUserMapper;
+    @Autowired
+    private WxQyUserMapper wxQyUserMapper;
+
+    @Autowired
+    private ISysConfigService configService;
+    @Autowired
+    private ISyncLogService syncLogService;
+    @Autowired
+    private SyncFailDetailMapper syncFailDetailMapper;
+    private Long deptId;
+    private Long[] roleIds;
+     /**
+     * 获取并解析DIY经销商用户
+     * 因为经销商用户并不涉及用信息更新等方面 所以只插入不更新
+     * @return
+     */
+    //@Override
+    public SyncLog analyDiyCustomer() {
+        if(deptId==null){
+            deptId = Long.parseLong(configService.selectConfigByKey("libang.customer.deptid"));
+        }
+        if(roleIds==null){
+            Long roleId = Long.parseLong(configService.selectConfigByKey("libang.customer.roleid"));
+            roleIds = new Long[]{roleId};
+        }
+
+        List<SyncFailDetail> failDetails = new ArrayList<>();
+        SyncLog syncLog = new SyncLog();
+        syncLog.setStartTime(new Date());
+        String packageId = "diycustomer"+syncLog.getStartTime().getTime();
+        syncLog.setPackageId(packageId);
+        long total = 0;
+        long success = 0;
+        Set<String> loginNameSet = sysUserService.selectAllUserLoginName();
+        String managerJson = HttpUtils.sendGet(customerAccessTokenUtil.getUrl(UrlType.MANAGER));
+        JSONObject mjson = JSONObject.parseObject(managerJson);
+
+        int code = mjson.getInteger("code");
+        if(code==0){
+            success+=buildSysUser(mjson,loginNameSet,1,failDetails,packageId);
+            total+=mjson.getJSONArray("userlist").size();
+        }
+
+
+
+
+        String guideJson = HttpUtils.sendGet(customerAccessTokenUtil.getUrl(UrlType.STOREGUIDE));
+        JSONObject gjson = JSONObject.parseObject(guideJson);
+        code = gjson.getInteger("code");
+        if(code==0){
+            success+=buildSysUser(gjson,loginNameSet,0,failDetails,packageId);
+            total+=gjson.getJSONArray("userlist").size();
+        }
+
+        try{
+            syncLog.setTotalCount(total);
+            syncLog.setSuccessCount(success);
+            syncLog.setFaileCount((long)failDetails.size());
+            syncLog.setEndTime(new Date());
+            syncLog.setSyncType("diycustomer");
+
+            if(failDetails.size()>0){
+                syncFailDetailMapper.batchInsertSyncFailDetail(failDetails);
+            }
+        }catch (Exception e){
+            log.error("解析用户插入解析日志出错",e);
+            e.printStackTrace();
+            throw new BusinessException("解析用户插入解析日志出错",e);
+        }finally {
+            syncLogService.insertSyncLog(syncLog);
+        }
+
+
+        return null;
+    }
+
+
+    /**
+     * 构建 插入用户List
+     * @param json
+     * @param loginNameSet 排重用
+     * @param isManager
+     * @return
+     */
+    public Integer buildSysUser(JSONObject json, Set<String> loginNameSet, int isManager, List<SyncFailDetail> failDetails,String packageId){
+        JSONArray jsonArray = json.getJSONArray("userlist");
+        int count = 0;
+
+        for(int i =0;i<jsonArray.size();i++){
+            JSONObject jo = jsonArray.getJSONObject(i);
+
+            try {
+                String userNo = jo.getString("userNo");
+                if(userNo==null||userNo.trim().equals("")){
+                    continue;
+                }
+                if (!loginNameSet.contains(userNo)) {
+
+                    /** =============用户基本信息构建 start===============*/
+                    SysUser user = new SysUser();
+                    user.setCompanyId(1L);
+                    user.setDeptId(deptId);
+                    user.setLoginName(userNo);
+                    user.setUserName(jo.getString("name"));
+                    user.setPhonenumber(jo.getString("mobile"));
+                    user.setRoleIds(roleIds);
+                    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.setCustomerCode(jo.getString("depCode"));
+                    userExt.setIsCustomerManager(isManager + "");
+                    userExt.setSapEmployeeId(userNo);
+                    userExt.setOrgCode(jo.getString("depCode"));
+
+                    /**======== 构建diy用户wx信息表 start===============*/
+                    WxQyUser wxQyUser = new WxQyUser();
+                    wxQyUser.setUserid(jo.getString("userid"));
+                    wxQyUser.setMobile(jo.getString("mobile"));
+                    user.setSysUserExt(userExt);
+                    insertUserAndExtAndWx(user, wxQyUser);
+                    count++;
+                    loginNameSet.add(userNo);
+                }
+            }catch (Exception e){
+                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;
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public Integer insertUserAndExtAndWx(SysUser user, WxQyUser wxQyUser) {
+        // 新增用户信息
+        int rows = sysUserMapper.insertUser(user);
+
+        // 新增用户与角色管理
+        sysUserService.insertUserRole(user);
+        SysUserExt userExt = user.getSysUserExt();
+        userExt.setUserId(user.getUserId());
+
+        int i1 = sysUserExtMapper.insertOrUpSysUserExt(userExt);
+
+
+        wxQyUser.setSysUserId(user.getUserId());
+        int i2 =wxQyUserMapper.insertWxQyUser(wxQyUser);
+        if(i1+i2<2){
+            throw new RuntimeException("插入UserExt或WxUser错误");
+        }
+        return rows;
+    }
+}

+ 73 - 68
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/impl/AnalysisSysUserService.java

@@ -28,7 +28,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.*;
 
-@Service
+@Service("analysisDiyCustomerService")
 public class AnalysisSysUserService implements IAnalysisSysUserService {
 
     private static final Logger log = LoggerFactory.getLogger(AnalysisSysUserService.class);
@@ -104,9 +104,7 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
                     if(!divObjid3Set.contains(m.getStext3())){
                         throw new OutOfScopeDIYException(m);
                     }
-                    /**
-                     * 用户基本信息构建
-                     */
+                    /** =============用户基本信息构建 start===============*/
                     SysUser user = new SysUser();
                     user.setCompanyId(1L);
                     user.setDeptId(deptId);
@@ -117,86 +115,95 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
                     String sex = ""+(Integer.parseInt(m.getSex())-1);
                     user.setSex(sex);
                     user.setRoleIds(roleIds);
-                    SysUserExt userExt = new SysUserExt();
-                    userExt.setBossEmployeeId(m.getBossEmployeeId());
-                    userExt.setBossName(m.getBossName());
-                    userExt.setSapEmployeeId(m.getSapEmployeeId());
-
                     if (m.getStatus() == 0) {
                         user.setStatus("1");
                         user.setDelFlag("2");
                     } else {
                         user.setStatus("0");
                     }
+                    /** =============用户基本信息构建 end===============*/
 
 
 
-                    if (loginNameList.contains(user.getLoginName())) {
-                        user.setSysUserExt(userExt);
-                        sysUserService.updateUserInfoAndSalesExt(user);
-                    } else {
+                    /**======== 构建diy用户扩展信息表 start===============*/
+                    SysUserExt userExt = new SysUserExt();
+                    userExt.setBossEmployeeId(m.getBossEmployeeId());
+                    userExt.setBossName(m.getBossName());
+                    userExt.setSapEmployeeId(m.getSapEmployeeId());
 
-                        /**
-                         * 用判断用户所处销售层级
-                         */
-                        String fildName ="";
-                        String fildCode = "";
-                        if(m.getStext6()!=null){
-                            if(empSet.contains(m.getEmployeePostName())){
-                                userExt.setSalesLevel("emp_level");
-                                userExt.setOrgName(m.getStext6());
-                                fildName = "Org6name";
-                                fildCode = "Org6code";
-                            }else if(subofficeSet.contains(m.getEmployeePostName())){
-                                userExt.setSalesLevel("suboffice_level");
-                                userExt.setOrgName(m.getStext6());
-                                fildName = "Org6name";
-                                fildCode = "Org6code";
-                            }else{
-                                throw new OutOfScopeDIYException(m);
-                            }
-                        }else if(m.getStext5()!=null){
-                            if(officeSet.contains(m.getEmployeePostName())){
-                                userExt.setSalesLevel("suboffice_level");
-                                userExt.setOrgName(m.getStext5());
-                                fildName = "Org5name";
-                                fildCode = "Org5code";
-                            }else{
-                                throw new OutOfScopeDIYException(m);
-                            }
-                        }else if(m.getStext4()!=null){
-                            if(saledeptSet.contains(m.getEmployeePostName())){
-                                userExt.setSalesLevel("office_level");
-                                userExt.setOrgName(m.getStext4());
-                                fildName = "Org4name";
-                                fildCode = "Org4code";
-                            } else{
-                                throw new OutOfScopeDIYException(m);
-                            }
-                        }else if(m.getStext3()!=null){
-                            if(companySet.contains(m.getEmployeePostName())){
-                                userExt.setSalesLevel("office_level");
-                                userExt.setOrgName(m.getStext3());
-                                fildName = "Org3name";
-                                fildCode = "Org3code";
-                            } else{
-                                throw new OutOfScopeDIYException(m);
-                            }
+                    //判断用户所处销售层级
+
+                    String fildName ="";
+                    String fildCode = "";
+                    if(m.getStext6()!=null){
+                        if(empSet.contains(m.getEmployeePostName())){
+                            userExt.setSalesLevel("emp_level");
+                            userExt.setOrgName(m.getStext6());
+                            fildName = "Org6name";
+                            fildCode = "Org6code";
+                        }else if(subofficeSet.contains(m.getEmployeePostName())){
+                            userExt.setSalesLevel("suboffice_level");
+                            userExt.setOrgName(m.getStext6());
+                            fildName = "Org6name";
+                            fildCode = "Org6code";
+                        }else{
+                            throw new OutOfScopeDIYException(m);
+                        }
+                    }else if(m.getStext5()!=null){
+                        if(officeSet.contains(m.getEmployeePostName())){
+                            userExt.setSalesLevel("office_level");
+                            userExt.setOrgName(m.getStext5());
+                            fildName = "Org5name";
+                            fildCode = "Org5code";
                         }else{
                             throw new OutOfScopeDIYException(m);
                         }
+                    }else if(m.getStext4()!=null){
+                        if(saledeptSet.contains(m.getEmployeePostName())){
+                            userExt.setSalesLevel("saledept_level");
+                            userExt.setOrgName(m.getStext4());
+                            fildName = "Org4name";
+                            fildCode = "Org4code";
+                        } else{
+                            throw new OutOfScopeDIYException(m);
+                        }
+                    }else if(m.getStext3()!=null){
+                        if(companySet.contains(m.getEmployeePostName())){
+                            userExt.setSalesLevel("company_level");
+                            userExt.setOrgName(m.getStext3());
+                            fildName = "Org3name";
+                            fildCode = "Org3code";
+                        } else{
+                            throw new OutOfScopeDIYException(m);
+                        }
+                    }else{
+                        throw new OutOfScopeDIYException(m);
+                    }
 
 
 
-                        if(userExt.getOrgName()!=null){
-                            Map<String,String> map=  metaDiySalesorgtreeMapper.selectSalesorgByName(fildName,fildCode,userExt.getOrgName());
-                            if(map!=null && map.containsKey("orgcode")){
-                                userExt.setOrgCode(map.get("orgcode"));
-                            }
+                    if(userExt.getOrgName()!=null){
+                        Map<String,String> map=  metaDiySalesorgtreeMapper.selectSalesorgByName(fildName,fildCode,userExt.getOrgName());
+                        if(map!=null && map.containsKey("orgcode")){
+                            userExt.setOrgCode(map.get("orgcode"));
                         }
-                        if(userExt.getOrgCode()==null){
-                            throw new NotFountOrgCodeException(m);
+                    }
+                    if(userExt.getOrgCode()==null){
+                        throw new NotFountOrgCodeException(m);
+                    }
+                    /**======== 构建diy用户扩展信息表 end===============*/
+
+
+
+                    if (loginNameList.contains(user.getLoginName())) {
+                        /**  更新 */
+                        SysUser userInDb =sysUserService.selectUserByLoginName(user.getLoginName());
+                        if(!userInDb.getSysUserExt().getSalesLevel().equals("diy_level")){
+                            user.setSysUserExt(userExt);
                         }
+                        sysUserService.updateUserInfoAndSalesExt(user);
+                    } else {
+                        /**  插入 */
                         //修改密码并加密
                         user.setPassword(m.getLoginName());
                         user.setSalt(ShiroSaltUtil.randomSalt());
@@ -204,9 +211,7 @@ public class AnalysisSysUserService implements IAnalysisSysUserService {
                         user.setSysUserExt(userExt);
                         sysUserService.insertUserAndSalesExt(user);
                         successCount++;
-
                     }
-
                 }catch (OutOfScopeDIYException|NotFountOrgCodeException e){
                     /**
                      * 警告类异常

+ 106 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/utils/CustomerAccessTokenUtil.java

@@ -0,0 +1,106 @@
+package com.dgtly.sync.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.dgtly.common.exception.BusinessException;
+import com.dgtly.common.utils.http.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Date;
+
+@Component
+public class CustomerAccessTokenUtil {
+    public enum UrlType{
+
+        MANAGER,
+        STOREGUIDE;
+
+
+
+    }
+
+    private static final Logger log = LoggerFactory.getLogger(CustomerAccessTokenUtil.class);
+
+    private String accessToken;
+    /**
+     * 创建时间
+     */
+    private long createTime;
+
+    /**
+     * 过期时间单位s
+     */
+    private long expires;
+
+
+    @Value(value = "${customer.appid:none}")
+    private String appid;
+
+
+
+    @Value(value = "${customer.appsecret:none}")
+    private String appsecret;
+
+    @Value(value = "${customer.domain:none}")
+    private String domain;
+
+    //获取token地址
+    private String tokenUrl;
+    //获取经销商负责人列表
+    private String managerListUrl ;
+    //获取经销商导购列表
+    private String storeGuideListUrl ;
+
+    @PostConstruct
+    public void init() {
+        tokenUrl=domain+"/auth/jwt/v1/gettoken?appid=%s&appsecret=%s";
+        managerListUrl =domain+"/wechatwork/diydt/v1/user/manager/list?access_token=%s";
+        storeGuideListUrl =domain+"/wechatwork/diydt/v1/user/storeGuide/list?access_token=%s";
+    }
+
+    public String getAccessToken(){
+
+        //token未过期使用缓存的token
+        long currentTiem = new Date().getSeconds();
+        if(accessToken==null||((currentTiem-createTime)>=expires)){
+            String res = HttpUtils.sendGet(String.format(tokenUrl,appid,appsecret));
+            JSONObject json = JSONObject.parseObject(res);
+            int code = json.getInteger("code");
+            if(code==0){
+                createTime = new Date().getSeconds();
+                expires = json.getInteger("expires_in");
+                accessToken=json.getString("access_token");
+            }else{
+                accessToken= null;
+                createTime =0;
+                expires = 0;
+                log.error("获取diy经销商接口报错,错误代码:"+code+",信息:"+json.getString("msg"));
+                throw new BusinessException("获取diy经销商接口报错,错误代码:"+code+",信息:"+json.getString("msg"));
+            }
+
+        }
+        return accessToken;
+
+    }
+
+
+    public String getUrl(UrlType type){
+        String token = getAccessToken();
+        String url ="";
+        switch (type) {
+            case MANAGER:
+                url = String.format(managerListUrl,token);
+                break;
+            case STOREGUIDE:
+                url = String.format(storeGuideListUrl,token);
+                break;
+        }
+        return url;
+    }
+
+
+
+}

+ 1 - 0
suishenbang-sync/suishenbang-sync-common/src/main/resources/mapper/sync/SyncLogMapper.xml

@@ -26,6 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="params.endCreateTime != null and params.endCreateTime != '' ">and create_time &lt;= #{params.endCreateTime}</if>
             <if test="syncType != null  and syncType != ''"> and sync_type = #{syncType}</if>
         </where>
+        order by create_time desc
     </select>
     
     <select id="selectSyncLogById" parameterType="String" resultMap="SyncLogResult">

+ 4 - 1
suishenbang-system/pom.xml

@@ -28,7 +28,10 @@
             <groupId>com.dgtly</groupId>
             <artifactId>suishenbang-common</artifactId>
         </dependency>
-        
+
+
+
+
     </dependencies>
 	
 </project>

+ 22 - 0
suishenbang-system/src/main/java/com/dgtly/system/domain/SysUserExt.java

@@ -36,6 +36,12 @@ public class SysUserExt extends BaseEntity
     /** 领导名称 */
     private String bossName;
 
+    /** 经销商所属门店代码 */
+    private String customerCode;
+
+    /** 是否是经销商负责人 1是  0不是*/
+    private String isCustomerManager;
+
     public void setUserId(Long userId)
     {
         this.userId = userId;
@@ -99,6 +105,22 @@ public class SysUserExt extends BaseEntity
         this.bossName = bossName;
     }
 
+    public String getCustomerCode() {
+        return customerCode;
+    }
+
+    public void setCustomerCode(String customerCode) {
+        this.customerCode = customerCode;
+    }
+
+    public String getIsCustomerManager() {
+        return isCustomerManager;
+    }
+
+    public void setIsCustomerManager(String isCustomerManager) {
+        this.isCustomerManager = isCustomerManager;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 3 - 1
suishenbang-system/src/main/java/com/dgtly/system/service/ISysUserService.java

@@ -16,7 +16,6 @@ public interface ISysUserService
 
 
 
-
     /**
      * 查询所有用户LoginName
      *
@@ -113,6 +112,9 @@ public interface ISysUserService
      */
     public Integer insertUserAndSalesExt(SysUser user);
 
+
+
+
     /**
      * 保存用户信息
      * 

+ 8 - 2
suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserServiceImpl.java

@@ -54,6 +54,7 @@ public class SysUserServiceImpl implements ISysUserService
 
 
 
+
     /**
      * 根据条件分页查询用户列表
      * 
@@ -213,6 +214,8 @@ public class SysUserServiceImpl implements ISysUserService
     }
 
 
+
+
     /**
      * 修改保存用户信息
      * 
@@ -259,8 +262,11 @@ public class SysUserServiceImpl implements ISysUserService
         // 删除用户与角色关联
         SysUser u =  userMapper.selectUserByLoginName(user.getLoginName());
         SysUserExt userExt = user.getSysUserExt();
-        userExt.setUserId(u.getUserId());
-        userExtMapper.insertOrUpSysUserExt(userExt);
+        if(userExt!=null){
+            userExt.setUserId(u.getUserId());
+            userExtMapper.insertOrUpSysUserExt(userExt);
+        }
+
         return userMapper.updateUser(user);
     }
 

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

@@ -67,6 +67,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="sapEmployeeId"    column="sap_employee_id"    />
         <result property="bossEmployeeId"    column="boss_employee_id"    />
         <result property="bossName"    column="boss_name"    />
+        <result property="customerCode"    column="customer_code"    />
+        <result property="isCustomerManager"    column="is_customer_manager"    />
     </resultMap>
 	
 	<sql id="selectUserVo">
@@ -75,7 +77,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         		c.company_name,
        		    d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
        		    r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,
-       		    suse.sales_level,suse.org_name,suse.org_code,suse.sap_employee_id,suse.boss_employee_id,suse.boss_name
+       		    suse.sales_level,suse.org_name,suse.org_code,suse.sap_employee_id,suse.boss_employee_id,suse.boss_name,suse.customer_code,suse.is_customer_manager
 		from sys_user u
 			 left join sys_dept d on u.dept_id = d.dept_id
 			 left join sys_company c on u.company_id = c.id

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

@@ -12,10 +12,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="sapEmployeeId"    column="sap_employee_id"    />
         <result property="bossEmployeeId"    column="boss_employee_id"    />
         <result property="bossName"    column="boss_name"    />
+        <result property="customerCode"    column="customer_code"    />
+        <result property="isCustomerManager"    column="is_customer_manager"    />
     </resultMap>
 
     <sql id="selectSysUserExtVo">
-        select user_id, org_code, sales_level, org_name, sap_employee_id, boss_employee_id, boss_name from sys_user_ext
+        select user_id, org_code, sales_level, org_name, sap_employee_id, boss_employee_id, boss_name,customer_code,is_customer_manager from sys_user_ext
     </sql>
 
     <select id="selectSysUserExtList" parameterType="SysUserExt" resultMap="SysUserExtResult">
@@ -27,6 +29,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sapEmployeeId != null "> and sap_employee_id = #{sapEmployeeId}</if>
             <if test="bossEmployeeId != null "> and boss_employee_id = #{bossEmployeeId}</if>
             <if test="bossName != null  and bossName != ''"> and boss_name like concat('%', #{bossName}, '%')</if>
+            <if test="customerCode != null and customerCode != ''"> and customer_code like concat('%', #{customerCode}, '%')</if>
+            <if test="isCustomerManager != null  and isCustomerManager != ''"> and is_customer_manager = #{isCustomerManager}</if>
         </where>
     </select>
     
@@ -45,6 +49,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sapEmployeeId != null ">sap_employee_id,</if>
             <if test="bossEmployeeId != null ">boss_employee_id,</if>
             <if test="bossName != null  and bossName != ''">boss_name,</if>
+            <if test="customerCode != null and customerCode != ''">  customer_code,</if>
+            <if test="isCustomerManager != null  and isCustomerManager != ''">  is_customer_manager,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="userId != null ">#{userId},</if>
@@ -54,6 +60,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sapEmployeeId != null ">#{sapEmployeeId},</if>
             <if test="bossEmployeeId != null ">#{bossEmployeeId},</if>
             <if test="bossName != null  and bossName != ''">#{bossName},</if>
+            <if test="customerCode != null and customerCode != ''"> #{customerCode},</if>
+            <if test="isCustomerManager != null  and isCustomerManager != ''"> #{isCustomerManager},</if>
          </trim>
     </insert>
 
@@ -66,6 +74,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sapEmployeeId != null ">sap_employee_id = #{sapEmployeeId},</if>
             <if test="bossEmployeeId != null ">boss_employee_id = #{bossEmployeeId},</if>
             <if test="bossName != null  and bossName != ''">boss_name = #{bossName},</if>
+            <if test="customerCode != null and customerCode != ''"> customer_code =#{customerCode}, </if>
+            <if test="isCustomerManager != null  and isCustomerManager != ''"> is_customer_manager = #{isCustomerManager},</if>
         </trim>
         where user_id = #{userId}
     </update>
@@ -93,6 +103,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sapEmployeeId != null ">sap_employee_id,</if>
             <if test="bossEmployeeId != null ">boss_employee_id,</if>
             <if test="bossName != null  and bossName != ''">boss_name,</if>
+            <if test="customerCode != null and customerCode != ''">  customer_code,</if>
+            <if test="isCustomerManager != null  and isCustomerManager != ''">  is_customer_manager,</if>
+
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             #{userId},
@@ -102,6 +115,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sapEmployeeId != null ">#{sapEmployeeId},</if>
             <if test="bossEmployeeId != null ">#{bossEmployeeId},</if>
             <if test="bossName != null  and bossName != ''">#{bossName},</if>
+            <if test="customerCode != null and customerCode != ''"> #{customerCode},</if>
+            <if test="isCustomerManager != null  and isCustomerManager != ''"> #{isCustomerManager},</if>
+
         </trim>
         ON DUPLICATE KEY UPDATE
         <trim suffixOverrides=",">
@@ -111,6 +127,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sapEmployeeId != null ">sap_employee_id = #{sapEmployeeId},</if>
             <if test="bossEmployeeId != null ">boss_employee_id = #{bossEmployeeId},</if>
             <if test="bossName != null  and bossName != ''">boss_name = #{bossName},</if>
+            <if test="customerCode != null and customerCode != ''"> customer_code=#{customerCode},</if>
+            <if test="isCustomerManager != null  and isCustomerManager != ''">is_customer_manager= #{isCustomerManager},</if>
+
         </trim>
   </insert>
 

+ 1 - 0
suishenbang-wxportal/suishenbang-wxportal-common/pom.xml

@@ -21,5 +21,6 @@
             <groupId>com.dgtly</groupId>
             <artifactId>suishenbang-system</artifactId>
         </dependency>
+
     </dependencies>
 </project>

+ 2 - 0
suishenbang-wxportal/suishenbang-wxportal-common/src/main/java/com/dgtly/wxportal/service/IWxQyUserService.java

@@ -67,4 +67,6 @@ public interface IWxQyUserService
      * @return 结果
      */
     public int deleteWxQyUserById(String userid);
+
+
 }