diff --git a/pom.xml b/pom.xml
index a8536c5..0beef44 100644
--- a/pom.xml
+++ b/pom.xml
@@ -173,7 +173,11 @@
dinger-spring-boot-starter
1.2.0-beta1
-
+
+ io.github.wnjustdoit
+ pinyin4j
+ 2.6.0
+
diff --git a/tduck-api/src/main/java/com/tduck/cloud/api/web/controller/ProjectTemplateController.java b/tduck-api/src/main/java/com/tduck/cloud/api/web/controller/ProjectTemplateController.java
index 2fb72b0..0fb630f 100644
--- a/tduck-api/src/main/java/com/tduck/cloud/api/web/controller/ProjectTemplateController.java
+++ b/tduck-api/src/main/java/com/tduck/cloud/api/web/controller/ProjectTemplateController.java
@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.tduck.cloud.common.util.LoginUserUtil;
import com.tduck.cloud.common.util.Result;
import com.tduck.cloud.common.validator.ValidatorUtils;
import com.tduck.cloud.common.validator.group.AddGroup;
@@ -65,8 +66,11 @@ public class ProjectTemplateController {
*/
@GetMapping("/project/template/type/list")
public Result queryProjectTemplateTypes(QueryProjectTemplateTypeRequest.List request) {
- return Result.success(projectTemplateCategoryService.list(Wrappers.lambdaQuery()
- .orderByDesc(ProjectTemplateCategoryEntity::getSort)));
+ List list = projectTemplateCategoryService.list(
+ Wrappers.lambdaQuery()
+ .eq(ProjectTemplateCategoryEntity::getCustomerId, LoginUserUtil.get().getCustomerId())
+ .orderByDesc(ProjectTemplateCategoryEntity::getSort));
+ return Result.success(list);
}
/**
@@ -78,6 +82,7 @@ public class ProjectTemplateController {
public Result queryProjectTemplates(QueryProjectTemplateRequest.Page request) {
return Result.success(projectTemplateService.page(request.toMybatisPage(),
Wrappers.lambdaQuery()
+ .eq(ProjectTemplateEntity::getCustomerId, LoginUserUtil.get().getCustomerId())
.eq(ObjectUtil.isNotNull(request.getType()), ProjectTemplateEntity::getCategoryId, request.getType())
.like(StrUtil.isNotBlank(request.getName()), ProjectTemplateEntity::getName, request.getName())
.orderByDesc(ProjectTemplateEntity::getUpdateTime)));
diff --git a/tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java b/tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java
index edc41b2..30d8f18 100644
--- a/tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java
+++ b/tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java
@@ -1,14 +1,14 @@
package com.tduck.cloud.api.web.interceptor;
import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSON;
import com.tduck.cloud.account.util.JwtUtils;
-import com.tduck.cloud.common.util.LoginUserUtil;
-import com.tduck.cloud.common.vo.LoginUserVO;
import com.tduck.cloud.api.annotation.Login;
import com.tduck.cloud.api.exception.AuthorizationException;
import com.tduck.cloud.common.constant.CommonConstants;
+import com.tduck.cloud.common.util.LoginUserUtil;
+import com.tduck.cloud.common.vo.LoginUserVO;
import io.jsonwebtoken.Claims;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
@@ -43,7 +43,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
//获取用户凭证
String token = request.getHeader(jwtUtils.getHeader());
- String customerId = request.getHeader(CommonConstants.CUSTOMER_ID);
+ String customerId = request.getHeader(CommonConstants.KEY_CUSTOMER_ID);
if (StrUtil.isBlank(token)) {
token = request.getParameter(jwtUtils.getHeader());
}
@@ -64,11 +64,12 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
//设置用户信息到threadLocal中
LoginUserVO loginUserVO = new LoginUserVO();
+ if (StringUtils.isBlank(customerId)){
+ customerId = CommonConstants.DEFAULT_FREE_OPEN_CUSTOMER_ID;
+ }
loginUserVO.setCustomerId(customerId);
loginUserVO.setUserId(userId);
LoginUserUtil.set(loginUserVO);
- LoginUserVO loginUserVO1 = LoginUserUtil.get();
- System.out.println(JSON.toJSONString(loginUserVO1));
return true;
}
diff --git a/tduck-common/pom.xml b/tduck-common/pom.xml
index 31d7957..663c360 100644
--- a/tduck-common/pom.xml
+++ b/tduck-common/pom.xml
@@ -78,5 +78,9 @@
dysmsapi20170525
2.0.4
+
+ io.github.wnjustdoit
+ pinyin4j
+
-
\ No newline at end of file
+
diff --git a/tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java b/tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java
index 25ee966..1e936a7 100644
--- a/tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java
+++ b/tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java
@@ -26,9 +26,17 @@ public interface CommonConstants {
*/
String JWT_KEY_USER_ID = "userId";
/**
- * 客户Id
+ * 客户Id key
*/
- String CUSTOMER_ID = "customerId";
+ String KEY_CUSTOMER_ID = "customerId";
+ /**
+ * 平台默认客户Id 用于平台给小程序用户的公共模版等公共素材的客户id
+ */
+ String DEFAULT_EPMET_CUSTOMER_ID = "default";
+ /**
+ * 平台其他散户默认客户Id
+ */
+ String DEFAULT_FREE_OPEN_CUSTOMER_ID = "free_open";
/**
diff --git a/tduck-common/src/main/java/com/tduck/cloud/common/entity/BaseEntity.java b/tduck-common/src/main/java/com/tduck/cloud/common/entity/BaseEntity.java
index a79b12f..7749f6c 100644
--- a/tduck-common/src/main/java/com/tduck/cloud/common/entity/BaseEntity.java
+++ b/tduck-common/src/main/java/com/tduck/cloud/common/entity/BaseEntity.java
@@ -26,9 +26,6 @@ public class BaseEntity extends Model {
@TableField(fill = FieldFill.INSERT)
protected String customerId;
- @TableField(fill = FieldFill.INSERT)
- protected String userId;
-
/**
* 创建时间
**/
diff --git a/tduck-common/src/main/java/com/tduck/cloud/common/util/Pinyin4jUtil.java b/tduck-common/src/main/java/com/tduck/cloud/common/util/Pinyin4jUtil.java
new file mode 100644
index 0000000..b491750
--- /dev/null
+++ b/tduck-common/src/main/java/com/tduck/cloud/common/util/Pinyin4jUtil.java
@@ -0,0 +1,210 @@
+package com.tduck.cloud.common.util;
+
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+
+/**
+ * @author liujianjun
+ */
+public class Pinyin4jUtil {
+ private static Map duoyinMap;
+ static {
+ duoyinMap = new HashMap<>();
+ duoyinMap.put('区',new String[]{"qu"});
+ duoyinMap.put('系',new String[]{"xi"});
+ duoyinMap.put('率',new String[]{"lv"});
+ duoyinMap.put('员',new String[]{"yuan"});
+ duoyinMap.put('提',new String[]{"ti"});
+ duoyinMap.put('被',new String[]{"bei"});
+ duoyinMap.put('期',new String[]{"qi"});
+ duoyinMap.put('参',new String[]{"can"});
+ duoyinMap.put('均',new String[]{"jun"});
+ duoyinMap.put('会', new String[]{"hui"});
+ duoyinMap.put('属', new String[]{"shu"});
+ duoyinMap.put('调', new String[]{"diao"});
+ /**
+ * remark:todo 如果改动得确定库里没有 全量的重新生成的没有问题
+ */
+ }
+
+ /**
+ * getFirstSpellPinYin:(多音字的时候获取第一个).
+ *
+ * @param src 传入的拼音字符串,以逗号隔开
+ * @param isFullSpell 是否全拼,true:全拼,false:第一个汉字全拼(其它汉字取首字母)
+ * @return 第一个拼音
+ */
+ public static String getFirstSpellPinYin(String src, boolean isFullSpell) {
+ String targetStr = Pinyin4jUtil.makeStringByStringSet(Pinyin4jUtil.getPinyin(src, isFullSpell, 1));
+ String[] split = targetStr.split(",");
+ if (split.length > 1) {
+ targetStr = split[0];
+ }
+ return targetStr;
+ }
+
+ /**
+ * getFirstSpellPinYin:(多音字的时候获取第一个).
+ *
+ * @param src 传入的拼音字符串,以逗号隔开
+ * @param isFullSpell 是否全拼,true:全拼,false:第一个汉字全拼(其它汉字取首字母)
+ * @return 第一个拼音
+ */
+ public static String getSpellPinYin(String src, boolean isFullSpell,Integer preFont) {
+ String targetStr = Pinyin4jUtil.makeStringByStringSet(Pinyin4jUtil.getPinyin(src, isFullSpell, preFont));
+ String[] split = targetStr.split(",");
+ if (split.length > 1) {
+ targetStr = split[0];
+ }
+ return targetStr;
+ }
+
+ /**
+ * makeStringByStringSet:(拼音字符串集合转换字符串(逗号分隔)).
+ *
+ * @param stringSet 拼音集合
+ * @return 带逗号字符串
+ */
+ public static String makeStringByStringSet(Set stringSet) {
+ StringBuilder str = new StringBuilder();
+ int i = 0;
+ if (stringSet.size() > 0) {
+ for (String s : stringSet) {
+ if (i == stringSet.size() - 1) {
+ str.append(s);
+ } else {
+ str.append(s + ",");
+ }
+ i++;
+ }
+ }
+ return str.toString().toLowerCase();
+ }
+
+ /**
+ * getPinyin:(获取汉字拼音).
+ *
+ * @param src 汉字
+ * @param isFullSpell 是否全拼,如果为true:全拼,false:首字全拼
+ * @param preFont isFullSpell =true时,前几个字全拼
+ * @return
+ */
+ public static Set getPinyin(String src, boolean isFullSpell, int preFont) {
+ if (src != null && !src.trim().equalsIgnoreCase("")) {
+ char[] srcChar;
+ srcChar = src.toCharArray();
+ // 汉语拼音格式输出类
+ HanyuPinyinOutputFormat hanYuPinOutputFormat = new HanyuPinyinOutputFormat();
+
+ // 输出设置,大小写,音标方式等
+ hanYuPinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+ hanYuPinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+ hanYuPinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
+
+ String[][] temp = new String[src.length()][];
+ for (int i = 0; i < srcChar.length; i++) {
+ char c = srcChar[i];
+ if (String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")) {//中文
+ try {
+ String[] py = duoyinMap.get(c);
+ if (py != null){
+ temp[i] = py;
+ }else{
+ temp[i] = PinyinHelper.toHanyuPinyinStringArray(srcChar[i], hanYuPinOutputFormat);
+ }
+
+ if (!isFullSpell) {
+ if (i < preFont) {
+ temp[i] = temp[i];
+ } else {
+ String[] tTemps = new String[temp[i].length];
+ for (int j = 0; j < temp[i].length; j++) {
+ char t = temp[i][j].charAt(0);
+ tTemps[j] = Character.toString(t);
+ }
+ temp[i] = tTemps;
+ }
+ }
+ } catch (BadHanyuPinyinOutputFormatCombination e) {
+ e.printStackTrace();
+ }
+ } else if (((int) c >= 65 && (int) c <= 90)
+ || ((int) c >= 97 && (int) c <= 122)) {//英文
+ temp[i] = new String[]{String.valueOf(srcChar[i])};
+ } else {//非汉字全盘返回即可
+ temp[i] = new String[]{String.valueOf(srcChar[i])};
+ }
+ }
+ String[] pingyinArray = exchange(temp);
+ Set pinyinSet = new HashSet();
+ for (int i = 0; i < pingyinArray.length; i++) {
+ pinyinSet.add(pingyinArray[i]);
+ }
+ return pinyinSet;
+ }
+ return null;
+ }
+
+ /**
+ * 递归
+ *
+ * @param strJaggedArray
+ * @return
+ */
+ public static String[] exchange(String[][] strJaggedArray) {
+ String[][] temp = doExchange(strJaggedArray);
+ return temp[0];
+ }
+
+ /**
+ * 递归
+ *
+ * @param strJaggedArray
+ * @return
+ */
+ private static String[][] doExchange(String[][] strJaggedArray) {
+ int len = strJaggedArray.length;
+ if (len >= 2) {
+ int len1 = strJaggedArray[0].length;
+ int len2 = strJaggedArray[1].length;
+ int newlen = len1 * len2;
+ String[] temp = new String[newlen];
+ int Index = 0;
+ for (int i = 0; i < len1; i++) {
+ for (int j = 0; j < len2; j++) {
+ temp[Index] = strJaggedArray[0][i] + strJaggedArray[1][j];
+ Index++;
+ }
+ }
+ String[][] newArray = new String[len - 1][];
+ for (int i = 2; i < len; i++) {
+ newArray[i - 1] = strJaggedArray[i];
+ }
+ newArray[0] = temp;
+ return doExchange(newArray);
+ } else {
+ return strJaggedArray;
+ }
+ }
+
+ public static void main(String[] args) {
+ //System.out.println(getSpellPinYin("社区超期项目数",true,0));
+ System.out.println(getFirstSpellPinYin("调料",true));
+ System.out.println(getFirstSpellPinYin("调查",true));
+ System.out.println(getFirstSpellPinYin("测试",true));
+ System.out.println(getFirstSpellPinYin("满意度",true));
+ System.out.println(getFirstSpellPinYin("其他",true));
+ //System.out.println(getSpellPinYin("党员提出话题数",false,4));
+ //System.out.println(getSpellPinYin("社区超期项目数",false,4));
+ }
+}
diff --git a/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java b/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java
index aca2cd5..1698f52 100644
--- a/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java
+++ b/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java
@@ -86,6 +86,7 @@ public class UserProjectSettingServiceImpl extends ServiceImpl wrapper = Wrappers.lambdaQuery()
.eq(UserProjectResultEntity::getProjectKey, projectKey)