소스 검색

用户信息修改接口开发

WangChanghua 1 년 전
부모
커밋
e213b7d985

+ 54 - 0
src/main/java/com/chelvc/cloud/maintain/controller/CustomerController.java

@@ -0,0 +1,54 @@
+package com.chelvc.cloud.maintain.controller;
+
+import com.chelvc.cloud.maintain.copier.UserCopier;
+import com.chelvc.cloud.maintain.vo.UserVO;
+import com.chelvc.cloud.uc.api.dto.UserDTO;
+import com.chelvc.cloud.uc.api.param.UserModifyParam;
+import com.chelvc.cloud.uc.api.service.UserService;
+import com.chelvc.framework.base.annotation.UnifiedResponseBody;
+import com.chelvc.framework.base.util.ErrorUtils;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+
+/**
+ * 会员接口
+ *
+ * @author 七仔
+ * @date 2023/5/22
+ */
+@Validated
+@RestController
+@UnifiedResponseBody
+public class CustomerController {
+    @DubboReference
+    private UserService userService;
+
+    /**
+     * 获取用户信息
+     *
+     * @param id 用户主键
+     * @return 用户信息
+     */
+    @GetMapping("/customer/{id}")
+    public UserVO getCustomer(@PathVariable("id") @Min(value = 1, message = "用户主键不能小于1") Long id) {
+        UserDTO user = this.userService.getUser(id);
+        ErrorUtils.requireResource(user, "用户不存在");
+        return UserCopier.INSTANCE.copying(user);
+    }
+
+    /**
+     * 修改用户信息
+     *
+     * @param id    用户主键
+     * @param param 修改参数
+     */
+    @PutMapping("/customer/{id}")
+    public void updateEmployee(@PathVariable("id") @Min(value = 1, message = "用户主键不能小于1") Long id,
+                               @RequestBody @Valid UserModifyParam param) {
+        this.userService.updateUser(id, param);
+    }
+}

+ 44 - 0
src/main/java/com/chelvc/cloud/maintain/copier/UserCopier.java

@@ -0,0 +1,44 @@
+package com.chelvc.cloud.maintain.copier;
+
+import com.chelvc.cloud.maintain.vo.UserVO;
+import com.chelvc.cloud.uc.api.dto.UserDTO;
+import org.mapstruct.Builder;
+import org.mapstruct.IterableMapping;
+import org.mapstruct.Mapper;
+import org.mapstruct.Named;
+import org.mapstruct.factory.Mappers;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户对象拷贝接口
+ *
+ * @author 七仔
+ * @Date 2023/5/22
+ **/
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface UserCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    UserCopier INSTANCE = Mappers.getMapper(UserCopier.class);
+
+    /**
+     * 用户信息拷贝
+     *
+     * @param user 用户信息
+     * @return 用户信息
+     */
+    @Named("dto2vo")
+    UserVO copying(UserDTO user);
+
+    /**
+     * 用户信息拷贝
+     *
+     * @param users 用户信息集合
+     * @return 用户信息列表
+     */
+    @IterableMapping(qualifiedByName = "dto2vo")
+    List<UserVO> copying(Collection<UserDTO> users);
+}

+ 46 - 0
src/main/java/com/chelvc/cloud/maintain/vo/UserVO.java

@@ -0,0 +1,46 @@
+package com.chelvc.cloud.maintain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 用户信息
+ *
+ * @author 七仔
+ * @date 2023/5/22
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserVO implements Serializable {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 用户昵称
+     */
+    private String nickname;
+
+    /**
+     * 手机号码
+     */
+    private String mobile;
+
+    /**
+     * 用户头像
+     */
+    private String avatar;
+
+    /**
+     * 角色主键列表
+     */
+    private List<Long> roleIds;
+}