diff --git a/src/main/java/com/example/admin_server/controller/client/CustomerController.java b/src/main/java/com/example/admin_server/controller/client/CustomerController.java new file mode 100644 index 0000000..7856132 --- /dev/null +++ b/src/main/java/com/example/admin_server/controller/client/CustomerController.java @@ -0,0 +1,19 @@ +package com.example.admin_server.controller.client; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *
+ * 前端控制器 + *
+ * + * @author FallingCliff + * @since 2025-05-24 + */ +@RestController +@RequestMapping("/api/client/customer") +public class CustomerController { + +} diff --git a/src/main/java/com/example/admin_server/controller/client/WxLoginController.java b/src/main/java/com/example/admin_server/controller/client/WxLoginController.java index ee2add5..93471c1 100644 --- a/src/main/java/com/example/admin_server/controller/client/WxLoginController.java +++ b/src/main/java/com/example/admin_server/controller/client/WxLoginController.java @@ -1,9 +1,13 @@ package com.example.admin_server.controller.client; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.admin_server.common.Result; import com.example.admin_server.config.WxConfig; import com.example.admin_server.model.dto.WxLoginDTO; +import com.example.admin_server.model.entity.Customer; +import com.example.admin_server.service.ICustomerService; +import com.example.admin_server.utils.JwtUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -13,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; +import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; @@ -23,6 +28,8 @@ import java.util.Map; public class WxLoginController { private final WxConfig wxConfig; + private final ICustomerService iCustomerService; + private final JwtUtil jwtUtil; @PostMapping("/login") @ApiOperation(value = "微信登录") @@ -32,32 +39,58 @@ public class WxLoginController { return Result.fail("code 参数不能为空"); } - // 构造请求微信的 URL + // 请求微信接口 String url = wxConfig.getJscode2sessionUrl() + "?appid=" + wxConfig.getAppid() + "&secret=" + wxConfig.getSecret() + "&js_code=" + code + "&grant_type=authorization_code"; - // 请求微信服务器 RestTemplate restTemplate = new RestTemplate(); String response = restTemplate.getForObject(url, String.class); - - // 解析微信响应 JSONObject jsonObject = JSONObject.parseObject(response); + System.out.println(jsonObject); String openid = jsonObject.getString("openid"); String sessionKey = jsonObject.getString("session_key"); + String unionid = jsonObject.getString("unionid"); if (openid == null) { - String errMsg = jsonObject.getString("errmsg"); - return Result.fail("微信登录失败: " + errMsg); + return Result.fail("微信登录失败: " + jsonObject.getString("errmsg")); } - // TODO: 你可以在这里用 openid 查数据库,创建或更新用户,生成 JWT 等 + // 查找用户是否已存在 + Customer customer = iCustomerService.getOne(new QueryWrapper+ * Mapper 接口 + *
+ * + * @author FallingCliff + * @since 2025-05-24 + */ +public interface CustomerMapper extends BaseMapper+ * + *
+ * + * @author FallingCliff + * @since 2025-05-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("customer") +@ApiModel(value="Customer对象", description="客户表") +public class Customer implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "微信openid") + @TableField("openid") + private String openid; + + @ApiModelProperty(value = "微信会话密钥(可选存储)") + @TableField("session_key") + private String sessionKey; + + @ApiModelProperty(value = "微信unionid(如果获取到)") + @TableField("unionid") + private String unionid; + + @ApiModelProperty(value = "用户名") + @TableField("username") + private String username; + + @ApiModelProperty(value = "密码") + @TableField("password") + private String password; + + @ApiModelProperty(value = "用户昵称") + @TableField("nickname") + private String nickname; + + @ApiModelProperty(value = "头像URL") + @TableField("avatar_url") + private String avatarUrl; + + @ApiModelProperty(value = "邮箱") + @TableField("email") + private String email; + + @ApiModelProperty(value = "手机号(后续绑定时)") + @TableField("phone") + private String phone; + + @ApiModelProperty(value = "创建时间") + @TableField("create_time") + private LocalDateTime createTime; + + @ApiModelProperty(value = "更新时间") + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/example/admin_server/service/ICustomerService.java b/src/main/java/com/example/admin_server/service/ICustomerService.java new file mode 100644 index 0000000..1fe8d88 --- /dev/null +++ b/src/main/java/com/example/admin_server/service/ICustomerService.java @@ -0,0 +1,16 @@ +package com.example.admin_server.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.example.admin_server.model.entity.Customer; + +/** + *+ * 服务类 + *
+ * + * @author FallingCliff + * @since 2025-05-24 + */ +public interface ICustomerService extends IService+ * 服务实现类 + *
+ * + * @author FallingCliff + * @since 2025-05-24 + */ +@Service +public class CustomerServiceImpl extends ServiceImpl