Преглед на файлове

增加用户创建接口、增加拼音依赖

liyuan преди 1 седмица
родител
ревизия
b003f8e7f1

+ 6 - 0
blade-common/pom.xml

@@ -17,6 +17,12 @@
     <dependencies>
 
         <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.0</version>
+        </dependency>
+
+        <dependency>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
             <version>1.4</version>

+ 12 - 0
blade-common/src/main/java/org/springblade/common/config/MD5Util.java

@@ -4,6 +4,8 @@ import org.apache.commons.codec.binary.Base64;
 
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 
 /**
  * @desc: md5工具类
@@ -70,4 +72,14 @@ public class MD5Util {
 	}
 
 
+	public static String encryptionData(String data) throws NoSuchAlgorithmException {
+		MessageDigest md = MessageDigest.getInstance("MD5");
+		byte[] digest = md.digest(data.getBytes());
+		StringBuilder sb = new StringBuilder();
+		for (byte b : digest) {
+			sb.append(String.format("%02x", b));
+		}
+		return sb.toString();
+	}
+
 }

+ 45 - 0
blade-common/src/main/java/org/springblade/common/utils/PinYinUtil.java

@@ -0,0 +1,45 @@
+package org.springblade.common.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import org.springframework.util.StringUtils;
+
+/**
+ * @author Rain
+ */
+@Slf4j
+public class PinYinUtil {
+
+
+	public static String getUserNamePinYin(String userName) {
+		HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
+		format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+		StringBuilder pinyin = new StringBuilder();
+		String userNameNotBlank = userName.replaceAll("\\s+", "");
+		if (!StringUtils.hasText(userNameNotBlank)) {
+			return "";
+		}
+		for (char c : userNameNotBlank.toCharArray()) {
+			try {
+				String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
+				if (pinyinArray != null) {
+					pinyin.append(pinyinArray[0]);
+				} else {
+					pinyin.append(c);
+				}
+			} catch (Exception e) {
+				log.error("同步经销商用户转换拼音失败:{}", e.getMessage());
+			}
+		}
+		return pinyin.toString();
+
+	}
+
+
+
+
+}

+ 12 - 0
blade-service-api/blade-user-api/pom.xml

@@ -19,6 +19,18 @@
             <groupId>org.springblade</groupId>
             <artifactId>blade-starter-cache</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-u9cloud-api</artifactId>
+            <version>2.8.2.RELEASE</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springblade</groupId>
+                    <artifactId>blade-core-secure</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
     </dependencies>
 
 </project>

+ 16 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java

@@ -137,4 +137,20 @@ public class User extends TenantEntity {
 	 */
 	@ApiModelProperty(value = "小程序id")
 	private String appletsId;
+
+
+	/**
+	 * 用户类型
+	 * 1: 工厂
+	 * 2: 经销商
+	 * 3: 门店
+	 * 4: 车主
+	 */
+	private Integer userTypeRole;
+
+	/**
+	 * u9 客户id
+	 */
+	private Long customerId;
+
 }

+ 20 - 3
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@@ -8,12 +8,14 @@ import org.springblade.core.tool.api.R;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.entity.UserInfo;
 import org.springblade.system.user.entity.UserOauth;
+import org.springblade.u9cloud.entity.ZcrmViewCustomerSel;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.security.NoSuchAlgorithmException;
 import java.util.List;
 import java.util.Map;
 
@@ -42,7 +44,6 @@ public interface IUserClient {
 	String USER_INFO_BY_IDS = API_PREFIX + "/user-info-by-ids";
 	String USER_INFO_BY_NAME_PRECISION = API_PREFIX + "/user-info-by-name-precision";
 	String LIST_USER_BY_ROLE_ID = API_PREFIX + "/listUserByRoleId";
-	String GET_USER_PAGE = API_PREFIX + "/getUserPage";
 	String USER_BY_IDS = API_PREFIX + "/selectUserIds";
 
 	String USER_BY_NAME = API_PREFIX + "/selectUserByName";
@@ -53,8 +54,7 @@ public interface IUserClient {
 	String SELECT_USER_BY_NAMES_NEW = API_PREFIX + "/selectUserByNamesNew";
 	String GET_USER_BY_ROLE = API_PREFIX + "/getUserByRole";
 	String UPDATE_USER_BY_ID = API_PREFIX + "/updateUserById";
-	String XCX_USER_INFO_BY_WEB_USER_ID = API_PREFIX + "/getXcxUserListByWebUserId";
-	String WEB_USER_BY_XCX_USER_PHONE = API_PREFIX + "/getWebUserByXcxUserPhone";
+
 	String UPDATE_USER_BATCH_BY_ID = API_PREFIX + "/updateUserBatchById";
 
 	String SELECT_LIST_NOT_TENANT_ID = API_PREFIX + "/selectListNotTenantId";
@@ -68,6 +68,12 @@ public interface IUserClient {
 
 	String GET_USER_INFO_BY_PHONE = API_PREFIX + "/getUserInfoByPhone";
 
+	String INSERT_OR_UPDATE_DEALER_USER = API_PREFIX + "insertOrUpdateDealerUser";
+
+
+
+
+
 	@GetMapping(LIST_USER_BY_ROLE_ID)
 	R<List<User>> listUserByRoleId(@RequestParam("roleId") String roleId, @RequestParam(value = "tenantId", required = false) String tenantId, @RequestParam(value = "salesCompanyId", required = false) String salesCompanyId);
 
@@ -296,4 +302,15 @@ public interface IUserClient {
 	@GetMapping(GET_USER_INFO_BY_PHONE)
 	UserInfo getUserInfoByPhone(@RequestParam("phone") String phone, @RequestParam("category") Integer category);
 
+
+	/**
+	 * 批量插入或更新经销商信息
+	 *
+	 * @param customerSelList 参数
+	 * @return 结果
+	 */
+	@PostMapping(INSERT_OR_UPDATE_DEALER_USER)
+	R<String> insertOrUpdateDealerUser(@RequestBody List<ZcrmViewCustomerSel> customerSelList) throws NoSuchAlgorithmException;
+
+
 }

+ 2 - 1
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@@ -61,7 +61,8 @@ public class SysClient implements ISysClient {
 			roleLambdaQueryWrapper
 				.eq(Role::getRoleAlias, alias)
 				.eq(Role::getIsDeleted, 0)
-				.eq(Role::getTenantId, AuthUtil.getTenantId());
+				.eq(Role::getTenantId, AuthUtil.getTenantId())
+				.last(" limit  1");
 			Role role = roleService.getOne(roleLambdaQueryWrapper);
 			if (role == null) {
 				throw new SecurityException("暂未查到符合的角色");

+ 73 - 30
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@@ -5,25 +5,35 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import org.springblade.common.config.MD5Util;
+//import org.springblade.common.utils.PinYinUtil;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.DigestUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.entity.Role;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.entity.UserInfo;
 import org.springblade.system.user.entity.UserOauth;
 import org.springblade.system.user.enums.UserEnum;
 import org.springblade.system.user.service.IUserService;
+import org.springblade.u9cloud.entity.ZcrmViewCustomerSel;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -91,37 +101,10 @@ public class UserClient implements IUserClient {
 	@Override
 	public List<User> userListGetByIds(List<Long> ids) {
 		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
-
 		lqw.in(User::getId, ids);
-//		for (int i = 0; i < ids.size(); i++) {
-//			if (ids.size() - 1 == 1) {
-//				lqw.eq(User::getId, ids.get(i));
-//			} else {
-//				lqw.eq(User::getId, ids.get(i)).or();
-//			}
-//
-//		}
-//		ids.forEach(id -> lqw.eq(User::getId, id).or());
 		return service.list(lqw);
 	}
 
-//	@Override
-//	public List<User> getXcxUserListByWebUserId(List<Long> ids) {
-//		List<User> users = this.userListGetByIds(ids);
-//		List<String> phoneList = users.stream().map(User::getPhone).filter(Objects::nonNull).collect(Collectors.toList());
-//		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
-//		lqw.in(User::getPhone, phoneList);
-//		lqw.eq(User::getUserType, 4);
-//		return service.list(lqw);
-//	}
-//
-//	@Override
-//	public User getWebUserByXcxUserPhone(String phone) {
-//		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
-//		lqw.eq(User::getPhone, phone)
-//			.eq(User::getUserType, 1);
-//		return service.getOne(lqw);
-//	}
 
 	@Override
 	@GetMapping(USER_INFO_BY_NAME_PRECISION)
@@ -317,6 +300,66 @@ public class UserClient implements IUserClient {
 		return service.getUserInfoByPhone(phone, category);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R<String> insertOrUpdateDealerUser(List<ZcrmViewCustomerSel> customerSelList) throws NoSuchAlgorithmException {
+		if (CollectionUtils.isEmpty(customerSelList)) {
+			return R.fail("无客户数据");
+		}
+		R<Long> dealerRole = sysClient.getRoleByAlias("dealer");
+		if (!dealerRole.isSuccess() || Objects.isNull(dealerRole.getData())) {
+			return R.fail("缺少经销商角色,请先维护角色");
+		}
+		BladeUser bladeUser = AuthUtil.getUser();
+		R<Dept> dealerDept = sysClient.getDeptIByName(bladeUser.getTenantId(), "经销商");
+		if (!dealerDept.isSuccess() || Objects.isNull(dealerDept.getData())) {
+			return R.fail("缺少经销商部门,请先维护部门");
+		}
+		Dept dept = dealerDept.getData();
+		String dealerRoleId = String.valueOf(dealerRole.getData());
+		List<User> dealerUserList = service.list(new LambdaQueryWrapper<User>().eq(User::getTenantId, bladeUser.getTenantId()).eq(User::getUserTypeRole, 2));
+		List<User> insertOrUpdateUserList = new ArrayList<>();
+		Date nowDate = DateUtil.now();
+		if (!CollectionUtils.isEmpty(dealerUserList)) {
+			dealerUserList.forEach(usr -> usr.setIsDeleted(1));
+		}
+		for (ZcrmViewCustomerSel customerSel : customerSelList) {
+			User insertOrUpdateUser = new User();
+			insertOrUpdateUserList.add(insertOrUpdateUser);
+			User srcUser = dealerUserList.stream().filter(u -> customerSel.getCustomerId().equals(u.getCustomerId()) && customerSel.getCustomerCode().equals(u.getCode())).findFirst().orElse(null);
+			if (srcUser == null) {
+				insertOrUpdateUser.setPassword(DigestUtil.hex(MD5Util.encryptionData("Kbs@888")));
+				insertOrUpdateUser.setCreateTime(nowDate);
+			} else {
+				insertOrUpdateUser.setId(srcUser.getId());
+				insertOrUpdateUser.setUpdateTime(nowDate);
+				srcUser.setIsDeleted(0);
+			}
+			insertOrUpdateUser.setDeptId(String.valueOf(dept.getId()));
+			insertOrUpdateUser.setUserType(1);
+			insertOrUpdateUser.setCode(customerSel.getCustomerCode());
+			insertOrUpdateUser.setName(customerSel.getCustomerName());
+			insertOrUpdateUser.setRealName(customerSel.getCustomerName());
+			insertOrUpdateUser.setCustomerId(customerSel.getCustomerId());
+			insertOrUpdateUser.setRoleId(dealerRoleId);
+			insertOrUpdateUser.setAccount(customerSel.getCustomerName());
+			// insertOrUpdateUser.setAccount(customerSel.getDescFlexFieldPrivateDescSeg1());
+			insertOrUpdateUser.setPhone(customerSel.getDescFlexFieldPrivateDescSeg2());
+			insertOrUpdateUser.setBankDeposit(customerSel.getBuyerBankAccount());
+			insertOrUpdateUser.setBankAccount(customerSel.getBuyerBankAccountCode());
+			insertOrUpdateUser.setUserTypeRole(2);
+		}
+		List<User> delUserList = dealerUserList.stream().filter(u -> u.getIsDeleted() == 1).collect(Collectors.toList());
+		for (User user : delUserList) {
+			User delUser = new User();
+			delUser.setId(user.getId());
+			delUser.setIsDeleted(1);
+			delUser.setUpdateTime(nowDate);
+			insertOrUpdateUserList.add(delUser);
+		}
+		boolean updateCount = service.saveOrUpdateBatch(insertOrUpdateUserList);
+		return updateCount ? R.success("成功") : R.fail("失败");
+	}
 
 
 }

+ 2 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml

@@ -27,6 +27,8 @@
         <result column="dept_id" property="deptId"/>
         <result column="post_id" property="postId"/>
         <result column="working_status" property="workingStatus"/>
+        <result column="user_type_role" property="userTypeRole"/>
+        <result column="customer_id" property="customerId"/>
     </resultMap>
     <update id="updateByIdPointsBalance" parameterType="org.springblade.system.user.entity.User">
         update blade_user