探花通用设置

目录

功能介绍

数据库表分析

通用设置

 问题表

黑名单

实体类与VO

分页插件

服务消费者-通用设置查询

SettingController

SettingService

服务提供者-通用设置查询

QuestionMapper

QuestionApi

QuestionApiImpl

SettingsMapper

SettingsApi

SettingsApiImpl

黑名单管理-黑名单分页查询

服务提供者:

消费者

代码实现

服务端:

消费端

黑名单管理-黑名单移除


1.完成通用设置查询分析

2.黑名单管理分析与实现

3.陌生人管理分析与实现

4.通用管理分析与实现

功能介绍

通用设置,包含探花交友APP基本的软件设置功能。包含:

设置陌生人问题:当平台其他用户想进行在线交流时需要回答陌生人问题。

通用设置:包含一些APP通知设置

黑名单:对于不感兴趣的用户设置黑名单屏蔽骚扰

数据库表分析

通用设置

CREATE TABLE `tb_settings` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL,
  `like_notification` tinyint(4) DEFAULT '1' COMMENT '推送喜欢通知',
  `pinglun_notification` tinyint(4) DEFAULT '1' COMMENT '推送评论通知',
  `gonggao_notification` tinyint(4) DEFAULT '1' COMMENT '推送公告通知',
  `created` datetime DEFAULT NULL,
  `updated` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设置表';

 问题表

CREATE TABLE `tb_question` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
  `txt` varchar(200) DEFAULT NULL COMMENT '问题内容',
  `created` datetime DEFAULT NULL,
  `updated` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

黑名单

CREATE TABLE `tb_black_list` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL,
  `black_user_id` bigint(20) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `updated` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='黑名单';

 

实体类与VO

Settings

package com.tanhua.domain.db;
import lombok.Data;

@Data
public class Settings extends BasePojo {
    private Long id;
    private Long userId;
    private Boolean likeNotification;
    private Boolean pinglunNotification;
    private Boolean gonggaoNotification;
}

Question

package com.tanhua.domain.db;
import lombok.Data;

@Data
public class Question extends BasePojo {
    private Long id;
    private Long userId;
    //问题内容
    private String txt;
}

BlackList

package com.tanhua.domain.db;
import lombok.Data;

@Data
public class BlackList extends BasePojo {
    private Long id;
    private Long userId;
    private Long blackUserId;
}

SettingsVo

package com.tanhua.domain.vo;

import lombok.Data;

@Data
public class SettingsVo {
    private Long id;
    private String strangerQuestion;
    private String phone;
    private Boolean likeNotification;
    private Boolean pinglunNotification;
    private Boolean gonggaoNotification;
}

PageResult

package com.tanhua.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageResult<T> implements Serializable {
    private Long counts; // 总记录数
    private Long pagesize;// 每页大小
    private Long pages;// 总页数
    private Long page;// 页码
    private List<T> items = Collections.emptyList();
}

分页插件

在tanhua-dubbo-service模块中创建 mybatis-plus 分页插件

package com.tanhua.dubbo.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {
    /**
     * 启用分页插件
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }
}

使用mybatis-plus的分页:

  • 创建分页对象:Page,指定当前页和每页查询条数

  • 基础查询:mapper.selectPage(page,查询条件)

  • 自定义查询:Ipage 方法名称(Page对象,xxx查询条件)

服务消费者-通用设置查询

编码实现

1.controller编写 接收通知设置查询请求

2.controller调用service业务层

a.根据用户id查询问题

b.根据用户id查询手机号

c.根据用户id去查询通知设置

d.将以上查询结果封装到vo返回

SettingController

package com.tanhua.server.controller;

import com.tanhua.domain.vo.*;
import com.tanhua.server.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * 用户信息控制层
 */
@RestController
@RequestMapping("/users")
public class UserInfoController {

    @Autowired
    private UserInfoService userInfoService;

    /**
     * 用户通用设置 - 查询
     */
    @RequestMapping(value = "/settings", method = RequestMethod.GET)
    public ResponseEntity querySettings() {
        SettingsVo settingsVo = userInfoService.querySettings();
        return ResponseEntity.ok(settingsVo);
    }
}

SettingService

package com.tanhua.server.service;

import com.alibaba.fastjson.JSON;
import com.tanhua.commons.exception.TanHuaException;
import com.tanhua.commons.templates.HuanXinTemplate;
import com.tanhua.domain.db.Question;
import com.tanhua.domain.db.Settings;
import com.tanhua.domain.db.User;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.mongo.Friend;
import com.tanhua.domain.mongo.RecommendUser;
import com.tanhua.domain.vo.*;
import com.tanhua.dubbo.api.db.QuestionApi;
import com.tanhua.dubbo.api.db.SettingsApi;
import com.tanhua.dubbo.api.db.UserInfoApi;
import com.tanhua.dubbo.api.mongo.FriendApi;
import com.tanhua.dubbo.api.mongo.UserLikeApi;
import com.tanhua.server.interceptor.UserHolder;
import com.tanhua.server.utils.GetAgeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 用户信息业务逻辑处理层
 */
@Service
@Slf4j
public class UserInfoService {

    @Reference
    private UserInfoApi userInfoApi;

    @Autowired
    private RedisTemplate<String, String> redisTemplate;


    @Reference
    private QuestionApi questionApi;

    @Reference
    private SettingsApi settingsApi;


   /**
     * 用户通用设置 - 查询
     */
    public SettingsVo querySettings() {
        Long userId = UserHolder.getUserId();
        //a.根据用户id查询问题
        Question question = questionApi.queryByUserId(userId);
        String txt = "";
        if (question == null || StringUtils.isEmpty(question.getTxt())) {
            //如果为空 设置默认问题
            txt = "约吗?";
        } else {
            txt = question.getTxt();
        }
        //b.根据用户id查询手机号
        String mobile = UserHolder.getUser().getMobile();
        //c.根据用户id查询通知设置
        Settings settings = settingsApi.queryByUserId(userId);
        if (settings == null) {
            //如果为空 设置默认值
            settings = new Settings();
            settings.setGonggaoNotification(false);
            settings.setPinglunNotification(false);
            settings.setLikeNotification(false);
        }
        // d.将以上调用服务结果封装Vo返回

        SettingsVo settingsVo = new SettingsVo();
        BeanUtils.copyProperties(settings,settingsVo);
        settingsVo.setId(userId);//用户id
        settingsVo.setStrangerQuestion(txt);//用户的问题
        settingsVo.setPhone(mobile);//用户手机号
        return settingsVo;
    }


}

服务提供者-通用设置查询

QuestionMapper

在tanhua-dubbo-service模块下创建QuestionMapper

package com.tanhua.dubbo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tanhua.domain.db.Question;

/**
 * 持久层接口
 */
public interface QuestionMapper extends BaseMapper<Question> {
}

QuestionApi

在tanhua-dubbo-interface模块中创建SettingsApi

package com.tanhua.dubbo.api.db;

import com.tanhua.domain.db.Question;

/**
 * 问题服务接口
 */
public interface QuestionApi {
    /**
     * 根据用户id查询问题对象
     * @return
     */
    Question queryByUserId(Long userId);

}

QuestionApiImpl

package com.tanhua.dubbo.api.db;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tanhua.domain.db.Question;
import com.tanhua.dubbo.mapper.QuestionMapper;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * 问题服务接口实现类
 */
@Service
public class QuestionApiImpl implements QuestionApi {

    @Autowired
    private QuestionMapper questionMapper;

    /**
     * 根据用户id查询问题对象
     * @return
     */
    @Override
    public Question queryByUserId(Long userId) {
        QueryWrapper<Question> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id",userId);
        return questionMapper.selectOne(queryWrapper);
    }
 
}

SettingsMapper

在tanhua-dubbo-service模块下创建SettingsMapper

package com.tanhua.dubbo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tanhua.domain.db.Settings;

public interface SettingsMapper extends BaseMapper<Settings> {
}

SettingsApi

在tanhua-dubbo-interface模块中创建SettingsApi

package com.tanhua.dubbo.api.db;

import com.tanhua.domain.db.Settings;

/**
 * 通用设置服务接口
 */
public interface SettingsApi {
    /**
     * 根据用户id查询通用设置对象
     * @return
     */
    Settings queryByUserId(Long userId);



}

SettingsApiImpl

在tanhua-dubbo-service模块中创建SettingsApiImpl

package com.tanhua.dubbo.api.db;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tanhua.domain.db.Question;
import com.tanhua.domain.db.Settings;
import com.tanhua.dubbo.mapper.QuestionMapper;
import com.tanhua.dubbo.mapper.SettingsMapper;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * 通用设置服务接口实现类
 */
@Service
public class SettingsApiImpl implements SettingsApi {

    @Autowired
    private SettingsMapper settingsMapper;

    /**
     * 根据用户id查询通用设置对象
     *
     * @return
     */
    @Override
    public Settings queryByUserId(Long userId) {
        QueryWrapper<Settings> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id", userId);
        return settingsMapper.selectOne(queryWrapper);
    }
}

黑名单管理-黑名单分页查询

需求:点击黑名单,根据当前用户id查询黑名单表分页查询展示数据

数据库表

黑名单表 根据当前用户id查询当前用户的黑名单表

根据黑名单id查询用户信息表

查询方式:单表查询,连表查询

1.可以先查询黑名单表,得到黑名单用户id,再查询用户信息表,得到用户信息

2.可以多表关联查询 select  xx from A,B where 条件

服务提供者:

1根据分页参数+当前用户id作为条件分页查询黑名单列表数据

需要分页配置类

消费者

1.controller接收黑名单分页查询请求(分页参数)

2.调用service

a.调用根据分页参数+当前用户id作为分页查询黑名单列表数据

b.返回分页数据

注意:BlackListMapper持久接口queryPageByUserId

代码实现

服务端:

tanhua-dubbo-interface

BlackListApi
package com.tanhua.dubbo.api.db;

import com.tanhua.domain.db.BlackList;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;

/**
 * 黑名单服务接口
 */
public interface BlackListApi {
    /**
     * 分页查询黑名单数据
     */
    PageResult<UserInfo> queryPageByUserId(Long page,Long pagesize,Long userId);

}

tanhua-dobbo-service

BlackListApiImpl
package com.tanhua.dubbo.api.db;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tanhua.domain.db.BlackList;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;
import com.tanhua.dubbo.mapper.BlackListMapper;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;

/**黑名单问题服务接口实现类
 */
@Service
public class BlackListApiImpl implements BlackListApi{

    @Autowired
    private BlackListMapper blackListMapper;

    /**
     * 分页查询黑名单数据
     */
    @Override
    public PageResult<UserInfo> queryPageByUserId(Long page, Long pagesize, Long userId) {
        //1.设置分页参数
        Page pageParam = new Page(page,pagesize);
        //2.调用自定义分页方法查询分页数据
        IPage<UserInfo> iPage = blackListMapper.queryPageByUserId(pageParam, userId);
        //3.封装数据返回 总记录数 每页显示记录数 总页码 当前页码 当前页码显示黑名单数据
        return new PageResult<UserInfo>(iPage.getTotal(),iPage.getSize(),iPage.getPages(),iPage.getCurrent(),iPage.getRecords());
    }

}
BlackListMapper
package com.tanhua.dubbo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tanhua.domain.db.BlackList;
import com.tanhua.domain.db.UserInfo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 持久层接口
 */
public interface BlackListMapper extends BaseMapper<BlackList> {

    //Page<UserInfo> page:封装分页参数 当前页码 每页记录数
    @Select("select tui.*  from tb_user_info tui,tb_black_list tbl " +
            "where tbl.user_id = #{userId} and tui.id = tbl.black_user_id")
    IPage<UserInfo> queryPageByUserId(Page<UserInfo> page, @Param("userId") Long userId);
}

消费端

SettingController
package com.tanhua.server.controller;

import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;
import com.tanhua.domain.vo.SettingsVo;
import com.tanhua.domain.vo.UserInfoVo;
import com.tanhua.server.service.SettingService;
import com.tanhua.server.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * 用户设置控制层
 */
@RestController
@RequestMapping("/users")
public class SettingController {

    @Autowired
    private SettingService settingService;

    /**
     * 分页查询黑名单
     */
    @RequestMapping(value = "/blacklist",method = RequestMethod.GET)
    public ResponseEntity queryPageByUserId(@RequestParam(defaultValue = "1") Long page,@RequestParam(defaultValue = "10") Long pagesize) {
        PageResult<UserInfo> pageResult = settingService.queryPageByUserId(page, pagesize);
        return ResponseEntity.ok(pageResult);
    }


    
}
SettingService
package com.tanhua.server.service;

import com.tanhua.domain.db.Question;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;
import com.tanhua.dubbo.api.db.BlackListApi;
import com.tanhua.dubbo.api.db.QuestionApi;
import com.tanhua.server.interceptor.UserHolder;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

/**
 * 用户信息业务逻辑处理层
 */
@Service
public class SettingService {

    @Reference
    private BlackListApi blackListApi;

    /**
     * 分页查询黑名单
     */
    public PageResult<UserInfo> queryPageByUserId(Long page, Long pagesize) {
        return blackListApi.queryPageByUserId(page, pagesize, UserHolder.getUserId());
    }

    
}

黑名单管理-黑名单移除

需求:点击取消黑名单,将此条记录从黑名单表删除

数据库表

黑名单表:根据黑名单用户id删除记录

服务提供者

根据当前用户id和黑名单用户id作为删除条件删除黑名单表中的记录

消费者

1.controller接收黑名单删除请求,黑名单用户id以地址栏的形式传参

2.controller调用service

a.UserHolder获取当前用户id

b.根据传入黑名单用户id与当前用户id调用服务提供者删除黑名单

代码实现

服务端

1.tanhua-dubbo-interface

BlackListApi
package com.tanhua.dubbo.api.db;

import com.tanhua.domain.db.BlackList;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;

/**
 * 黑名单服务接口
 */
public interface BlackListApi {
    /**
     * 根据当前用户id 和 黑名单用户id删除 黑名单记录
     */
    void deleteById(Long blackUserId,Long currentUserId);


}

消费端

BlackListApiImpl
package com.tanhua.dubbo.api.db;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tanhua.domain.db.BlackList;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;
import com.tanhua.dubbo.mapper.BlackListMapper;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;

/**黑名单问题服务接口实现类
 */
@Service
public class BlackListApiImpl implements BlackListApi{

    @Autowired
    private BlackListMapper blackListMapper;

    /**
     * 根据当前用户id 和 黑名单用户id删除 黑名单记录
     */
    @Override
    public void deleteById(Long blackUserId, Long currentUserId) {
        QueryWrapper<BlackList> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id",currentUserId);
        queryWrapper.eq("black_user_id",blackUserId);
        blackListMapper.delete(queryWrapper);
    }
  
}
BlackListMapper
package com.tanhua.dubbo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tanhua.domain.db.BlackList;
import com.tanhua.domain.db.UserInfo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 持久层接口
 */
public interface BlackListMapper extends BaseMapper<BlackList> {

}

消费端

SettingController
package com.tanhua.server.controller;

import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;
import com.tanhua.domain.vo.SettingsVo;
import com.tanhua.domain.vo.UserInfoVo;
import com.tanhua.server.service.SettingService;
import com.tanhua.server.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * 用户设置控制层
 */
@RestController
@RequestMapping("/users")
public class SettingController {

    @Autowired
    private SettingService settingService;

    /**
     * 黑名单删除
     * /blacklist/{uid}: 可以随便写
     */
    @RequestMapping(value = "/blacklist/{uid}", method = RequestMethod.DELETE)
    public ResponseEntity deleteById(@PathVariable("uid") Long blackUserId) {
        settingService.deleteById(blackUserId);
        return ResponseEntity.ok(null);
    }

}
SettingService
package com.tanhua.server.service;

import com.tanhua.domain.db.Question;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;
import com.tanhua.dubbo.api.db.BlackListApi;
import com.tanhua.dubbo.api.db.QuestionApi;
import com.tanhua.server.interceptor.UserHolder;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

/**
 * 用户信息业务逻辑处理层
 */
@Service
public class SettingService {

    @Reference
    private BlackListApi blackListApi;

    /**
     * 黑名单删除
     * /blacklist/{uid}: 可以随便写
     */
    public void deleteById(Long blackUserId) {
        blackListApi.deleteById(blackUserId,UserHolder.getUserId());
    }  
}

添加黑名单

点击添加黑名单按钮,将该用户添加至我的黑名单

1.controller接收添加黑名单请求

2.service处理controller

a.要添加到黑名单的用户

b.调用服务提供者将该用户添加到黑名单列表

:没有实现

陌生人问题

客户端发来请求,根据用户id查询,陌生人问题,如果不存在设置一个默认的,返回给前端,修改我的陌生人问题,如果存在,更新,如果不存在插入。

服务端

tanhua-dubbo-interface

package com.tanhua.dubbo.api.db;

import com.tanhua.domain.db.Question;

/**
 * 问题服务接口
 */
public interface QuestionApi {
    /**
     * 根据用户id查询问题对象
     * @return
     */
    Question queryByUserId(Long userId);

    /**
     * 保存问题表
     * @return
     */
    void saveQuestion(Question question);


    /**
     * 根据用户id更新问题表
     * @return
     */
    void updateById(Question question);

}

tanhua-dubbo-service

package com.tanhua.dubbo.api.db;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tanhua.domain.db.Question;
import com.tanhua.dubbo.mapper.QuestionMapper;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * 问题服务接口实现类
 */
@Service
public class QuestionApiImpl implements QuestionApi {

    @Autowired
    private QuestionMapper questionMapper;

    /**
     * 根据用户id查询问题对象
     * @return
     */
    @Override
    public Question queryByUserId(Long userId) {
        QueryWrapper<Question> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id",userId);
        return questionMapper.selectOne(queryWrapper);
    }
    /**
     * 保存问题表
     * @return
     */
    @Override
    public void saveQuestion(Question question) {
        questionMapper.insert(question);
    }
    /**
     * 根据用户id更新问题表
     * @return
     */
    @Override
    public void updateById(Question question) {
        questionMapper.updateById(question);
    }
}
QuestionMapper
package com.tanhua.dubbo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tanhua.domain.db.Question;

/**
 * 持久层接口
 */
public interface QuestionMapper extends BaseMapper<Question> {
}

消费端

SettingService
package com.tanhua.server.service;

import com.tanhua.domain.db.Question;
import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;
import com.tanhua.dubbo.api.db.BlackListApi;
import com.tanhua.dubbo.api.db.QuestionApi;
import com.tanhua.server.interceptor.UserHolder;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

/**
 * 用户信息业务逻辑处理层
 */
@Service
public class SettingService {


    @Reference
    private QuestionApi questionApi;

    /**
     * 设置陌生人问题 - 保存 或 修改
     */
    public void saveOrUpdateQuestion(String content) {
        Long userId = UserHolder.getUserId();
        //1.根据当前用户id查询问题表 记录是否存在
        Question question = questionApi.queryByUserId(userId);
        //2.如果不存在则调用服务保存问题表
        if(question == null){
            question = new Question();
            question.setTxt(content);//陌生人问题
            question.setUserId(userId);//当前用户id
            questionApi.saveQuestion(question);
        }else {
            //3.如果存在则调用服务更新问题表
            question.setTxt(content);
            questionApi.updateById(question);
        }

    }
}
SettingController
package com.tanhua.server.controller;

import com.tanhua.domain.db.UserInfo;
import com.tanhua.domain.vo.PageResult;
import com.tanhua.domain.vo.SettingsVo;
import com.tanhua.domain.vo.UserInfoVo;
import com.tanhua.server.service.SettingService;
import com.tanhua.server.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * 用户设置控制层
 */
@RestController
@RequestMapping("/users")
public class SettingController {

    @Autowired
    private SettingService settingService;

    /**
     * 设置陌生人问题 - 保存 或 修改
     */
    @RequestMapping(value = "/questions", method = RequestMethod.POST)
    public ResponseEntity saveOrUpdateQuestion(@RequestBody Map<String,String> params) {
        String content = params.get("content");//问题内容
        settingService.saveOrUpdateQuestion(content);
        return ResponseEntity.ok(null);
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值