李进 2 éve
szülő
commit
8b5ab09a4a

+ 5 - 0
sys-api-service/pom.xml

@@ -28,6 +28,11 @@
             <artifactId>sys-sdk</artifactId>
             <version>1.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.xy</groupId>
+            <artifactId>authorize-api</artifactId>
+            <version>1.0</version>
+        </dependency>
 
         <dependency>
             <groupId>com.xy</groupId>

+ 54 - 0
sys-api-service/src/main/java/com/xy/entity/UserInfo.java

@@ -0,0 +1,54 @@
+package com.xy.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.xy.base.BaseEntity3;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 用户表
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-01-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "UserInfo对象", description = "用户表")
+public class UserInfo extends BaseEntity3<UserInfo> implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId
+    @ApiModelProperty(value = "id")
+    private Long userId;
+
+    @ApiModelProperty(value = "手机号")
+    private String tel;
+
+    @ApiModelProperty(value = "邮件")
+    private String mail;
+
+    @ApiModelProperty(value = "微信开放平台识别码")
+    private String unionid;
+
+    @ApiModelProperty(value = "系统id集合")
+    private String sysIds;
+
+    @ApiModelProperty(value = "权限系统用户id")
+    private Long authorizeUserId;
+
+    @ApiModelProperty(value = "用户类型")
+    private String userType;
+
+    @ApiModelProperty(value = "状态")
+    private Boolean status;
+
+}

+ 16 - 0
sys-api-service/src/main/java/com/xy/mapper/UserInfoMapper.java

@@ -0,0 +1,16 @@
+package com.xy.mapper;
+
+import com.xy.entity.UserInfo;
+import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
+
+/**
+ * <p>
+ * 用户表 Mapper 接口
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-01-12
+ */
+public interface UserInfoMapper extends JoinBaseMapper<UserInfo> {
+
+}

+ 135 - 0
sys-api-service/src/main/java/com/xy/service/UserInfoServiceImpl.java

@@ -0,0 +1,135 @@
+package com.xy.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yitter.idgen.YitIdHelper;
+import com.xy.annotation.Lock;
+import com.xy.dto.SysWorkUser.AddDto;
+import com.xy.dto.SysWorkUser.UpdateDto;
+import com.xy.dto.UserInfoDto;
+import com.xy.entity.UserInfo;
+import com.xy.mapper.UserInfoMapper;
+import com.xy.utils.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+import java.util.StringJoiner;
+
+import static com.xy.utils.Beans.copy;
+import static com.xy.utils.PlusBeans.toIPage;
+import static com.xy.utils.PlusBeans.toPageBean;
+
+
+/**
+ * <p>
+ * 用户表 服务实现类
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-01-12
+ */
+@Service
+@AllArgsConstructor
+@Api(tags = "用户表")
+public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {
+
+    private SysWorkUserService sysWorkUserService;
+
+    @PostMapping("obj")
+    @ApiOperation("对象查询")
+    public R<UserInfoDto.Vo> obj(@RequestBody UserInfoDto.Vo vo) {
+        LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(vo, UserInfo.class)
+                .like(UserInfo::getSysIds, vo.getSysIds())
+                .build();
+        List<UserInfo> list = list(lambdaQueryWrapper);
+        if (Emptys.check(list)) {
+            return R.ok(copy(UserInfoDto.Vo.class, list.get(0)));
+        }
+        return R.ok();
+    }
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    private R<PageBean<UserInfoDto.Vo>> page(@RequestBody UserInfoDto.Page page) {
+        PageBean pageBean = page.getPage();
+        LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, UserInfo.class)
+                .like(UserInfo::getTel, page.getTel())
+                .like(UserInfo::getMail, page.getMail())
+                .like(UserInfo::getUnionid, page.getUnionid())
+                .like(UserInfo::getSysIds, page.getSysIds())
+                .ge(UserInfo::getCreateTime, page.getBeginCreateTime())
+                .le(UserInfo::getCreateTime, page.getEndCreateTime())
+                .build()
+                .orderByDesc(!Emptys.check(pageBean.getOrders()), UserInfo::getCreateTime);
+        IPage<UserInfo> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
+        return R.ok(toPageBean(UserInfoDto.Vo.class, iPage));
+    }
+
+    @PostMapping("save")
+    @ApiOperation("添加")
+    @Lock(value = "save.tel", prefix = "user_save_")
+    public R save(@RequestBody @Validated UserInfoDto.Save save) {
+        //校验
+        UserInfo userInfo = getOne(new LambdaQueryWrapper<UserInfo>()
+                .eq(UserInfo::getTel, save.getTel())
+                .or()
+                .eq(UserInfo::getMail, save.getMail())
+                .or()
+                .eq(UserInfo::getUnionid, save.getUnionid())
+                .or()
+                .eq(UserInfo::getAuthorizeUserId, save.getAuthorizeUserId())
+        );
+        if (userInfo != null) {
+            return R.fail("用户已存在", userInfo);
+        }
+        //添加权限用户
+        AddDto addDto = copy(AddDto.class, save)
+                .setEmail(save.getMail())
+                .setPhone(save.getTel())
+                .setAccount(save.getTel());
+        Long authorizeUserId = sysWorkUserService.register(addDto).getData();
+        if (!Emptys.check(authorizeUserId)) {
+            return R.fail();
+        }
+        //添加用户
+        UserInfo saveInfo = copy(UserInfo.class, save).createUserTime(AuthorizeUtils.getLoginId(Long.class))
+                .setUserId(YitIdHelper.nextId())
+                .setAuthorizeUserId(authorizeUserId)
+                .createUserTime(AuthorizeUtils.getLoginId(Long.class));
+        save(saveInfo);
+        return R.ok();
+    }
+
+    @PostMapping("update")
+    @ApiOperation("修改")
+    @Lock(value = "update.userId", prefix = "user_update_")
+    public R update(@RequestBody @Validated UserInfoDto.Update update) {
+        UserInfo byId = getById(update.getUserId());
+        //系统累加
+        if (Emptys.check(update.getSysIds())) {
+            update.setSysIds(byId.getSysIds().indexOf(update.getSysIds()) == -1 ? new StringJoiner(",").add(byId.getSysIds()).add(update.getSysIds()).toString() : null);
+        }
+        UserInfo updateInfo = copy(UserInfo.class, update).updateUserTime(AuthorizeUtils.getLoginId(Long.class));
+        //修改权限用户
+        if (Emptys.check(update.getTel()) || Emptys.check(update.getMail()) || Emptys.check(update.getStatus()) || Emptys.check(update.getPassword())) {
+            UpdateDto updateDto = new UpdateDto()
+                    .setId(byId.getAuthorizeUserId())
+                    .setPhone(update.getTel())
+                    .setEmail(update.getMail())
+                    .setAccount(update.getTel())
+                    .setPassword(update.getPassword())
+                    .setStatus(update.getStatus());
+            sysWorkUserService.update(updateDto);
+        }
+        //修改用户
+        updateById(updateInfo);
+        return R.ok();
+    }
+}

+ 13 - 0
sys-api-service/src/main/java/com/xy/ztest/Test.java

@@ -0,0 +1,13 @@
+package com.xy.ztest;
+
+import com.xy.utils.MybatisGenerator;
+
+public class Test {
+
+    public static void main(String[] args) {
+        MybatisGenerator.Generator.builder()
+                .author("lijin")
+                .build().create();
+    }
+
+}

+ 146 - 0
sys-api/src/main/java/com/xy/dto/UserInfoDto.java

@@ -0,0 +1,146 @@
+package com.xy.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xy.utils.PageBean;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 用户表
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-01-12
+ */
+public class UserInfoDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class Page extends Vo {
+
+        @ApiModelProperty(value = "分页对象", required = true)
+        private PageBean page;
+
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @ApiModelProperty(value = "创建时间-起")
+        private LocalDate beginCreateTime;
+
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @ApiModelProperty(value = "创建时间-始")
+        private LocalDate endCreateTime;
+
+        public LocalDateTime getBeginCreateTime() {
+            return beginCreateTime == null ? null : beginCreateTime.atTime(0, 0, 0);
+        }
+
+        public LocalDateTime getEndCreateTime() {
+            return endCreateTime == null ? null : endCreateTime.atTime(23, 59, 59);
+        }
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Save extends Vo {
+
+        @NotNull(message = "sysIds不能为空")
+        @ApiModelProperty("系统id集合")
+        private String sysIds;
+
+        @NotBlank(message = "phone不能为空")
+        @ApiModelProperty(value = "手机", required = true)
+        @Pattern(regexp = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,2-9]))\\d{8}$", message = "phone格式错误")
+        private String tel;
+
+        @ApiModelProperty(value = "邮件")
+        @Pattern(regexp = "^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$", message = "email格式错误")
+        private String mail;
+
+        @ApiModelProperty(value = "密码", required = true)
+        @NotBlank(message = "密码不可为空")
+        @Pattern(regexp = "^[a-zA-z0-9]{6,11}$", message = "password必须为数字或字母,长度6-11位之间")
+        private String password;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Update {
+
+        @NotNull(message = "userId不能为空")
+        @ApiModelProperty(value = "id")
+        private Long userId;
+
+        @ApiModelProperty(value = "手机", required = true)
+        @Pattern(regexp = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,2-9]))\\d{8}$", message = "phone格式错误")
+        private String tel;
+
+        @ApiModelProperty(value = "邮件")
+        @Pattern(regexp = "^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$", message = "email格式错误")
+        private String mail;
+
+        @ApiModelProperty(value = "密码", required = true)
+        @Pattern(regexp = "^[a-zA-z0-9]{6,11}$", message = "password必须为数字或字母,长度6-11位之间")
+        private String password;
+
+        @ApiModelProperty(value = "用户类型")
+        private String userType;
+
+        @ApiModelProperty(value = "状态")
+        private Boolean status;
+
+        @ApiModelProperty(value = "系统id集合")
+        private String sysIds;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
+
+        @ApiModelProperty(value = "id")
+        private Long userId;
+
+        @ApiModelProperty(value = "手机号")
+        private String tel;
+
+        @ApiModelProperty(value = "邮件")
+        private String mail;
+
+        @ApiModelProperty(value = "微信开放平台识别码")
+        private String unionid;
+
+        @ApiModelProperty(value = "系统id集合")
+        private String sysIds;
+
+        @ApiModelProperty(value = "权限系统用户id")
+        private Long authorizeUserId;
+
+        @ApiModelProperty(value = "用户类型")
+        private String userType;
+
+        @ApiModelProperty(value = "状态")
+        private Boolean status;
+
+        @ApiModelProperty(value = "创建人")
+        private Long createUser;
+
+        @ApiModelProperty(value = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+        @ApiModelProperty(value = "更新人")
+        private Long updateUser;
+
+        @ApiModelProperty(value = "更新时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime updateTime;
+
+    }
+
+}

+ 16 - 0
sys-api/src/main/java/com/xy/service/UserInfoService.java

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 用户表 服务类
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-01-12
+ */
+@RestMappingController("/user-info")
+public interface UserInfoService {
+
+}

+ 16 - 0
sys-api/src/main/java/com/xy/service/UserSystemRelService.java

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 用户系统关系表 服务类
+ * </p>
+ *
+ * @author lijin
+ * @since 2023-01-12
+ */
+@RestMappingController("/user-system-rel")
+public interface UserSystemRelService {
+
+}

+ 6 - 0
sys-start/pom.xml

@@ -23,6 +23,12 @@
             <artifactId>sys-api-service</artifactId>
             <version>1.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.xy</groupId>
+            <artifactId>authorize-api-cloud</artifactId>
+            <version>1.0</version>
+        </dependency>
+
         <dependency>
             <groupId>com.xy</groupId>
             <artifactId>xy-logback</artifactId>

+ 4 - 0
sys-start/src/main/resources/bootstrap.yml

@@ -17,3 +17,7 @@ cloud:
       name: sys
   service:
     name: dev-sys
+  feign:
+    head:
+      carr-heads:
+        - satoken