diff --git a/book-api/src/main/java/com/imooc/controller/PassportController.java b/book-api/src/main/java/com/imooc/controller/PassportController.java index 9980fb7..b11e09d 100644 --- a/book-api/src/main/java/com/imooc/controller/PassportController.java +++ b/book-api/src/main/java/com/imooc/controller/PassportController.java @@ -12,6 +12,7 @@ import com.imooc.utils.IPUtil; import com.imooc.utils.SMSUtils; import com.imooc.vo.UsersVO; import com.imooc.utils.CommonUtil; +import com.imooc.utils.GsonUtil; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; @@ -25,6 +26,7 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.Map; +import java.util.Optional; import java.util.UUID; /** @@ -42,7 +44,7 @@ public class PassportController extends BaseInfoProperties { @Autowired private UserService userService; - + @Autowired private PasswordEncoder passwordEncoder; @@ -66,47 +68,72 @@ public class PassportController extends BaseInfoProperties { return GraceJSONResult.ok(); } - /*@PostMapping("login") - public Object login(@Valid @RequestBody RegistLoginBO registLoginBO){ - - String rediscode = redis.get(MOBILE_SMSCODE + ":" + registLoginBO.getMobile()); - - if (StringUtils.isBlank(rediscode)|| !rediscode.equalsIgnoreCase(registLoginBO.getSmsCode())){ - System.out.println("rediscode"+rediscode); - System.out.println("registLoginBO.getMobile()"+registLoginBO.getSmsCode()); - return GraceJSONResult.errorCustom(ResponseStatusEnum.SMS_CODE_ERROR); - } - - Users user = userService.queryMobileIsExist(registLoginBO.getMobile()); - if (user==null){ - user = userService.createUser(registLoginBO.getMobile()); - } - String uToken = UUID.randomUUID().toString(); - log.info(uToken); - redis.set(REDIS_USER_TOKEN+":"+user.getId(),uToken); - - //清除验证码 - redis.del(MOBILE_SMSCODE+":"+user.getMobile()); - - //返回给前端 - UsersVO usersVO = new UsersVO(); - BeanUtils.copyProperties(user, usersVO); - usersVO.setUserToken(uToken); - - return GraceJSONResult.ok(usersVO); - }*/ - @PostMapping("login") public Object login(@Valid @RequestBody RegistLoginBO registLoginBO) { - /*String rediscode = redis.get(MOBILE_SMSCODE + ":" + registLoginBO.getMobile()); + String rediscode = redis.get(MOBILE_SMSCODE + ":" + registLoginBO.getMobile()); + + if (StringUtils.isBlank(rediscode) || !rediscode.equalsIgnoreCase(registLoginBO.getSmsCode())) { + System.out.println("rediscode" + rediscode); + System.out.println("registLoginBO.getMobile()" + registLoginBO.getSmsCode()); + return GraceJSONResult.errorCustom(ResponseStatusEnum.SMS_CODE_ERROR); + } + + Users user = userService.queryMobileIsExist(registLoginBO.getMobile()); + if (user == null) { + user = userService.createUser(registLoginBO.getMobile()); + } + String uToken = UUID.randomUUID().toString(); + log.info(uToken); + redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); + + // 清除验证码 + redis.del(MOBILE_SMSCODE + ":" + user.getMobile()); + + // 返回给前端 + UsersVO usersVO = new UsersVO(); + BeanUtils.copyProperties(user, usersVO); + usersVO.setUserToken(uToken); + + return GraceJSONResult.ok(usersVO); + } + + /** + * 从商城系统登录 + * + * @param mobile + * @return + */ + @PostMapping("loginFromShop") + public String loginFromShop(String mobile, String memberId) { + // 创建短视频系统账号 + return Optional.ofNullable(userService.createUserFromShop(mobile,memberId))// + .map(user -> { + String uToken = UUID.randomUUID().toString(); + log.info(uToken); + redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); + // 清除验证码 + redis.del(MOBILE_SMSCODE + ":" + user.getMobile()); + // 返回给前端 + UsersVO usersVO = new UsersVO(); + BeanUtils.copyProperties(user, usersVO); + usersVO.setUserToken(uToken); + + return GsonUtil.beanToJson(usersVO); + })// + .orElseGet(()->StringUtils.EMPTY); + } + + /*@PostMapping("login") + public Object login(@Valid @RequestBody RegistLoginBO registLoginBO) { + String rediscode = redis.get(MOBILE_SMSCODE + ":" + registLoginBO.getMobile()); if (StringUtils.isBlank(rediscode) || !rediscode.equalsIgnoreCase(registLoginBO.getSmsCode())) { System.out.println("rediscode" + rediscode); System.out.println("registLoginBO.getMobile()" + registLoginBO.getSmsCode()); return GraceJSONResult.errorCustom(ResponseStatusEnum.SMS_CODE_ERROR); - }*/ - + } + // 手机号 String mobile = registLoginBO.getMobile(); Users user = userService.queryMobileIsExist(mobile); @@ -121,22 +148,22 @@ public class PassportController extends BaseInfoProperties { } else { shopToken = userService.getShopToken(user.getId()); } - + String uToken = UUID.randomUUID().toString(); log.info(uToken); redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); - + // 清除验证码 redis.del(MOBILE_SMSCODE + ":" + user.getMobile()); - + // 返回给前端 UsersVO usersVO = new UsersVO(); BeanUtils.copyProperties(user, usersVO); usersVO.setUserToken(uToken); - usersVO.setShopToken(shopToken); - + //usersVO.setShopToken(shopToken); + return GraceJSONResult.ok(usersVO); - } + }*/ @PostMapping("loginWithPassword") public Object loginWithPassword(@Valid @RequestBody LoginWithPasswordBO loginWithPasswordBO) { @@ -151,19 +178,18 @@ public class PassportController extends BaseInfoProperties { if (!passwordEncoder.matches(password, user.getPassword())) { return GraceJSONResult.errorCustom(ResponseStatusEnum.USER_PASSWORD_ERROR); } - - + String uToken = UUID.randomUUID().toString(); log.info(uToken); redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken); - //商城token - Token shopToken = userService.getShopToken(user.getId()); - + // 商城token + // Token shopToken = userService.getShopToken(user.getId()); + // 返回给前端 UsersVO usersVO = new UsersVO(); BeanUtils.copyProperties(user, usersVO); usersVO.setUserToken(uToken); - usersVO.setShopToken(shopToken); + // usersVO.setShopToken(shopToken); return GraceJSONResult.ok(usersVO); diff --git a/book-mapper/src/main/java/com/imooc/mapper/UserMemberMapper.java b/book-mapper/src/main/java/com/imooc/mapper/UserMemberMapper.java new file mode 100644 index 0000000..b9cbb91 --- /dev/null +++ b/book-mapper/src/main/java/com/imooc/mapper/UserMemberMapper.java @@ -0,0 +1,13 @@ +package com.imooc.mapper; + +import org.apache.ibatis.annotations.Mapper; +import com.imooc.my.mapper.MyMapper; +import com.imooc.pojo.UserMember; + +/** + * 短视频用户与商城会员数据处理层 + */ +@Mapper +public interface UserMemberMapper extends MyMapper { + +} \ No newline at end of file diff --git a/book-mapper/src/main/resources/mapper/UserMemberMapper.xml b/book-mapper/src/main/resources/mapper/UserMemberMapper.xml new file mode 100644 index 0000000..42ad949 --- /dev/null +++ b/book-mapper/src/main/resources/mapper/UserMemberMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/book-model/src/main/java/com/imooc/pojo/UserMember.java b/book-model/src/main/java/com/imooc/pojo/UserMember.java new file mode 100644 index 0000000..14e77a9 --- /dev/null +++ b/book-model/src/main/java/com/imooc/pojo/UserMember.java @@ -0,0 +1,13 @@ +package com.imooc.pojo; + +import javax.persistence.Table; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@Table(name = "r_user_member") +public class UserMember { + private String userId; + private String memberId; +} diff --git a/book-model/src/main/java/com/imooc/vo/UsersVO.java b/book-model/src/main/java/com/imooc/vo/UsersVO.java index d8d9cb9..743f2d8 100644 --- a/book-model/src/main/java/com/imooc/vo/UsersVO.java +++ b/book-model/src/main/java/com/imooc/vo/UsersVO.java @@ -37,6 +37,6 @@ public class UsersVO { private Integer myFansCounts; // 我的粉丝数量 // private Integer myLikedVlogCounts; private Integer totalLikeMeCounts; - private Token shopToken; + //private Token shopToken; } \ No newline at end of file diff --git a/book-service/src/main/java/com/imooc/service/UserMemberService.java b/book-service/src/main/java/com/imooc/service/UserMemberService.java new file mode 100644 index 0000000..3429d63 --- /dev/null +++ b/book-service/src/main/java/com/imooc/service/UserMemberService.java @@ -0,0 +1,9 @@ +package com.imooc.service; + + + +/** + * 短视频用户与商城会员业务层 + */ +public interface UserMemberService { +} \ No newline at end of file diff --git a/book-service/src/main/java/com/imooc/service/UserService.java b/book-service/src/main/java/com/imooc/service/UserService.java index 9a49862..0fb3c2c 100644 --- a/book-service/src/main/java/com/imooc/service/UserService.java +++ b/book-service/src/main/java/com/imooc/service/UserService.java @@ -51,4 +51,12 @@ public interface UserService { * @return */ Token getShopToken(String userId); + + /** + * 从商城系统创建账号 + * + * @param mobile + * @return + */ + Users createUserFromShop(String mobile, String memberId); } diff --git a/book-service/src/main/java/com/imooc/service/impl/UserMemberServiceImpl.java b/book-service/src/main/java/com/imooc/service/impl/UserMemberServiceImpl.java new file mode 100644 index 0000000..b00a2fd --- /dev/null +++ b/book-service/src/main/java/com/imooc/service/impl/UserMemberServiceImpl.java @@ -0,0 +1,19 @@ +package com.imooc.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.imooc.mapper.UserMemberMapper; +import com.imooc.service.UserMemberService; + +/** + * 会员接口业务层实现 + * + * @author Chopper + * @since 2021-03-29 14:10:16 + */ +@Service +public class UserMemberServiceImpl implements UserMemberService { + + @Autowired + private UserMemberMapper userMemberMapper; +} \ No newline at end of file diff --git a/book-service/src/main/java/com/imooc/service/impl/UserServiceImpl.java b/book-service/src/main/java/com/imooc/service/impl/UserServiceImpl.java index 354c976..8444a49 100644 --- a/book-service/src/main/java/com/imooc/service/impl/UserServiceImpl.java +++ b/book-service/src/main/java/com/imooc/service/impl/UserServiceImpl.java @@ -7,8 +7,10 @@ import com.imooc.enums.UserInfoModifyType; import com.imooc.enums.YesOrNo; import com.imooc.exceptions.GraceException; import com.imooc.grace.result.ResponseStatusEnum; +import com.imooc.mapper.UserMemberMapper; import com.imooc.mapper.UsersMapper; import com.imooc.mo.Token; +import com.imooc.pojo.UserMember; import com.imooc.pojo.Users; import com.imooc.service.UserService; import com.imooc.utils.DateUtil; @@ -43,6 +45,9 @@ public class UserServiceImpl implements UserService { @Resource private PasswordEncoder passwordEncoder; + @Autowired + private UserMemberMapper userMemberMapper; + @Autowired private Sid sid; private static final String USER_FACE1 = "http://122.152.205.72:88/group1/M00/00/05/CpoxxF6ZUySASMbOAABBAXhjY0Y649.png"; @@ -212,4 +217,39 @@ public class UserServiceImpl implements UserService { }); return tokens[0]; } + + @Transactional(rollbackFor = RuntimeException.class) + @Override + public Users createUserFromShop(String mobile, String memberId) { + // 获得全局唯一主键 + String userId = sid.nextShort(); + Users user = new Users(); + user.setId(userId); + user.setPassword(mobile); + user.setMobile(mobile); + user.setNickname("用户:" + DesensitizationUtil.commonDisplay(mobile)); + user.setImoocNum("用户:" + DesensitizationUtil.commonDisplay(mobile)); + user.setFace(USER_FACE1); + user.setBirthday(DateUtil.stringToDate("1999-01-01")); + user.setSex(Sex.secret.type); + user.setBgImg("http://82.156.121.2:29000/bucket/IMG20241212102441.jpg"); // 测试用地址 + user.setCountry("中国"); + user.setProvince(""); + user.setCity(""); + user.setDistrict(""); + user.setDescription("这家伙很懒,什么都没留下~"); + user.setCanImoocNumBeUpdated(YesOrNo.YES.type); + user.setCreatedTime(new Date()); + user.setUpdatedTime(new Date()); + + // 短视频用户与商城账号关系 + UserMember userMember = new UserMember(); + userMember.setUserId(user.getId()); + userMember.setMemberId(memberId); + + if (usersMapper.insert(user) > 0 && userMemberMapper.insert(userMember) > 0) { + return user; + } + return null; + } }