栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Work日记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Work日记

多条件的模糊分页查询

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

  
    SELECT  count(*) FROM user_profile
    
       mobile  like "%"#{mobile}"%"
      and uid like "%"#{uid}"%"
    
  

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;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583354.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号