controller
@Api(tags = "用户功能相关接口", value = "UserProfileController")
@RestController
@RequestMapping("/user")
@Slf4j
public class UserProfileController {
@Resource
private UserProfileService userProfileService;
@ApiOperation(value = "通过mobile(模糊查询,返回用户的基本信息,是否是会员,是否是种子会员,是否是会员,会员到期时间)")
@GetMapping("/getUserList")
public RtData getUserProfile(@ApiParam(name = "mobile", value = "手机号码", required = false)
@RequestParam(value = "mobile", required = false) String mobile,
@ApiParam(name = "uid", value = "用户id", required = false)
@RequestParam(value = "uid", required = false) String uid,
@ApiParam(name = "currentPage", value = "第几页", required = true)
@RequestParam("currentPage") Integer currentPage,
@ApiParam(name = "pageSize", value = "每页展示多少条数据", required = true)
@RequestParam("pageSize") Integer pageSize
) {
return userProfileService.getUserProfile(mobile,uid,currentPage,pageSize);
}
}
ServiceImpl
@Override
public RtData getUserProfile(String mobile, String uid,Integer currentPage, Integer pageSize) {
if (pageSize>100){
return ResponseBuilder.fail("pageSize不能超过100");
}
currentPage=(currentPage-1)*pageSize;
List userProfiles=userProfileMapper.getUserProfile(mobile,uid,currentPage,pageSize);
List userProfileInfos= new ArrayList<>();
for (UserProfile userProfile: userProfiles) {
UserProfileInfo userProfileInfo = new UserProfileInfo();
userProfileInfos.add(userProfileInfo);
userProfileInfo.setRegistrationTime(userProfile.getRegistrationTime()).setUid(userProfile.getUid()).setNickname(userProfile.getNickname()).setUserType(userProfile.getUserType()).setRegisterFrom(userProfile.getRegisterFrom()).setMobile(userProfile.getMobile());
// 根据用户uid查询用户是否是是年费
List userLevel = docsMemberRightMapper.getUserLevel(String.valueOf(userProfile.getUid()));
if (!userLevel.isEmpty()) {
DocsMemberRight memberAuthDetail = userLevel.get(0);
Date rightsEnd = memberAuthDetail.getEndTime();
if (new Date().before(rightsEnd)){
userProfileInfo.setAccountLevel(userLevel.get(0).getAccountLevel());
}else{
userProfileInfo.setAccountLevel(1);
}
userProfileInfo.setRightsEnd(userLevel.get(0).getEndTime());
}
else {
userProfileInfo.setAccountLevel(1);
}
SeedUser seedUser = seedUserMapper.selectIsSeedUser(String.valueOf(userProfile.getUid()));
if (seedUser!=null){
userProfileInfo.setSeedUser(true);
userProfileInfo.setSeedUserType(seedUser.getType());
}else {
userProfileInfo.setSeedUser(false);
}
}
Integer userAmount = userProfileMapper.getUserAmount(mobile,uid,currentPage, pageSize);
RtData rtData = new RtData();
rtData.setList(userProfileInfos);
rtData.setData("total",userAmount);
return ResponseBuilder.success(rtData);
}
}
xml
pojo类
@Data
@Accessors(chain = true)
public class UserProfileInfo implements Serializable {
@JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" , timezone = " GMT+8 " )
private Date registrationTime;
private Long uid;
private String nickname;
private String registerFrom;
private String mobile;
private Integer userType;
boolean isSeedUser;
String seedUserType;
Integer accountLevel;
@JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss" , timezone = " GMT+8 " )
Date rightsEnd;
}
利用日期类为用户添加权益时间
ServiceImpl
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public RtData setUserRights(String uid, Integer days) {
// 查询用户的历史权益
List userLevel = docsMemberRightMapper.getUserLevel(uid);
DocsMemberRight docsMemberRight = new DocsMemberRight();
docsMemberRight.setUid(Long.valueOf(uid));
// 如果用户的历史权益为空则新增权益
Date date = new Date();
if(userLevel .isEmpty() || days==0){
docsMemberRight = addDays(docsMemberRight, days, date);
}
else{
DocsMemberRight memberAuthDetail1 = userLevel.get(0);
Date rightsEnd = memberAuthDetail1.getEndTime();
//如果最晚截止权益的时间小于现在,则存入的起始日期为今天
if(rightsEnd.getTime()=365){
docsMemberRight.setIsAnnual(true);
}
else {
docsMemberRight.setIsAnnual(false);
}
docsMemberRight.setUpdateTime(new Date()).setAccountLevel(2).setCid("admin_user_auth").setRegistrationTime(date);
docsMemberRightMapper.setUserRights(docsMemberRight);
docsMemberRightMapper.setUserRightsRecord(docsMemberRight);
return ResponseBuilder.success("成功添加权益"+days+"天");
}
public DocsMemberRight addDays( DocsMemberRight docsMemberRight , Integer days , Date date ){
docsMemberRight.setStartTime(date);
Calendar instance = Calendar.getInstance();
instance.setTime(date);
instance.add(Calendar.DATE, days);
Date time = instance.getTime();
docsMemberRight.setEndTime(time);
return docsMemberRight;
}
}



