Eric 1 年之前
父节点
当前提交
41b85a5344

+ 7 - 0
cooleshow-api/pom.xml

@@ -26,5 +26,12 @@
             <groupId>com.yonge.cooleshow</groupId>
             <artifactId>cooleshow-common</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.5.20</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 </project>

+ 17 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.api.feign.dto.EmployeeApi;
 import com.yonge.cooleshow.api.feign.dto.StudentApi;
 import com.yonge.cooleshow.api.feign.dto.StudentWrapper;
 import com.yonge.cooleshow.api.feign.dto.TeacherApi;
+import com.yonge.cooleshow.api.feign.dto.TenantWrapper;
 import com.yonge.cooleshow.api.feign.dto.UserFriendInfoVO;
 import com.yonge.cooleshow.api.feign.fallback.AdminFeignServiceFallback;
 import com.yonge.cooleshow.common.constant.AppConstant;
@@ -118,6 +119,22 @@ public interface AdminFeignService {
     @GetMapping(value = "/open/adminClient/getEmployee")
     HttpResponseResult<EmployeeApi> getEmployee(@RequestParam("userId") Long userId);
 
+    /**
+     * 机构信息
+     * @param tenantId 机构ID
+     * @return TenantWrapper.Tenant
+     */
+    @GetMapping(value = "/open/adminClient/getTenant")
+    HttpResponseResult<TenantWrapper.Tenant> getTenantInfo(@RequestParam("tenantId") Long tenantId);
+
+    /**
+     * 机构员工信息
+     * @param userId 用户ID
+     * @return TenantWrapper.Staff
+     */
+    @GetMapping(value = "/open/adminClient/getTenantStaff")
+    HttpResponseResult<TenantWrapper.Staff> getTenantStaff(@RequestParam("userId") Long userId);
+
 
     @PostMapping(value = "/open/adminClient/orderUpdate", consumes="application/json", produces="application/json")
     HttpResponseResult<Boolean> updateCouponOrderInfo(@RequestParam("couponIssueId") String couponIssueId,

+ 115 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/dto/TenantWrapper.java

@@ -0,0 +1,115 @@
+package com.yonge.cooleshow.api.feign.dto;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * 机构员工表
+ * 2023-07-21 17:32:49
+ */
+public class TenantWrapper implements Serializable {
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel("tenant - 机构表")
+    public static class Tenant implements Serializable {
+
+        @ApiModelProperty("主键ID")
+        private Long id;
+
+        @ApiModelProperty("名称")
+        private String name;
+
+        @ApiModelProperty("logo")
+        private String logo;
+
+        @ApiModelProperty("省份编码")
+        private Integer provinceCode;
+
+        @ApiModelProperty("城市编码")
+        private Integer cityCode;
+
+        @ApiModelProperty("地区/街道")
+        private Integer regionCode;
+
+        @ApiModelProperty("联系人")
+        private String username;
+
+        @ApiModelProperty("管理员ID,用户ID")
+        private Long userId;
+
+        @ApiModelProperty("手机号")
+        private String phone;
+
+        @ApiModelProperty("启用/冻结")
+        private Boolean enableFlag;
+
+        @ApiModelProperty("简介")
+        @TableField(value = "brief_introduction_")
+        private String briefIntroduction;
+
+        public static Tenant from(String json) {
+            return JSON.parseObject(json, Tenant.class);
+        }
+    }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" TenantStaff-机构员工表")
+    public static class Staff implements Serializable {
+
+        @ApiModelProperty("主键ID")
+        private Long id;
+
+        @ApiModelProperty("机构ID")
+        private Long tenantId;
+
+        @ApiModelProperty("用户ID")
+        private Long userId;
+
+        @ApiModelProperty("头像")
+        private String avatar;
+
+        @ApiModelProperty("昵称")
+        private String nickname;
+
+        @ApiModelProperty("IM授权签名")
+        private String imToken;
+
+        @ApiModelProperty("微信ID")
+        private String wechatId;
+
+        @ApiModelProperty("微信OpenID")
+        private String wxOpenid;
+
+        @ApiModelProperty("公众号关注标识")
+        private Boolean subscribeFlag;
+
+        @ApiModelProperty("管理员标识")
+        private Boolean manageAdmin;
+
+        @ApiModelProperty("介绍")
+        private String introduction;
+
+        @ApiModelProperty("帐号状态(注销,冻结,激活)")
+        private String status;
+
+        public static Staff from(String json) {
+            return JSON.parseObject(json, Staff.class);
+        }
+    }
+
+}

+ 16 - 13
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/service/DefaultUserDetailsService.java

@@ -1,14 +1,17 @@
 package com.yonge.cooleshow.auth.core.provider.service;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import com.yonge.cooleshow.api.feign.AdminFeignService;
 import com.yonge.cooleshow.api.feign.dto.EmployeeApi;
 import com.yonge.cooleshow.api.feign.dto.StudentApi;
 import com.yonge.cooleshow.api.feign.dto.TeacherApi;
+import com.yonge.cooleshow.api.feign.dto.TenantWrapper;
+import com.yonge.cooleshow.auth.api.dto.SysUserInfo;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.auth.service.SysUserService;
 import com.yonge.cooleshow.common.enums.SysUserType;
 import com.yonge.cooleshow.common.enums.UserLockFlag;
+import com.yonge.cooleshow.common.security.AuthUser;
+import com.yonge.cooleshow.common.security.SecurityConstants;
 import com.yonge.cooleshow.common.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,24 +22,16 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
 
-import com.yonge.cooleshow.auth.api.dto.SysUserInfo;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.service.SysUserService;
-import com.yonge.cooleshow.common.security.AuthUser;
-import com.yonge.cooleshow.common.security.SecurityConstants;
-
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
 
 @Service
 public class DefaultUserDetailsService implements UserDetailsService {
 
     @Autowired
-    private PasswordEncoder passwordEncoder;
-
-    @Autowired
     private SysUserService sysUserService;
 
     @Resource
@@ -93,6 +88,14 @@ public class DefaultUserDetailsService implements UserDetailsService {
             if (UserLockFlag.LOCKED.equals(data.getLockFlag())) {
                 throw new LockedException("账户被锁定");
             }
+        } else if (SysUserType.ORGANIZATION.getCode().equals(clientId)) {
+            TenantWrapper.Staff tenantStaff = adminFeignService.getTenantStaff(sysUser.getId()).getData();
+            if (tenantStaff == null) {
+                throw new UsernameNotFoundException("账户不存在");
+            }
+            if (UserLockFlag.LOCKED.name().equals(tenantStaff.getStatus())) {
+                throw new LockedException("账户被锁定");
+            }
         }
 
         List<GrantedAuthority> authorities = null;

+ 51 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/AdminClient.java

@@ -1,14 +1,18 @@
 package com.yonge.cooleshow.admin.controller.open;
 
+import com.alibaba.fastjson.JSON;
 import com.microsvc.toolkit.config.jwt.utils.RsaKeyHelper;
 import com.yonge.cooleshow.admin.io.request.coupon.CouponOrderVO;
 import com.yonge.cooleshow.api.feign.dto.CouponInfoApi;
 import com.yonge.cooleshow.api.feign.dto.EmployeeApi;
 import com.yonge.cooleshow.api.feign.dto.StudentApi;
 import com.yonge.cooleshow.api.feign.dto.TeacherApi;
+import com.yonge.cooleshow.api.feign.dto.TenantWrapper;
 import com.yonge.cooleshow.biz.dal.entity.Employee;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
+import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponCategoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
@@ -17,6 +21,8 @@ import com.yonge.cooleshow.biz.dal.service.CouponInfoService;
 import com.yonge.cooleshow.biz.dal.service.EmployeeService;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
+import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
+import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
 import com.yonge.cooleshow.biz.dal.service.UserFirstTimeService;
 import com.yonge.cooleshow.biz.dal.wrapper.StudentWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.coupon.CouponOrderWrapper;
@@ -24,12 +30,13 @@ import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
 import com.yonge.toolset.base.exception.BizException;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.jwt.Jwt;
@@ -46,12 +53,13 @@ import java.math.BigDecimal;
 import java.security.interfaces.RSAPublicKey;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
+@Slf4j
 @RestController
 @RequestMapping("/open/adminClient")
 public class AdminClient extends BaseController {
-    private final static Logger log = LoggerFactory.getLogger(UserOrderClient.class);
 
     @Autowired
     private UserFirstTimeService userFirstTimeService;
@@ -68,6 +76,12 @@ public class AdminClient extends BaseController {
     @Autowired
     private CouponInfoService couponInfoService;
 
+    @Autowired
+    private TenantStaffService tenantStaffService;
+
+    @Autowired
+    private TenantInfoService tenantInfoService;
+
     @GetMapping("/recordTime")
     public HttpResponseResult<Boolean> recordTime(
             @RequestParam("userId") Long userId,
@@ -132,6 +146,40 @@ public class AdminClient extends BaseController {
         return succeed(employeeApi);
     }
 
+    @ApiOperation(value = "机构信息查询", notes = "tenantId -> 机构ID")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "tenantId", value = "机构ID", required = true, dataType = "Long", paramType = "query")
+    })
+    @GetMapping("/getTenant")
+    public HttpResponseResult<TenantWrapper.Tenant> getTenant(@RequestParam("tenantId") Long tenantId) {
+
+        TenantWrapper.Tenant build = TenantWrapper.Tenant.builder().build();
+
+        TenantInfo tenantInfo = tenantInfoService.getById(tenantId);
+        if (Objects.nonNull(tenantInfo)) {
+            build = TenantWrapper.Tenant.from(JSON.toJSONString(tenantInfo));
+        }
+
+        return succeed(build);
+    }
+
+    @ApiOperation(value = "机构员工信息查询", notes = "userId -> 机构用户ID")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", value = "机构用户ID", required = true, dataType = "Long", paramType = "query")
+    })
+    @GetMapping("/getTenantStaff")
+    public HttpResponseResult<TenantWrapper.Staff> getTenantStaff(@RequestParam("userId") Long userId) {
+
+        // 默认返回值
+        TenantWrapper.Staff ret = TenantWrapper.Staff.builder().build();
+
+        TenantStaff staff = tenantStaffService.getByUserId(userId);
+        if (Objects.nonNull(staff)) {
+            ret = TenantWrapper.Staff.from(JSON.toJSONString(staff));
+        }
+        return succeed(ret);
+    }
+
     /**
      * 订单优惠券信息
      * @return HttpResponseResult<CouponOrderVO.CouponPageInfo>

+ 8 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantStaffService.java

@@ -2,8 +2,8 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.biz.dal.wrapper.TenantStaffWrapper;
 import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantStaffWrapper;
 
 /**
  * 机构员工表
@@ -41,4 +41,11 @@ public interface TenantStaffService extends IService<TenantStaff>  {
      Boolean update(TenantStaffWrapper.TenantStaff tenantStaff);
 
     TenantStaff getByPhone(String phone);
+
+    /**
+     * 根据用户ID获取员工信息
+     * @param userId 用户Id
+     * @return TenantStaff
+     */
+    TenantStaff getByUserId(Long userId);
 }

+ 15 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantStaffServiceImpl.java

@@ -3,13 +3,12 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import org.springframework.beans.BeanUtils;
-import lombok.extern.slf4j.Slf4j;
 import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
-import com.yonge.cooleshow.biz.dal.wrapper.TenantStaffWrapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantStaffMapper;
 import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantStaffWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
 
 /**
  * 机构员工表
@@ -69,4 +68,16 @@ public class TenantStaffServiceImpl extends ServiceImpl<TenantStaffMapper, Tenan
         return baseMapper.getByPhone(phone);
 
     }
+
+    /**
+     * 根据用户ID获取员工信息
+     *
+     * @param userId 用户Id
+     * @return TenantStaff
+     */
+    @Override
+    public TenantStaff getByUserId(Long userId) {
+
+        return lambdaQuery().eq(TenantStaff::getUserId, userId).last("LIMIT 1").one();
+    }
 }

+ 2 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantStaffMapper.xml

@@ -29,7 +29,8 @@
 	</select>
 
     <select id="getByPhone" resultType="com.yonge.cooleshow.biz.dal.entity.TenantStaff">
-        select *
+        select
+            <include refid="baseColumns" />
         from tenant_staff t
         left join sys_user t1 on t1.id_ = t.user_id_
         where t1.phone_ = #{phone}