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)