|
@@ -5,6 +5,8 @@ import com.train.config.JwtConfig;
|
|
|
import com.train.entity.TrainUser;
|
|
import com.train.entity.TrainUser;
|
|
|
import com.train.mapper.TrainClassMapper;
|
|
import com.train.mapper.TrainClassMapper;
|
|
|
import com.train.mapper.TrainUserMapper;
|
|
import com.train.mapper.TrainUserMapper;
|
|
|
|
|
+import com.train.cfc.entity.CfcUser;
|
|
|
|
|
+import com.train.cfc.mapper.CfcUserMapper;
|
|
|
import com.train.dto.LoginResultDTO;
|
|
import com.train.dto.LoginResultDTO;
|
|
|
import com.train.dto.AlumniVerifyDTO;
|
|
import com.train.dto.AlumniVerifyDTO;
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
@@ -18,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
@@ -34,6 +37,9 @@ public class AuthController {
|
|
|
@Resource
|
|
@Resource
|
|
|
private TrainClassMapper trainClassMapper;
|
|
private TrainClassMapper trainClassMapper;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private CfcUserMapper cfcUserMapper;
|
|
|
|
|
+
|
|
|
@Resource
|
|
@Resource
|
|
|
private JwtConfig jwtConfig;
|
|
private JwtConfig jwtConfig;
|
|
|
|
|
|
|
@@ -42,6 +48,8 @@ public class AuthController {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 微信登录(用 code 换取 openid;test-mode 下用模拟 openid)
|
|
* 微信登录(用 code 换取 openid;test-mode 下用模拟 openid)
|
|
|
|
|
+ * <p>统一会员身份:以 cfc 同库的 users 表为准,按 openid 查找/创建 cfc 会员,
|
|
|
|
|
+ * 并将 cfcUser.id 回写至本库 train_user.cfc_user_id,实现与 cfc 体系同一会员。
|
|
|
*/
|
|
*/
|
|
|
@Operation(summary = "微信code登录")
|
|
@Operation(summary = "微信code登录")
|
|
|
@PostMapping("/wechat-login")
|
|
@PostMapping("/wechat-login")
|
|
@@ -57,6 +65,24 @@ public class AuthController {
|
|
|
openid = mockOpenidByCode(code); // 生产接入微信 jscode2session
|
|
openid = mockOpenidByCode(code); // 生产接入微信 jscode2session
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 1) 在 cfc 同库确保统一会员身份
|
|
|
|
|
+ CfcUser cfcUser = cfcUserMapper.selectOne(
|
|
|
|
|
+ new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<CfcUser>()
|
|
|
|
|
+ .eq(CfcUser::getOpenid, openid)
|
|
|
|
|
+ .last("LIMIT 1"));
|
|
|
|
|
+ if (cfcUser == null) {
|
|
|
|
|
+ cfcUser = new CfcUser();
|
|
|
|
|
+ cfcUser.setOpenid(openid);
|
|
|
|
|
+ cfcUser.setRole("parent");
|
|
|
|
|
+ cfcUser.setNickname("营员" + openid.substring(Math.max(0, openid.length() - 6)));
|
|
|
|
|
+ cfcUser.setMemberLevel("FREE");
|
|
|
|
|
+ cfcUser.setTotalPoints(0);
|
|
|
|
|
+ cfcUser.setCreatedAt(new Date());
|
|
|
|
|
+ cfcUser.setUpdatedAt(new Date());
|
|
|
|
|
+ cfcUserMapper.insert(cfcUser);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 2) 本库 train_user 作为训练营运营档案,回写 cfcUser.id
|
|
|
TrainUser user = trainUserMapper.selectOne(
|
|
TrainUser user = trainUserMapper.selectOne(
|
|
|
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<TrainUser>()
|
|
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<TrainUser>()
|
|
|
.eq(TrainUser::getOpenid, openid)
|
|
.eq(TrainUser::getOpenid, openid)
|
|
@@ -64,12 +90,17 @@ public class AuthController {
|
|
|
boolean isNew = false;
|
|
boolean isNew = false;
|
|
|
if (user == null) {
|
|
if (user == null) {
|
|
|
user = new TrainUser();
|
|
user = new TrainUser();
|
|
|
|
|
+ user.setCfcUserId(cfcUser.getId());
|
|
|
user.setOpenid(openid);
|
|
user.setOpenid(openid);
|
|
|
user.setAlumniVerify("pending");
|
|
user.setAlumniVerify("pending");
|
|
|
user.setRole("student");
|
|
user.setRole("student");
|
|
|
user.setStatus("active");
|
|
user.setStatus("active");
|
|
|
trainUserMapper.insert(user);
|
|
trainUserMapper.insert(user);
|
|
|
isNew = true;
|
|
isNew = true;
|
|
|
|
|
+ } else if (user.getCfcUserId() == null) {
|
|
|
|
|
+ // 存量营员补齐 cfc 关联,保持统一身份
|
|
|
|
|
+ user.setCfcUserId(cfcUser.getId());
|
|
|
|
|
+ trainUserMapper.updateById(user);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
String token = jwtConfig.generateToken(user.getId(), user.getRole());
|
|
String token = jwtConfig.generateToken(user.getId(), user.getRole());
|