6 Commit-ok 3f98ba7f4d ... 01ce0b441b

Szerző SHA1 Üzenet Dátum
  njs 01ce0b441b Merge branch 'userWxResponse-25917' of http://git.dgtis.com/qxp/suishenbang-oneportal into prd-new 2 hónapja
  njs 4fdd8a88ed 注释掉服务商人员同步 2 hónapja
  njs e38eccaa6c 下单系统参数格式更改 2 hónapja
  njs d5545f7636 企微调用ssb,先调下单去建店 2 hónapja
  njs 5e2d08009c 修改检验 2 hónapja
  njs 3ed109898a 企微调用ssb服务商用户数据更新 2 hónapja

+ 1 - 1
suishenbang-api/src/main/resources/application-prod.yml

@@ -79,7 +79,7 @@ spring:
     APiKey: VOw81LBuXDSSRx4v #aUK5WZTmWjzn1foC
     shopStoneLikePaint: http://esbgateway.nipponpaint.com.cn/NPeportal/api/diydt/v3/texturewall/staff/list #http://esbgateway-test.nipponpaint.com.cn/NPeportal/api/diydt/v3/texturewall/staff/list
     goldShopUser: http://esbgateway.nipponpaint.com.cn/NPeportal/api/diydt/v3/goldshop/staff/list
-
+    esbShopStoneLikePaintUser: http://esb.nipponpaint.com.cn/esb/get/comm/api/body
   mail:
     #邮件服务器地址
     host: mail.dgtis.com

+ 1 - 1
suishenbang-api/src/main/resources/application-uat.yml

@@ -81,7 +81,7 @@ spring:
     APiKey: VOw81LBuXDSSRx4v #aUK5WZTmWjzn1foC
     shopStoneLikePaint: http://esbgateway.nipponpaint.com.cn/NPeportal/api/diydt/v3/texturewall/staff/list #http://esbgateway-test.nipponpaint.com.cn/NPeportal/api/diydt/v3/texturewall/staff/list
     goldShopUser: http://esbgateway.nipponpaint.com.cn/NPeportal/api/diydt/v3/goldshop/staff/list
-
+    esbShopStoneLikePaintUser: http://esb-test.nipponpaint.com.cn/esb/get/comm/api/body
   mail:
     #邮件服务器地址
     host: mail.dgtis.com

+ 95 - 25
suishenbang-common/src/main/java/com/dgtly/common/utils/http/HttpUtils.java

@@ -281,32 +281,32 @@ public class HttpUtils
             StringBuilder paramBuilder = new StringBuilder();
             if (params != null && !params.isEmpty()) {
                 for (Map.Entry<String, Object> entry : params.entrySet()) {
-                   if(entry.getValue() != null){
-                    if (paramBuilder.length() != 0) {
-                        paramBuilder.append("&");
+                    if(entry.getValue() != null){
+                        if (paramBuilder.length() != 0) {
+                            paramBuilder.append("&");
+                        }
+                        String key = entry.getKey();
+                        String value = String.valueOf(entry.getValue());
+
+
+                        try {
+                            // 对键进行编码(键通常不需要预先编码)
+                            String encodedKey = URLEncoder.encode(key, StandardCharsets.UTF_8.name());
+
+                            // 检查值是否已经URL编码过
+                            if (isUrlEncoded(value)) {
+                                // 如果已经编码过,直接使用
+                                paramBuilder.append(encodedKey).append("=").append(value);
+                            } else {
+                                // 如果未编码,进行编码
+                                String encodedValue = URLEncoder.encode(value, StandardCharsets.UTF_8.name());
+                                paramBuilder.append(encodedKey).append("=").append(encodedValue);
+                            }
+                        } catch (UnsupportedEncodingException e) {
+                            throw new RuntimeException("UTF-8 encoding not supported", e);
+                        }
+
                     }
-                       String key = entry.getKey();
-                       String value = String.valueOf(entry.getValue());
-
-
-                       try {
-                           // 对键进行编码(键通常不需要预先编码)
-                           String encodedKey = URLEncoder.encode(key, StandardCharsets.UTF_8.name());
-
-                           // 检查值是否已经URL编码过
-                           if (isUrlEncoded(value)) {
-                               // 如果已经编码过,直接使用
-                               paramBuilder.append(encodedKey).append("=").append(value);
-                           } else {
-                               // 如果未编码,进行编码
-                               String encodedValue = URLEncoder.encode(value, StandardCharsets.UTF_8.name());
-                               paramBuilder.append(encodedKey).append("=").append(encodedValue);
-                           }
-                       } catch (UnsupportedEncodingException e) {
-                           throw new RuntimeException("UTF-8 encoding not supported", e);
-                       }
-
-                   }
                 }
             }
             String urlNameString = url + "?" + paramBuilder.toString();
@@ -688,6 +688,76 @@ public class HttpUtils
         return result.toString();
     }
 
+    /**
+     * @description: 指定 URL 发送POST方法的请求(支持自定义请求头和JSON参数)
+     * @param: [url, headers, param]
+     * @return: java.lang.String
+     * @author: njs
+     * @date: 2025/9/18 15:28
+     */
+    public static String sendJsonPostWithHeaders(String url, Map<String, String> headers, Object param) {
+        String json = JSONObject.toJSONString(param);
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try {
+            log.info("sendJsonPostWithHeaders - url: {}, headers: {}, param: {}", url, headers, json);
+            URL realUrl = new URL(url);
+            URLConnection conn = realUrl.openConnection();
+
+            // 设置默认请求头
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("Content-Type", "application/json");
+            conn.setRequestProperty("contentType", "utf-8");
+
+            // 设置自定义请求头
+            if (headers != null && !headers.isEmpty()) {
+                for (Map.Entry<String, String> entry : headers.entrySet()) {
+                    conn.setRequestProperty(entry.getKey(), entry.getValue());
+                }
+            }
+
+            conn.setUseCaches(false);
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            out = new PrintWriter(conn.getOutputStream());
+            out.write(json);
+            out.flush();
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        } catch (ConnectException e) {
+            log.error("调用HttpUtils.sendJsonPostWithHeaders ConnectException, url=" + url + ",param=" + json, e);
+            throw new BusinessException("调用HttpUtils.sendJsonPostWithHeaders ConnectException, url=" + url + ",param=" + json);
+        } catch (SocketTimeoutException e) {
+            log.error("调用HttpUtils.sendJsonPostWithHeaders SocketTimeoutException, url=" + url + ",param=" + json, e);
+            throw new BusinessException("调用HttpUtils.sendJsonPostWithHeaders SocketTimeoutException, url=" + url + ",param=" + json);
+        } catch (IOException e) {
+            log.error("调用HttpUtils.sendJsonPostWithHeaders IOException, url=" + url + ",param=" + json, e);
+            throw new BusinessException("调用HttpUtils.sendJsonPostWithHeaders IOException, url=" + url + ",param=" + json);
+        } catch (Exception e) {
+            log.error("调用HttpUtils.sendJsonPostWithHeaders Exception, url=" + url + ",param=" + json, e);
+            throw new BusinessException("调用HttpUtils.sendJsonPostWithHeaders Exception, url=" + url + ",param=" + json);
+        } finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                log.error("调用in.close Exception, url=" + url + ",param=" + json, ex);
+            }
+        }
+        return result.toString();
+    }
 
 
 }

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

@@ -77,7 +77,7 @@ public class RyTask
      */
     public void shopStoneLikePaint() throws ParseException {
         //获取TUC仿石漆服务商人员
-        shopUserTypeComponent.shopStoneLikePaint();
+       // shopUserTypeComponent.shopStoneLikePaint();
         //获取金牌店用户人员
         shopUserTypeComponent.shopGoldShopUser();
     }

+ 27 - 22
suishenbang-system/src/main/java/com/dgtly/system/service/ISysUserService.java

@@ -5,6 +5,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.dgtly.common.exception.BusinessException;
 import com.dgtly.system.domain.CustomerModelVO;
 import com.dgtly.system.domain.SysUser;
@@ -13,7 +15,7 @@ import org.apache.ibatis.annotations.Param;
 
 /**
  * 用户 业务层
- * 
+ *
  * @author dgtly
  */
 public interface ISysUserService
@@ -32,7 +34,7 @@ public interface ISysUserService
 
     /**
      * 根据条件分页查询用户列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -40,7 +42,7 @@ public interface ISysUserService
 
     /**
      * 根据条件分页查询已分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -48,7 +50,7 @@ public interface ISysUserService
 
     /**
      * 根据条件分页查询未分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -56,7 +58,7 @@ public interface ISysUserService
 
     /**
      * 通过用户名查询用户
-     * 
+     *
      * @param userName 用户名
      * @return 用户对象信息
      */
@@ -68,7 +70,7 @@ public interface ISysUserService
 
     /**
      * 通过手机号码查询用户
-     * 
+     *
      * @param phoneNumber 手机号码
      * @return 用户对象信息
      */
@@ -76,7 +78,7 @@ public interface ISysUserService
 
     /**
      * 通过邮箱查询用户
-     * 
+     *
      * @param email 邮箱
      * @return 用户对象信息
      */
@@ -84,7 +86,7 @@ public interface ISysUserService
 
     /**
      * 通过用户ID查询用户
-     * 
+     *
      * @param userId 用户ID
      * @return 用户对象信息
      */
@@ -92,7 +94,7 @@ public interface ISysUserService
 
     /**
      * 通过用户ID删除用户
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
@@ -100,7 +102,7 @@ public interface ISysUserService
 
     /**
      * 批量删除用户信息
-     * 
+     *
      * @param ids 需要删除的数据ID
      * @return 结果
      * @throws Exception 异常
@@ -109,7 +111,7 @@ public interface ISysUserService
 
     /**
      * 保存用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -128,7 +130,7 @@ public interface ISysUserService
 
     /**
      * 保存用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -136,7 +138,7 @@ public interface ISysUserService
 
     /**
      * 修改用户详细信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -161,7 +163,7 @@ public interface ISysUserService
 
     /**
      * 修改用户密码信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -169,7 +171,7 @@ public interface ISysUserService
 
     /**
      * 校验用户名称是否唯一
-     * 
+     *
      * @param loginName 登录名称
      * @return 结果
      */
@@ -193,14 +195,14 @@ public interface ISysUserService
 
     /**
      * 校验用户是否允许操作
-     * 
+     *
      * @param user 用户信息
      */
     public void checkUserAllowed(SysUser user);
 
     /**
      * 根据用户ID查询用户所属角色组
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
@@ -208,7 +210,7 @@ public interface ISysUserService
 
     /**
      * 根据用户ID查询用户所属岗位组
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
@@ -216,7 +218,7 @@ public interface ISysUserService
 
     /**
      * 导入用户数据
-     * 
+     *
      * @param userList 用户数据列表
      * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
      * @param operName 操作用户
@@ -226,7 +228,7 @@ public interface ISysUserService
 
     /**
      * 用户状态修改
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -263,9 +265,9 @@ public interface ISysUserService
      * @description: 根据经销商code查询经销人员列表
      * @param: [orgCode]
      * @return: java.util.List<com.dgtly.system.domain.SysUser>
-     * @author: qxm      
+     * @author: qxm
      * @date: 2020/10/19 14:38
-     */ 
+     */
     List<SysUser> selectUserByOrgCode(String orgCode);
 
     String getCustomNameByCode(String code);
@@ -277,4 +279,7 @@ public interface ISysUserService
     void deleteByLoginName(String loginName);
 
     int deleteUserByLoginName(String loginName);
+
+    Boolean buildStoneLikePaintByQwData(JSONObject json);
+
 }

+ 243 - 13
suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserServiceImpl.java

@@ -1,12 +1,19 @@
 package com.dgtly.system.service.impl;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.dgtly.common.utils.ShiroSaltUtil;
+import com.dgtly.common.utils.http.HttpUtils;
+import com.dgtly.common.utils.security.EncryptPassWordClass;
 import com.dgtly.system.domain.*;
 import com.dgtly.system.mapper.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.dgtly.common.annotation.DataScope;
@@ -50,6 +57,20 @@ public class SysUserServiceImpl implements ISysUserService
     @Autowired
     private SysUserExtMapper userExtMapper;
 
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private SysUserExtMapper sysUserExtMapper;
+
+    @Autowired
+    private SysUserShopExtMapper userShopExtMapper;
+
+    @Autowired
+    private SysUserServiceImpl sysUserService;
+
+    @Value(value = "${spring.esb.esbShopStoneLikePaintUser}")
+    private String esbShopStoneLikePaintUserUrl;
 
 
 
@@ -314,18 +335,18 @@ public class SysUserServiceImpl implements ISysUserService
     public void insertShopUserRole(SysUser user)
     {
 
-            // 新增用户与角色管理
-            List<SysUserRole> list = new ArrayList<SysUserRole>();
-            SysUserRole ur = new SysUserRole();
-            ur.setUserId(user.getUserId());
-            ur.setRoleId(user.getRoleId());
-            if(user.getShopType() != null){
-                ur.setShopType(user.getShopType());
-            }
-            list.add(ur);
-            if (list.size() > 0) {
-                userRoleMapper.batchUserRole(list);
-            }
+        // 新增用户与角色管理
+        List<SysUserRole> list = new ArrayList<SysUserRole>();
+        SysUserRole ur = new SysUserRole();
+        ur.setUserId(user.getUserId());
+        ur.setRoleId(user.getRoleId());
+        if(user.getShopType() != null){
+            ur.setShopType(user.getShopType());
+        }
+        list.add(ur);
+        if (list.size() > 0) {
+            userRoleMapper.batchUserRole(list);
+        }
 
     }
 
@@ -447,7 +468,7 @@ public class SysUserServiceImpl implements ISysUserService
 //            List<SysRole> roles =  user.getRoles();
 //            for(SysRole role:roles){
 //                if(role.getRoleKey().equals("admin")){
-                    throw new BusinessException("不允许操作超级管理员用户");
+            throw new BusinessException("不允许操作超级管理员用户");
 //                }
 //            }
 
@@ -697,4 +718,213 @@ public class SysUserServiceImpl implements ISysUserService
         return userMapper.deleteUserByLoginName(loginName);
     }
 
+    @Override
+    public Boolean buildStoneLikePaintByQwData(JSONObject json) {
+        Long roleId = roleMapper.selectRoleIdByRoleKey("shopStoneLikePaint");
+        //0TUC仿石漆服务商人员
+        Boolean i = buildShopUser(json,"0",roleId);
+
+        return  i;
+    }
+
+    public Boolean buildShopUser(JSONObject jsonObject, String usertype, Long roleId){
+        JSONObject jo =jsonObject;
+        Set<String> loginNameSet = sysUserService.selectAllUserLoginName();
+        loginNameSet = loginNameSet.stream().map(String::toUpperCase).collect(Collectors.toSet());
+        try {
+            String userName = jo.getString("staff_name");
+            String userPhone = jo.getString("staff_mobile");
+            //是否同步企业微信
+            Boolean isSync = jo.getBoolean("is_synced_to_wecom");
+            //是否有效用户
+            Boolean isActive = jo.getBoolean("is_active");
+            String subOfficeCode = jo.getString("office_code");
+            String subOfficeName = jo.getString("office_name");
+            String shopCode = jo.getString("organization_code");
+            String shopName = jo.getString("organization_name");
+            String dataUpdateTime = jo.getString("update_datetime");
+            String dataUserId = jo.getString("id");
+            String customerCode = jo.getString("distributor_code");
+            String customerName = jo.getString("distributor_name");
+            /*人员信息是否有效,true有效,false无效。是否同步到企微 */
+            String loginName ="";
+            if(isActive && isSync){
+                loginName = jo.getString("wecom_userid");
+            }else{
+                //先判断该用户是否存在在处理离职和去掉角色,否则直接跳出循环不处理
+                //离职掉该门店和用户关联关系
+                if(!isActive){
+                    //用户无效后接口获取不到企微id,需从关联表查询
+                    loginName = userShopExtMapper.selectLoginNameByUserId(dataUserId,shopCode,usertype);
+                    if(loginName !=null && !loginName.isEmpty()){
+                        //查询用户信息
+                        SysUser user = sysUserMapper.selectUserByLoginName(loginName);
+                        userShopExtMapper.deleteUserShopExt(user.getUserId().toString(),loginName,shopCode,usertype);
+                        //去掉该用户和角色的关联关系
+                        userRoleMapper.deleteUserRoleByUserIdAndExt(user.getUserId(),roleId,usertype);
+                        //离职处理以及用户主信息是否有门店账号处理需要添加
+                        //查询门店用户表是否存在用户和其他门店的关联关系,如果存在就不离职,不存在查询是否有经销商的关联关系,如果存在就不离职,不存在就离职
+                        SysUserShopExt shop = new SysUserShopExt();
+                        shop.setUserId(user.getUserId().toString());
+                        shop.setDelFlag("0");
+                        List<SysUserShopExt>  shopExtList = userShopExtMapper.selectSysUserShopExtList(shop);
+                        if(shopExtList == null || shopExtList.size() == 0){
+                            //在查用户经销商扩展信息
+                            SysUserExt userCustomerExt = sysUserExtMapper.selectSysUserExtById(user.getUserId());
+                            user.setIsShopAccount("0");
+                            if(userCustomerExt == null){
+                                //离职处理2
+                                user.setQuit("2");
+                            }
+                            //修改用户信息
+                            sysUserMapper.updateUser(user);
+
+                        }
+                    }
+                }
+                return true;
+            }
+            //先建店
+            Map<String, Object> params = new HashMap<>();
+            Map<String,String> urlMap = new HashMap<>();
+            urlMap.put("userid","ERP");
+            if (subOfficeName != null && subOfficeName.startsWith("BMD")){
+                //bmd token死值
+                String bmdToken="575A4BE6-FCD8-485D-98E0-E51592058AB7";
+                urlMap.put("token",bmdToken);
+            }else{
+                //非bmd token 死值
+                String dorderToken="80027CC7791640CDBAE4D8F0E587985F";
+                urlMap.put("token",dorderToken);
+            }
+            urlMap.put("if","IF_NP_SHOP");
+            urlMap.put("callmethod","ADD_FSQ");
+            params.put("url", urlMap);
+            Map<String,Object> bodyMap = new HashMap<>();
+            bodyMap.put("MainCustomerCode",customerCode);
+            bodyMap.put("MainCustomerName",customerName);
+            bodyMap.put("OfficeCode",subOfficeCode);
+            bodyMap.put("OfficeName",subOfficeName);
+            bodyMap.put("ShopCode_Pre",shopCode);
+            bodyMap.put("ShopCode",shopCode);
+            bodyMap.put("ShopLinkman",userName);
+            bodyMap.put("ShopName",shopName);
+            bodyMap.put("ShopPhone",userPhone);
+            bodyMap.put("ShopTypeName","FSQ");
+            params.put("body", bodyMap);
+
+            Map<String, String> headers = new HashMap<String, String>(2);
+            String uuidStr = UUID.randomUUID().toString();
+            headers.put("Content-Type","application/json");
+            headers.put("requestId",uuidStr);
+            headers.put("trackId",uuidStr);
+            headers.put("sourceSystem","SSB");
+            try{
+                if (subOfficeName != null && subOfficeName.startsWith("BMD")) {
+                    // subOfficeName 以 "BMD" 开头的处理逻辑
+                    //bmd
+                    headers.put("serviceName","S_XXX_BMDOMS_BMDNewStore_S");
+                    HttpUtils.sendJsonPostWithHeaders(esbShopStoneLikePaintUserUrl,headers,params);
+                }else{
+                    //非bmd
+                    headers.put("serviceName","S_XXX_BMDOMS_DORDERNewStore_S");
+                    HttpUtils.sendJsonPostWithHeaders(esbShopStoneLikePaintUserUrl,headers,params);
+                }
+            }catch (Exception e){
+                log.error("服务商调用建店异常"+jsonObject,e);
+            }
+
+
+            if (!loginNameSet.contains(loginName.toUpperCase().trim())) {
+
+                /** =============用户基本信息构建 start===============*/
+                SysUser user = new SysUser();
+                user.setLoginName(loginName);
+                log.info("门店新用户"+loginName +"门店类型身份"+usertype);
+                user.setUserName(userName);
+                user.setPhonenumber(userPhone);
+                user.setPassword(loginName);
+                user.setSalt(ShiroSaltUtil.randomSalt());
+                user.setPassword(EncryptPassWordClass.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
+                user.setIsShopAccount("1");
+                user.setRoleId(roleId);
+                /** =============用户基本信息构建 end===============*/
+                insertUserAndExt(user);
+                //查询用户信息
+                SysUser userVoExt = sysUserMapper.selectUserByLoginName(loginName);
+                // 新增用户与角色管理
+                user.setUserId(userVoExt.getUserId());
+                user.setShopType(usertype);
+                sysUserService.insertShopUserRole(user);
+                /**======== 构建门店用户扩展信息表 start===============*/
+                SysUserShopExt shopExt = new SysUserShopExt();
+                shopExt.setLoginName(loginName);
+                shopExt.setShopCode(shopCode);
+                shopExt.setShopName(shopName);
+                shopExt.setSubofficeCode(subOfficeCode);
+                shopExt.setSubofficeName(subOfficeName);
+                shopExt.setIsShopType(usertype);
+                shopExt.setUserUpdateTime(dataUpdateTime);
+                shopExt.setDelFlag("0");
+                shopExt.setConstraintUserId(dataUserId);
+                //用户id
+                shopExt.setUserId(userVoExt.getUserId().toString());
+                userShopExtMapper.insertSysUserShopExt(shopExt);
+                loginNameSet.add(loginName);
+                return true;
+            } else {
+                /*已经存在的,需增加用户标识,然后增加门店用户扩展信息*/
+                SysUser user = sysUserMapper.selectUserByLoginName(loginName);
+                user.setPhonenumber(userPhone);
+                //允许同步自动用户
+                if (("0").equals(user.getIsSync())) {
+                    //查询该用户是否存在该接口返回中
+                    user.setPhonenumber(userPhone);
+                    user.setUserName(userName);
+                    user.setIsShopAccount("1");
+                    sysUserService.updateUserInfo(user);
+
+                    /**======== 构建门店用户扩展信息表 start===============*/
+                    //先删除用户门店扩展表,再插入
+                    userShopExtMapper.deletePhysicsUserShopExt(user.getUserId().toString(),loginName,shopCode,usertype);
+                    SysUserShopExt shopExt = new SysUserShopExt();
+                    shopExt.setLoginName(loginName);
+                    shopExt.setShopCode(shopCode);
+                    shopExt.setShopName(shopName);
+                    shopExt.setSubofficeCode(subOfficeCode);
+                    shopExt.setSubofficeName(subOfficeName);
+                    shopExt.setIsShopType(usertype);
+                    shopExt.setUserUpdateTime(dataUpdateTime);
+                    shopExt.setDelFlag("0");
+                    shopExt.setConstraintUserId(dataUserId);
+                    //用户id
+                    shopExt.setUserId(user.getUserId().toString());
+                    userShopExtMapper.insertSysUserShopExt(shopExt);
+                    //去掉该用户和角色的关联关系
+                    userRoleMapper.deleteUserRoleByUserIdAndExt(user.getUserId(),roleId,usertype);
+                    user.setRoleId(roleId);
+                    user.setUserId(user.getUserId());
+                    user.setShopType(usertype);
+                    sysUserService.insertShopUserRole(user);
+
+                }
+                return true;
+            }
+        }catch (Exception e){
+            log.error("门店用户数据分析异常"+e.getMessage());
+
+        }
+
+        return false;
+    }
+
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public Integer insertUserAndExt(SysUser user) {
+        // 新增用户信息
+        int rows = sysUserMapper.insertUser(user);
+
+        return rows;
+    }
 }

+ 28 - 0
suishenbang-wxportal/suishenbang-wxportal-api/src/main/java/com/dgtly/wxportal/controller/WxController.java

@@ -1,6 +1,7 @@
 package com.dgtly.wxportal.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.dgtly.common.annotation.ApiPassToken;
 import com.dgtly.common.core.controller.ApiBaseController;
@@ -72,6 +73,7 @@ public class WxController extends ApiBaseController {
     @Autowired
     private ISysUserOrderAuthorService sysUserOrderAuthorService;
 
+
     @ApiOperation(value = "获取微信授权跳转url",notes = "参数:{url:www.baidu.com}")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "params" , paramType = "body")
@@ -739,5 +741,31 @@ public class WxController extends ApiBaseController {
     }
 
 
+    @ApiOperation(value = "企微服务商用户信息变更调用ssb", notes = "" )
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "params" , paramType = "body")
+    })
+    @PostMapping("stoneLikePaintByQwData")
+    public Object stoneLikePaintByQwData() {
+
+        ParameterObject obj = getParameterObject();
+        JSONObject stoneUserJson = obj.getJSONObject("data");
+        if(stoneUserJson !=null ){
+            logger.info("收到企微服务商用户信息变更数据:"+stoneUserJson.toJSONString());
+            //0TUC仿石漆服务商人员
+            Boolean i = sysUserService.buildStoneLikePaintByQwData(stoneUserJson);
+            if(i){
+                return AjaxResult.success("数据处理成功");
+            }else{
+                return AjaxResult.error("数据处理失败");
+            }
+
+        }
+
+        return AjaxResult.error("数据解析json异常,请核查数据");
+
+    }
+
+
 
 }