// Path: src/main/java/cn/iflyapi/blog/entity/Subject.java
// public class Subject {
//     private Long subjectId;
// 
//     private Long userId;
// 
//     private String cover;
// 
//     private String subjectTitle;
// 
//     private String subjectDes;
// 
//     private Boolean isPrivate;
// 
//     private Date createTime;
// 
//     private Boolean isDelete;
// 
//     public Long getSubjectId() {
//         return subjectId;
//     }
// 
//     public void setSubjectId(Long subjectId) {
//         this.subjectId = subjectId;
//     }
// 
//     public Long getUserId() {
//         return userId;
//     }
// 
//     public void setUserId(Long userId) {
//         this.userId = userId;
//     }
// 
//     public String getCover() {
//         return cover;
//     }
// 
//     public void setCover(String cover) {
//         this.cover = cover;
//     }
// 
//     public String getSubjectTitle() {
//         return subjectTitle;
//     }
// 
//     public void setSubjectTitle(String subjectTitle) {
//         this.subjectTitle = subjectTitle;
//     }
// 
//     public String getSubjectDes() {
//         return subjectDes;
//     }
// 
//     public void setSubjectDes(String subjectDes) {
//         this.subjectDes = subjectDes;
//     }
// 
//     public Boolean getIsPrivate() {
//         return isPrivate;
//     }
// 
//     public void setIsPrivate(Boolean isPrivate) {
//         this.isPrivate = isPrivate;
//     }
// 
//     public Date getCreateTime() {
//         return createTime;
//     }
// 
//     public void setCreateTime(Date createTime) {
//         this.createTime = createTime;
//     }
// 
//     public Boolean getIsDelete() {
//         return isDelete;
//     }
// 
//     public void setIsDelete(Boolean isDelete) {
//         this.isDelete = isDelete;
//     }
// }
// 
// Path: src/main/java/cn/iflyapi/blog/model/JSONResult.java
// @Getter
// @Setter
// public class JSONResult {
// 
//     private int code;
//     private String msg;
//     private boolean success;
//     private Object data;
// 
//     private JSONResult(int code, String msg, boolean success, Object data) {
//         this.code = code;
//         this.msg = msg;
//         this.success = success;
//         this.data = data;
//     }
// 
//     public static JSONResult ok(int code, String msg, Object data) {
//         return new JSONResult(code, msg, true, data);
//     }
// 
//     public static JSONResult ok(CodeMsgEnum codeMsgEnum, Object data) {
//         return ok(codeMsgEnum.getCode(), codeMsgEnum.getMsg(), data);
//     }
// 
//     public static JSONResult ok(Object data) {
//         return ok(CodeMsgEnum.OK, data);
//     }
// 
//     public static JSONResult ok() {
//         return ok(CodeMsgEnum.OK, null);
//     }
// 
//     public static JSONResult fail(int code, String msg) {
//         return new JSONResult(code, msg, false, null);
//     }
// 
//     public static JSONResult fail(CodeMsgEnum codeMsgEnum, Object data) {
//         return ok(codeMsgEnum.getCode(), codeMsgEnum.getMsg(), data);
//     }
// 
//     public static JSONResult fail(CodeMsgEnum codeMsgEnum) {
//         return ok(codeMsgEnum.getCode(), codeMsgEnum.getMsg(), null);
//     }
// 
//     public static JSONResult fail(Object data) {
//         return ok(CodeMsgEnum.FAIL, data);
//     }
// 
//     public static JSONResult fail() {
//         return ok(CodeMsgEnum.FAIL, null);
//     }
// }
// 
// Path: src/main/java/cn/iflyapi/blog/service/SubjectService.java
// @Service
// public class SubjectService {
// 
//     @Autowired
//     private SubjectMapper subjectMapper;
// 
//     @Autowired
//     private SnowflakeIdWorker idWorker;
// 
//     public List<Subject> listSubjects(Long userId, Long currentUserId) {
//         SubjectExample subjectExample = new SubjectExample();
//         if (userId.equals(currentUserId)) {
//             subjectExample.createCriteria().andUserIdEqualTo(userId).andIsDeleteEqualTo(false);
//             return subjectMapper.selectByExample(subjectExample);
//         }
//         subjectExample.createCriteria().andIsDeleteEqualTo(false).andIsPrivateEqualTo(false).andUserIdEqualTo(userId);
//         return subjectMapper.selectByExample(subjectExample);
//     }
// 
// 
//     public Subject save(Subject subject) {
//         FastValidator.doit().notEmpty(subject.getUserId(), "userId")
//                 .notEmpty(subject.getSubjectTitle(), "subjectTitle")
//                 .onMax(subject.getSubjectTitle(), 20, "subjectTitle");
// 
//         subject.setSubjectId(idWorker.nextId());
//         subject.setSubjectDes(Objects.isNull(subject.getSubjectDes()) ? subject.getSubjectTitle() : subject.getSubjectDes());
//         subject.setCreateTime(new Date());
//         subjectMapper.insertSelective(subject);
//         return subjectMapper.selectByPrimaryKey(subject.getSubjectId());
//     }
// 
//     public boolean update(Subject subject) {
//         FastValidator.doit().notEmpty(subject.getUserId(), "userId")
//                 .notEmpty(subject.getSubjectTitle(), "subjectTitle")
//                 .onMax(subject.getSubjectTitle(), 20, "subjectTitle");
// 
//         return subjectMapper.updateByPrimaryKeySelective(subject) > 0;
//     }
// 
//     public boolean remove(Long subjectId) {
//         Subject subject = new Subject();
//         subject.setSubjectId(subjectId);
//         int num = subjectMapper.updateByPrimaryKeySelective(subject);
//         if (num > 0) {
//             return true;
//         }
//         return false;
//     }
// }


import cn.iflyapi.blog.annotation.OpenApi;
import cn.iflyapi.blog.entity.Subject;
import cn.iflyapi.blog.model.JSONResult;
import cn.iflyapi.blog.service.SubjectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
package cn.iflyapi.blog.controller;


/**
 * @author flyhero
 * @date 2018/12/16 7:39 PM
 */
@Api(value = "SubjectController", tags = "小书接口")
@RestController
public class SubjectController extends BaseController {

    @Autowired
// Path: src/main/java/cn/iflyapi/blog/entity/Subject.java
// public class Subject {
//     private Long subjectId;
// 
//     private Long userId;
// 
//     private String cover;
// 
//     private String subjectTitle;
// 
//     private String subjectDes;
// 
//     private Boolean isPrivate;
// 
//     private Date createTime;
// 
//     private Boolean isDelete;
// 
//     public Long getSubjectId() {
//         return subjectId;
//     }
// 
//     public void setSubjectId(Long subjectId) {
//         this.subjectId = subjectId;
//     }
// 
//     public Long getUserId() {
//         return userId;
//     }
// 
//     public void setUserId(Long userId) {
//         this.userId = userId;
//     }
// 
//     public String getCover() {
//         return cover;
//     }
// 
//     public void setCover(String cover) {
//         this.cover = cover;
//     }
// 
//     public String getSubjectTitle() {
//         return subjectTitle;
//     }
// 
//     public void setSubjectTitle(String subjectTitle) {
//         this.subjectTitle = subjectTitle;
//     }
// 
//     public String getSubjectDes() {
//         return subjectDes;
//     }
// 
//     public void setSubjectDes(String subjectDes) {
//         this.subjectDes = subjectDes;
//     }
// 
//     public Boolean getIsPrivate() {
//         return isPrivate;
//     }
// 
//     public void setIsPrivate(Boolean isPrivate) {
//         this.isPrivate = isPrivate;
//     }
// 
//     public Date getCreateTime() {
//         return createTime;
//     }
// 
//     public void setCreateTime(Date createTime) {
//         this.createTime = createTime;
//     }
// 
//     public Boolean getIsDelete() {
//         return isDelete;
//     }
// 
//     public void setIsDelete(Boolean isDelete) {
//         this.isDelete = isDelete;
//     }
// }
// 
// Path: src/main/java/cn/iflyapi/blog/model/JSONResult.java
// @Getter
// @Setter
// public class JSONResult {
// 
//     private int code;
//     private String msg;
//     private boolean success;
//     private Object data;
// 
//     private JSONResult(int code, String msg, boolean success, Object data) {
//         this.code = code;
//         this.msg = msg;
//         this.success = success;
//         this.data = data;
//     }
// 
//     public static JSONResult ok(int code, String msg, Object data) {
//         return new JSONResult(code, msg, true, data);
//     }
// 
//     public static JSONResult ok(CodeMsgEnum codeMsgEnum, Object data) {
//         return ok(codeMsgEnum.getCode(), codeMsgEnum.getMsg(), data);
//     }
// 
//     public static JSONResult ok(Object data) {
//         return ok(CodeMsgEnum.OK, data);
//     }
// 
//     public static JSONResult ok() {
//         return ok(CodeMsgEnum.OK, null);
//     }
// 
//     public static JSONResult fail(int code, String msg) {
//         return new JSONResult(code, msg, false, null);
//     }
// 
//     public static JSONResult fail(CodeMsgEnum codeMsgEnum, Object data) {
//         return ok(codeMsgEnum.getCode(), codeMsgEnum.getMsg(), data);
//     }
// 
//     public static JSONResult fail(CodeMsgEnum codeMsgEnum) {
//         return ok(codeMsgEnum.getCode(), codeMsgEnum.getMsg(), null);
//     }
// 
//     public static JSONResult fail(Object data) {
//         return ok(CodeMsgEnum.FAIL, data);
//     }
// 
//     public static JSONResult fail() {
//         return ok(CodeMsgEnum.FAIL, null);
//     }
// }
// 
// Path: src/main/java/cn/iflyapi/blog/service/SubjectService.java
// @Service
// public class SubjectService {
// 
//     @Autowired
//     private SubjectMapper subjectMapper;
// 
//     @Autowired
//     private SnowflakeIdWorker idWorker;
// 
//     public List<Subject> listSubjects(Long userId, Long currentUserId) {
//         SubjectExample subjectExample = new SubjectExample();
//         if (userId.equals(currentUserId)) {
//             subjectExample.createCriteria().andUserIdEqualTo(userId).andIsDeleteEqualTo(false);
//             return subjectMapper.selectByExample(subjectExample);
//         }
//         subjectExample.createCriteria().andIsDeleteEqualTo(false).andIsPrivateEqualTo(false).andUserIdEqualTo(userId);
//         return subjectMapper.selectByExample(subjectExample);
//     }
// 
// 
//     public Subject save(Subject subject) {
//         FastValidator.doit().notEmpty(subject.getUserId(), "userId")
//                 .notEmpty(subject.getSubjectTitle(), "subjectTitle")
//                 .onMax(subject.getSubjectTitle(), 20, "subjectTitle");
// 
//         subject.setSubjectId(idWorker.nextId());
//         subject.setSubjectDes(Objects.isNull(subject.getSubjectDes()) ? subject.getSubjectTitle() : subject.getSubjectDes());
//         subject.setCreateTime(new Date());
//         subjectMapper.insertSelective(subject);
//         return subjectMapper.selectByPrimaryKey(subject.getSubjectId());
//     }
// 
//     public boolean update(Subject subject) {
//         FastValidator.doit().notEmpty(subject.getUserId(), "userId")
//                 .notEmpty(subject.getSubjectTitle(), "subjectTitle")
//                 .onMax(subject.getSubjectTitle(), 20, "subjectTitle");
// 
//         return subjectMapper.updateByPrimaryKeySelective(subject) > 0;
//     }
// 
//     public boolean remove(Long subjectId) {
//         Subject subject = new Subject();
//         subject.setSubjectId(subjectId);
//         int num = subjectMapper.updateByPrimaryKeySelective(subject);
//         if (num > 0) {
//             return true;
//         }
//         return false;
//     }
// }


// Path: src/main/java/cn/iflyapi/blog/controller/SubjectController.java
import cn.iflyapi.blog.annotation.OpenApi;
import cn.iflyapi.blog.entity.Subject;
import cn.iflyapi.blog.model.JSONResult;
import cn.iflyapi.blog.service.SubjectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

package cn.iflyapi.blog.controller;


/**
 * @author flyhero
 * @date 2018/12/16 7:39 PM
 */
@Api(value = "SubjectController", tags = "小书接口")
@RestController
public class SubjectController extends BaseController {

    @Autowired
    private SubjectService subjectService;