ソースを参照

企微调用ssb服务商用户数据更新

njs 2 ヶ月 前
コミット
3ed109898a

+ 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);
+
 }

+ 170 - 0
suishenbang-system/src/main/java/com/dgtly/system/service/impl/SysUserServiceImpl.java

@@ -1,7 +1,12 @@
 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.security.EncryptPassWordClass;
 import com.dgtly.system.domain.*;
 import com.dgtly.system.mapper.*;
 import org.slf4j.Logger;
@@ -50,7 +55,17 @@ 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;
 
 
     /**
@@ -697,4 +712,159 @@ 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");
+                /*人员信息是否有效,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;
+                }
+
+
+                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;
+    }
 }

+ 29 - 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,32 @@ public class WxController extends ApiBaseController {
     }
 
 
+    @ApiOperation(value = "企微服务商用户信息变更调用ssb", notes = "" )
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "params" , paramType = "body")
+    })
+    @PostMapping("stoneLikePaintByQwData")
+    public Object stoneLikePaintByQwData() {
+
+        ParameterObject obj = getParameterObject();
+        obj.checkParameterNotNull("data");
+        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异常,请核查数据");
+
+    }
+
+
 
 }