From 073de9be882b532b299f96806bb327f0aac7706b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Thu, 29 May 2025 18:32:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=E8=8E=B7=E5=8F=96=E6=A0=87=E5=93=81to?= =?UTF-8?q?ken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/enums/ErrorCodeEnum.java | 4 + .../cool/store/entity/EnterpriseUserDO.java | 15 ++ .../cool/store/userholder/CurrentUser.java | 157 ++++++++++++++++++ .../cool/store/service/EnterpriseService.java | 19 +++ .../service/impl/EnterpriseServiceImpl.java | 113 +++++++++++++ .../webc/MiniShopAccountController.java | 15 +- 6 files changed, 319 insertions(+), 4 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/userholder/CurrentUser.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseServiceImpl.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 7ac5e4a2b..95d0ef792 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -259,6 +259,10 @@ public enum ErrorCodeEnum { EXPORT_LIMIT_5000(151008,"导出数据不能超过5000条,请增加筛选条件,减少导出数量",null), REGION_INTERSECTION_IS_NULL(151011,"所选所属大区/分公司,不在所选集团下",null), CHECK_PAYER_ERROR(151012,"缴费人必须是签约人,请重新填写!",null), + STORE_INFO_INSUFFICIENT(151013,"门店信息不全,无法前往猎聘注册门店!",null), + USER_ACCOUNT_WAIT_AUDIT(151015, "账号信息等待审核",null), + SHOP_HAVE_NOT_OVER_ACCORDING(1511014,"该加盟商下有未结束跟进的门店,请先结束门店",null), + MOBILE_NOT_EXIST(151016,"手机号不存在,请先维护手机号!",null), ; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserDO.java index 2513a7a13..29efb81fa 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/EnterpriseUserDO.java @@ -72,4 +72,19 @@ public class EnterpriseUserDO implements Serializable { * 第三方OA系统唯一标识 */ private String thirdOaUniqueFlag; + + /** + * 部门全路径 + */ + private String departments; + + private String roles; + + private String language; + + private Boolean active; + + private String position; + + private Integer userType; } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/userholder/CurrentUser.java b/coolstore-partner-model/src/main/java/com/cool/store/userholder/CurrentUser.java new file mode 100644 index 000000000..f3abc1e5b --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/userholder/CurrentUser.java @@ -0,0 +1,157 @@ +package com.cool.store.userholder; + +import com.cool.store.entity.SysRoleDO; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/5/29 16:34 + * @Version 1.0 + */ +@Data +public class CurrentUser { + + /** + * 主键 + */ + private String id; + + private String userId; + + /** + * 头像 + */ + private String avatar; + + /** + * 电话号码 + */ + private String mobile; + + /** + * 账号 + * 当type为以下值的时候 + * 0.account + * 1.account + * 2.userId + * 3.userId + * 4.account + */ + private String account; + + /** + * 用户名 + */ + private String name; + + /** + * 电子邮箱 + */ + private String email; + + private String typeStr; + + /** + * 培训机构id + */ + private Long supplierId; + + private String enterpriseId; + + private String enterpriseName; + + private String logoName; + + private String enterpriseLogo; + + private String dingCorpId; + /** + * 企业类型(1:普通用户 2:付费用户 3:试用用户 4:共创用户) + */ + private Integer isVip; + + /** + * 开通时间 + */ + private Date openTime; + + /** + * app类型('micro_app','e_app') + */ + private String appType; + + /** + * 需要配置的类型 + */ + private List configTypes; + + private String accessToken; + + /** + * 职位信息 + */ + private String position; + + /** + * 成员所属部门id列表 + */ + private String departmentIds; + + /** + * 是否持久化 + */ + private Boolean persistent = false; + + /** + * 员工工号 + */ + private String jobnumber; + + private Boolean active; + /** + * 员工角色 + */ + private String roles; + + private String unionid; + + /** + * 用户语言环境 + * 用户语言环境:en_us/英语_美国,zh_cn/中文_简体,zh_hk/中文_繁体_HK + */ + private String language; + + private String dbName; + + /** + * 钉钉管理员和数智门店无关 + */ + private Boolean isAdmin; + + private String agentId; + + private String groupCorpId; + + /** + * 角色权限 + */ + private String roleAuth; + + private String mainCorpId; + + /** + * 用户最高优先级角色 + */ + private SysRoleDO sysRoleDO; + + /** + * 授权类型 + */ + private Integer licenseType; + + private Integer userType; + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseService.java new file mode 100644 index 000000000..f00f75d0b --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseService.java @@ -0,0 +1,19 @@ +package com.cool.store.service; + +/** + * @Author suzhuhong + * @Date 2025/5/29 16:34 + * @Version 1.0 + */ +public interface EnterpriseService { + + + /** + * 通过手机号获取登录token + * @param mobile + * @return + */ + String getAccessToken(String mobile); + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseServiceImpl.java new file mode 100644 index 000000000..6786190c9 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseServiceImpl.java @@ -0,0 +1,113 @@ +package com.cool.store.service.impl; + +import com.alibaba.fastjson.JSON; +import com.cool.store.constants.RedisConstant; +import com.cool.store.dao.EnterpriseUserDAO; +import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.entity.SysRoleDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.Role; +import com.cool.store.enums.UserStatusEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.SysRoleMapper; +import com.cool.store.service.EnterpriseService; +import com.cool.store.userholder.CurrentUser; +import com.cool.store.utils.RedisUtilPool; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.crypto.RandomNumberGenerator; +import org.apache.shiro.crypto.SecureRandomNumberGenerator; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.Objects; + +/** + * @Author suzhuhong + * @Date 2025/5/29 16:34 + * @Version 1.0 + */ +@Service +@Slf4j +public class EnterpriseServiceImpl implements EnterpriseService { + + @Resource + EnterpriseUserDAO enterpriseUserDAO; + + @Resource + SysRoleMapper sysRoleMapper; + + @Resource + RedisUtilPool redisUtilPool; + + @Value("${mybatis.configuration.variables.enterpriseId}") + private String eid; + + @Override + public String getAccessToken(String mobile) { + CurrentUser currentUser = new CurrentUser(); + EnterpriseUserDO enterpriseUser = enterpriseUserDAO.selectByMobile(mobile); + if (Objects.isNull(enterpriseUser)){ + throw new ServiceException(ErrorCodeEnum.MOBILE_NOT_EXIST); + } + if(UserStatusEnum.WAIT_AUDIT.getCode().equals(enterpriseUser.getUserStatus())){ + throw new ServiceException(ErrorCodeEnum.USER_ACCOUNT_WAIT_AUDIT); + } + //账号冻结 + if(UserStatusEnum.FREEZE.getCode().equals(enterpriseUser.getUserStatus())){ + throw new ServiceException(ErrorCodeEnum.USER_FREEZE); + } + SysRoleDO sysRoleDoByUserId = sysRoleMapper.getHighestPrioritySysRoleDoByUserId(enterpriseUser.getUserId()); + if(sysRoleDoByUserId==null){ + // 如果没有最高优先级的,给未分配的角色 + sysRoleDoByUserId = sysRoleMapper.getRoleByRoleEnum(Role.EMPLOYEE.getRoleEnum()); + } + currentUser.setId(enterpriseUser.getId()); + currentUser.setUserId(enterpriseUser.getUserId()); + currentUser.setAccount(enterpriseUser.getUserId()); + currentUser.setDbName("coolcollege_intelligent_10027"); + currentUser.setDepartmentIds(enterpriseUser.getDepartments()); + currentUser.setRoles(enterpriseUser.getRoles()); + currentUser.setLanguage(enterpriseUser.getLanguage()); + currentUser.setIsAdmin(enterpriseUser.getIsAdmin()); + + //设置当前登录人使用的企业相关信息 + currentUser.setRoleAuth(sysRoleDoByUserId.getRoleAuth()); + currentUser.setSysRoleDO(sysRoleDoByUserId); + currentUser.setEnterpriseId(eid); + currentUser.setEnterpriseName("正新集团"); + currentUser.setEnterpriseLogo("https://oss-store.coolcollege.cn/eid/214ac5a3a517472a87268e02a2e6410a/2405/79049713395952825.jpg"); + currentUser.setActive(enterpriseUser.getActive()); + // 企业开通时间 + currentUser.setOpenTime(new Date("2024-05-09 18:54:28")); + + currentUser.setAvatar(enterpriseUser.getAvatar()); + currentUser.setEmail(enterpriseUser.getEmail()); + // 水印增加员工工号 + if (StringUtils.isNotEmpty(enterpriseUser.getJobnumber())) { + currentUser.setJobnumber(enterpriseUser.getJobnumber()); + } + // 水印增加员工职位 + if (StringUtils.isNotEmpty(enterpriseUser.getPosition())) { + currentUser.setPosition(enterpriseUser.getPosition()); + } + currentUser.setMobile(enterpriseUser.getMobile()); + currentUser.setName(enterpriseUser.getName()); + + currentUser.setDingCorpId("wpayJeDAAAklx_q1jGhyGUd4yEh8vV_g"); + + currentUser.setAccessToken(getToken()); + currentUser.setAppType("qw_self_dkf"); + currentUser.setUnionid(enterpriseUser.getUnionid()); + currentUser.setUserType(enterpriseUser.getUserType()); + redisUtilPool.setString(RedisConstant.ACCESS_TOKEN_PREFIX + currentUser.getAccessToken(), JSON.toJSONString(currentUser), 24 * 60 * 60); + return currentUser.getAccessToken(); + } + + public String getToken() { + RandomNumberGenerator randomNumberGenerator = new SecureRandomNumberGenerator(); + return randomNumberGenerator.nextBytes().toHex(); + } +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopAccountController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopAccountController.java index c2a3def10..0a8f5341a 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopAccountController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopAccountController.java @@ -1,15 +1,14 @@ package com.cool.store.controller.webc; +import com.cool.store.context.PartnerUserHolder; import com.cool.store.dto.FoodTokenDTO; import com.cool.store.dto.GetAccessTokenDTO; import com.cool.store.dto.ModifyPasswordDTO; import com.cool.store.dto.ShopAccount.ShopAccountDTO; import com.cool.store.request.GetPasswordDTO; import com.cool.store.response.ResponseResult; -import com.cool.store.service.PushService; -import com.cool.store.service.ShopAccountService; -import com.cool.store.service.ThirdFoodService; -import com.cool.store.service.ThirdXinGuanJiaService; +import com.cool.store.service.*; +import com.cool.store.vo.PartnerUserInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; @@ -40,6 +39,8 @@ public class MiniShopAccountController { @Resource ThirdFoodService thirdFoodService; + @Resource + EnterpriseService enterpriseService; @ApiOperation("根据门店shopId查询平台账号") @@ -91,4 +92,10 @@ public class MiniShopAccountController { return ResponseResult.success(accountService.shopIdToYlsCode(shopId)); } + @ApiOperation("获取标品登录token") + @GetMapping("/getAccessToken") + public ResponseResult getAccessToken() { + return ResponseResult.success(enterpriseService.getAccessToken(PartnerUserHolder.getUser().getMobile())); + } + } From 057f7c68e476b59b5263d573cf339c65f94715ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Thu, 29 May 2025 18:45:56 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=E8=8E=B7=E5=8F=96=E6=A0=87=E5=93=81to?= =?UTF-8?q?ken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/EnterpriseServiceImpl.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseServiceImpl.java index 6786190c9..7f5c7ac66 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseServiceImpl.java @@ -13,6 +13,7 @@ import com.cool.store.mapper.SysRoleMapper; import com.cool.store.service.EnterpriseService; import com.cool.store.userholder.CurrentUser; import com.cool.store.utils.RedisUtilPool; +import com.cool.store.utils.poi.DateUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.crypto.RandomNumberGenerator; @@ -21,6 +22,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.text.ParseException; import java.util.Date; import java.util.Objects; @@ -81,8 +83,11 @@ public class EnterpriseServiceImpl implements EnterpriseService { currentUser.setEnterpriseLogo("https://oss-store.coolcollege.cn/eid/214ac5a3a517472a87268e02a2e6410a/2405/79049713395952825.jpg"); currentUser.setActive(enterpriseUser.getActive()); // 企业开通时间 - currentUser.setOpenTime(new Date("2024-05-09 18:54:28")); - + try { + currentUser.setOpenTime(DateUtils.parseDate("2024-05-09 18:54:28",DateUtils.YYYY_MM_DD_HH_MM_SS)); + } catch (ParseException e) { + log.error("时间转换异常"); + } currentUser.setAvatar(enterpriseUser.getAvatar()); currentUser.setEmail(enterpriseUser.getEmail()); // 水印增加员工工号 @@ -106,6 +111,14 @@ public class EnterpriseServiceImpl implements EnterpriseService { return currentUser.getAccessToken(); } + public static void main(String[] args) { + try { + System.out.println(DateUtils.parseDate("2024-05-09 18:54:28",DateUtils.YYYY_MM_DD_HH_MM_SS)); + } catch (ParseException e) { + e.printStackTrace(); + } + } + public String getToken() { RandomNumberGenerator randomNumberGenerator = new SecureRandomNumberGenerator(); return randomNumberGenerator.nextBytes().toHex(); From 6dfce8b0e2c9c0cd4c44664dd448c64898b260c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Fri, 30 May 2025 13:39:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/EnterpriseUserMapper.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml index 648e8139a..27d7afd1a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml @@ -19,6 +19,12 @@ + + + + + + @@ -134,7 +140,7 @@