Commit 124252aa authored by tangtuo's avatar tangtuo

v1.0.0功能开发

parent d171866f
...@@ -2,6 +2,11 @@ ...@@ -2,6 +2,11 @@
<profile version="1.0"> <profile version="1.0">
<option name="myName" value="Project Default" /> <option name="myName" value="Project Default" />
<inspection_tool class="ArgNamesErrorsInspection" enabled="false" level="ERROR" enabled_by_default="false" /> <inspection_tool class="ArgNamesErrorsInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<Languages>
<language minSize="57" name="Java" />
</Languages>
</inspection_tool>
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true"> <inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
<option name="TOP_LEVEL_CLASS_OPTIONS"> <option name="TOP_LEVEL_CLASS_OPTIONS">
<value> <value>
......
package com.fzm.admin.controller;
import com.fzm.common.annotation.Authentication;
import com.fzm.common.entity.vo.CopyrightApplyVo;
import com.fzm.common.model.ResponseModel;
import com.fzm.common.service.CopyrightApplyService;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @author tangtuo
* @date 2021/12/15 10:27
*/
@Authentication
@RestController
@RequestMapping(value = "/copyright/apply")
@Api(tags = "版权审核")
public class CopyrightApplyController {
@Resource
private CopyrightApplyService copyrightApplyService;
@GetMapping(value = "/pages")
@ApiOperation(value = "分页查询")
public ResponseModel<PageInfo<CopyrightApplyVo>> page(@ApiParam(value = "页码", required = true) @RequestParam Integer pageNum,
@ApiParam(value = "每页记录数", required = true) @RequestParam Integer pageSize,
@ApiParam(value = "手机号") @RequestParam(required = false) String telephone,
@ApiParam(value = "流水号") @RequestParam(required = false) String serialNum,
@ApiParam(value = "审核状态") @RequestParam(required = false) Integer registerState,
@ApiParam(value = "审核开始日期 yyyy-MM-dd") @RequestParam(required = false) String from,
@ApiParam(value = "审核截止日期 yyyy-MM-dd") @RequestParam(required = false) String to) {
PageInfo<CopyrightApplyVo> pages = copyrightApplyService.pages(pageNum, pageSize, telephone, serialNum, registerState, from, to);
return ResponseModel.success(pages);
}
@PostMapping(value = "/pass")
@ApiOperation(value = "通过")
public ResponseModel<Boolean> pass(@RequestParam Integer id) {
boolean result = copyrightApplyService.pass(id);
return ResponseModel.success(result);
}
@PostMapping(value = "/reject")
@ApiOperation(value = "驳回")
public ResponseModel<Boolean> reject(@RequestParam Integer id, @RequestParam String rejectReason) {
boolean result = copyrightApplyService.reject(id, rejectReason);
return ResponseModel.success(result);
}
}
package com.fzm.common.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;
/**
* @author tangtuo
*
* <p>
* 异步线程池配置
* </p>
*/
@Configuration
@EnableAsync
public class AsyncConfig {
@Bean
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(200);
executor.setQueueCapacity(200);
executor.setKeepAliveSeconds(60);
executor.setThreadNamePrefix("Service-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.setWaitForTasksToCompleteOnShutdown(true);
executor.setAwaitTerminationSeconds(60);
return executor;
}
}
\ No newline at end of file
...@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fzm.common.entity.dto.CopyrightDTO; import com.fzm.common.entity.dto.CopyrightDTO;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -85,6 +86,13 @@ public class CopyrightApply { ...@@ -85,6 +86,13 @@ public class CopyrightApply {
@ApiModelProperty(value = "登记状态 0-待审核 1-登记成功 2-审核失败") @ApiModelProperty(value = "登记状态 0-待审核 1-登记成功 2-审核失败")
private Integer registerState; private Integer registerState;
@ApiModelProperty(value = "驳回理由")
private String rejectReason;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@ApiModelProperty("json串")
private String content;
private Date createDate; private Date createDate;
private Date updateDate; private Date updateDate;
......
package com.fzm.common.entity; package com.fzm.common.entity;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/** /**
* @author tangtuo * @author tangtuo
...@@ -13,6 +22,75 @@ import lombok.Data; ...@@ -13,6 +22,75 @@ import lombok.Data;
@TableName(value = "tb_copyright_apply_owner_relation") @TableName(value = "tb_copyright_apply_owner_relation")
public class CopyrightApplyOwnerRelation { public class CopyrightApplyOwnerRelation {
@TableField(value = "copyright_id")
@ApiModelProperty(value = "版权id")
private Integer copyrightId; private Integer copyrightId;
@TableField(value = "owner_id")
@ApiModelProperty(value = "著作权人id")
private Integer ownerId; private Integer ownerId;
@NotNull(message = "著作权人类型不能为空")
@ApiModelProperty(value = "类别 0-自然人 1-法人")
private Integer type;
@NotBlank(message = "著作权人不能为空")
@ApiModelProperty(value = "著作权人")
private String owner;
@NotBlank(message = "证件号码不能为空")
@ApiModelProperty(value = "证件号码")
private String idNumber;
@NotNull(message = "证件是否长期有效不能为空")
@ApiModelProperty(value = "是否长期有效 0-否 1-是")
private Integer isEffective;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@NotNull(message = "证件有效期起始时间不能为空")
@ApiModelProperty(value = "证件有效起止时间")
private Date effectiveStartDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "证件有效终止时间")
private Date effectiveEndDate;
@NotBlank(message = "用户所在省份不能为空")
@ApiModelProperty(value = "用户所在省份")
private String province;
@NotBlank(message = "用户所在城市不能为空")
@ApiModelProperty(value = "用户所在城市")
private String city;
@ApiModelProperty(value = "证件类型 0-身份证 1-营业执照 2-企业法人营业执照 3-组织机构代码证书 4-事业单位法人证书 5-社团法人证书 6-统一社会信用代码 7其他有效证件")
private Integer idType;
@ApiModelProperty(value = "正面照片 (身份证人像面照片)")
private String positivePhoto;
@ApiModelProperty(value = "反面照片(身份证国徽面照片)")
private String backPhoto;
@ApiModelProperty(value = "手持身份证照片")
private String personalPhoto;
@ApiModelProperty(value = "证件照片(营业执照等)")
private String certificatesPhoto;
@NotBlank(message = "委托证明不能为空")
@ApiModelProperty(value = "委托证明")
private String entrustProve;
private Date createDate;
private Date updateDate;
public CopyrightApplyOwnerRelation(Integer copyrightId,CopyrightOwner copyrightOwner) {
this.copyrightId = copyrightId;
this.ownerId = copyrightOwner.getId();
BeanUtil.copyProperties(copyrightOwner, this, true);
}
} }
...@@ -53,7 +53,6 @@ public class CopyrightOwner { ...@@ -53,7 +53,6 @@ public class CopyrightOwner {
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@NotNull(message = "证件有效期终止时间不能为空")
@ApiModelProperty(value = "证件有效终止时间") @ApiModelProperty(value = "证件有效终止时间")
private Date effectiveEndDate; private Date effectiveEndDate;
...@@ -88,9 +87,5 @@ public class CopyrightOwner { ...@@ -88,9 +87,5 @@ public class CopyrightOwner {
private Date updateDate; private Date updateDate;
public CopyrightOwner(CopyrightDTO.Owner owner) {
BeanUtil.copyProperties(owner, this, true);
}
} }
...@@ -4,6 +4,7 @@ package com.fzm.common.entity; ...@@ -4,6 +4,7 @@ package com.fzm.common.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -22,6 +23,7 @@ public class Draft { ...@@ -22,6 +23,7 @@ public class Draft {
@ApiModelProperty("内容") @ApiModelProperty("内容")
private String content; private String content;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@ApiModelProperty("草稿json串") @ApiModelProperty("草稿json串")
private String json; private String json;
......
...@@ -15,6 +15,9 @@ import java.util.List; ...@@ -15,6 +15,9 @@ import java.util.List;
@Data @Data
public class CopyrightDTO { public class CopyrightDTO {
@ApiModelProperty("主键")
private Integer id;
@ApiModelProperty(value = "nft哈希") @ApiModelProperty(value = "nft哈希")
private String nftHash; private String nftHash;
...@@ -47,6 +50,7 @@ public class CopyrightDTO { ...@@ -47,6 +50,7 @@ public class CopyrightDTO {
@ApiModelProperty(value = "作品完成城市") @ApiModelProperty(value = "作品完成城市")
private String opusCompleteCity; private String opusCompleteCity;
@ApiModelProperty(value = "'发表状态 0-未发表 1-已发表") @ApiModelProperty(value = "'发表状态 0-未发表 1-已发表")
private Integer publishState; private Integer publishState;
...@@ -85,6 +89,9 @@ public class CopyrightDTO { ...@@ -85,6 +89,9 @@ public class CopyrightDTO {
@ApiModelProperty("权力id集合") @ApiModelProperty("权力id集合")
private List<Integer> authorityIds; private List<Integer> authorityIds;
@ApiModelProperty("json串")
private String content;
@Data @Data
public static class Author { public static class Author {
...@@ -99,56 +106,6 @@ public class CopyrightDTO { ...@@ -99,56 +106,6 @@ public class CopyrightDTO {
} }
@Data
public static class Owner {
@ApiModelProperty(value = "类别 0-自然人 1-法人")
private Integer type;
@ApiModelProperty(value = "著作权人")
private String owner;
@ApiModelProperty(value = "证件号码")
private String idNumber;
@ApiModelProperty(value = "是否长期有效 0-否 1-是")
private Integer isEffective;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "证件有效起止时间 格式:yyyy-MM-dd")
private Date effectiveStartDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "证件有效终止时间 格式:yyyy-MM-dd")
private Date effectiveEndDate;
@ApiModelProperty(value = "用户所在省份")
private String province;
@ApiModelProperty(value = "用户所在城市")
private String city;
@ApiModelProperty(value = "证件类型 0-身份证 1-营业执照 2-企业法人营业执照 3-组织机构代码证书 4-事业单位法人证书 5-社团法人证书 6-统一社会信用代码 7其他有效证件")
private Integer idType;
@ApiModelProperty(value = "正面照片 (身份证人像面照片)")
private String positivePhoto;
@ApiModelProperty(value = "反面照片(身份证国徽面照片)")
private String backPhoto;
@ApiModelProperty(value = "手持身份证照片")
private String personalPhoto;
@ApiModelProperty(value = "证件照片(营业执照等)")
private String certificatesPhoto;
@ApiModelProperty(value = "委托证明")
private String entrustProve;
}
@Data @Data
public static class File { public static class File {
......
/**
* Copyright 2021 bejson.com
*/
package com.fzm.common.entity.dto;
import cn.hutool.core.date.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* Auto-generated: 2021-12-15 16:10:11
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class CopyrightRequest {
private String app_id;
private String charset = "utf-8";
private String sign;
private String sign_type;
private String timestamp = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
private String version = "1.0";
private CopyrightDetail biz_content;
@Data
public static class CopyrightDetail {
@ApiModelProperty(value = "")
private String affilia_photo;
@ApiModelProperty(value = "")
private String agency_photo;
@ApiModelProperty(value = "")
private String author_photo;
@ApiModelProperty(value = "")
private List<Cooperator> cooperator;
@ApiModelProperty(value = "")
private String end_address;
@ApiModelProperty(value = "")
private String end_time;
@ApiModelProperty(value = "")
private String entrust_photo;
@ApiModelProperty(value = "")
private Integer gain_code;
@ApiModelProperty(value = "")
private String gain_desc;
@ApiModelProperty(value = "")
private String gain_name;
@ApiModelProperty(value = "")
private String gain_photo;
@ApiModelProperty(value = "")
private String geren_uname;
@ApiModelProperty(value = "")
private String geren_uxname;
@ApiModelProperty(value = "")
private String geren_uxname_type;
@ApiModelProperty(value = "")
private String geren_uxname_type_name;
@ApiModelProperty(value = "")
private Integer is_grade;
@ApiModelProperty(value = "")
private Integer nature_code;
@ApiModelProperty(value = "")
private String nature_desc;
@ApiModelProperty(value = "")
private String nature_name;
@ApiModelProperty(value = "")
private String other_photo;
@ApiModelProperty(value = "")
private List<CopyrightOwner> owner_list;
@ApiModelProperty(value = "")
private String publish_address;
@ApiModelProperty(value = "")
private int publish_status;
@ApiModelProperty(value = "")
private String publish_time;
@ApiModelProperty(value = "")
private int rights_affilia_code;
@ApiModelProperty(value = "")
private String rights_affilia_name;
@ApiModelProperty(value = "")
private String rights_desc;
@ApiModelProperty(value = "")
private String rights_guarantee_photo;
@ApiModelProperty(value = "")
private String works_create_desc;
@ApiModelProperty(value = "")
private String works_desc;
@ApiModelProperty(value = "")
private List<WorksFile> works_files;
@ApiModelProperty(value = "")
private String works_name;
@ApiModelProperty(value = "")
private String works_type_code;
@ApiModelProperty(value = "")
private String works_type_desc;
@ApiModelProperty(value = "")
private String works_type_name;
}
@Data
public static class Cooperator {
@ApiModelProperty(value = "")
private String signature_type;
@ApiModelProperty(value = "")
private String signature_type_name;
@ApiModelProperty(value = "")
private String uname;
@ApiModelProperty(value = "")
private String uxname;
}
@Data
public static class CopyrightOwner {
@ApiModelProperty(value = "")
private String address;
@ApiModelProperty(value = "")
private String back_photo;
@ApiModelProperty(value = "")
private String city;
@ApiModelProperty(value = "")
private String city_id;
@ApiModelProperty(value = "")
private String company_photo;
@ApiModelProperty(value = "")
private String document_code;
@ApiModelProperty(value = "")
private String document_image;
@ApiModelProperty(value = "")
private int document_type_code;
@ApiModelProperty(value = "")
private String document_type_name;
@ApiModelProperty(value = "")
private String front_photo;
@ApiModelProperty(value = "")
private String handheld_photo;
@ApiModelProperty(value = "")
private int is_forever;
@ApiModelProperty(value = "")
private String other_document_code;
@ApiModelProperty(value = "")
private String other_end_date;
@ApiModelProperty(value = "")
private String owner_name;
@ApiModelProperty(value = "")
private String owner_sign_name;
@ApiModelProperty(value = "")
private String owner_type_code;
@ApiModelProperty(value = "")
private String owner_type_name;
@ApiModelProperty(value = "")
private String prove_photo;
@ApiModelProperty(value = "")
private String province;
@ApiModelProperty(value = "")
private String province_id;
@ApiModelProperty(value = "")
private String valid_end_date;
@ApiModelProperty(value = "")
private String valid_start_date;
}
@Data
public static class WorksFile {
@ApiModelProperty(value = "")
private String file;
@ApiModelProperty(value = "")
private String file_format;
@ApiModelProperty(value = "")
private String file_name;
@ApiModelProperty(value = "")
private String file_size;
@ApiModelProperty(value = "")
private String file_token;
@ApiModelProperty(value = "")
private String keywords;
}
}
\ No newline at end of file
...@@ -32,6 +32,9 @@ public class CollectionNftVo { ...@@ -32,6 +32,9 @@ public class CollectionNftVo {
@ApiModelProperty("nft编号") @ApiModelProperty("nft编号")
private String nftId; private String nftId;
@ApiModelProperty("nft哈希")
private String nftHash;
@ApiModelProperty("是否是纪念版nft 0-否 1-是") @ApiModelProperty("是否是纪念版nft 0-否 1-是")
private Integer isCommemorate; private Integer isCommemorate;
...@@ -42,6 +45,6 @@ public class CollectionNftVo { ...@@ -42,6 +45,6 @@ public class CollectionNftVo {
this.name = nft.getName(); this.name = nft.getName();
this.cover = nft.getCover(); this.cover = nft.getCover();
this.isCommemorate = nft.getIsCommemorate(); this.isCommemorate = nft.getIsCommemorate();
this.fileUrl=nft.getFileUrl(); this.fileUrl = nft.getFileUrl();
} }
} }
package com.fzm.common.entity.vo;
import cn.hutool.core.bean.BeanUtil;
import com.fzm.common.entity.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author tangtuo
* @date 2021/12/13 11:35
*/
@Data
public class CopyrightApplyVo {
@ApiModelProperty(value = "主键")
private Integer id;
@ApiModelProperty(value = "流水号")
private String serialNum;
@ApiModelProperty(value = "用户id")
private Integer userId;
@ApiModelProperty(value = "申请账号")
private String telephone;
@ApiModelProperty(value = "用户昵称")
private String nickname;
@ApiModelProperty(value = "nft哈希")
private String nftHash;
@ApiModelProperty(value = "nft名称")
private String nftName;
@ApiModelProperty(value = "作品名称")
private String opusName;
@ApiModelProperty(value = "登记状态 -1:已撤回 0:待审核 2:已提交 3:已驳回 4:登记成功 5:审核失败 ")
private Integer registerState;
@ApiModelProperty(value = "申请时间")
private Date createDate;
}
...@@ -91,7 +91,7 @@ public class CopyrightVo { ...@@ -91,7 +91,7 @@ public class CopyrightVo {
private List<Authority> authorities; private List<Authority> authorities;
@ApiModelProperty(value = "著作权人列表") @ApiModelProperty(value = "著作权人列表")
private List<CopyrightOwner> owners; private List<CopyrightApplyOwnerRelation> owners;
public CopyrightVo(CopyrightApply copyrightApply) { public CopyrightVo(CopyrightApply copyrightApply) {
BeanUtil.copyProperties(copyrightApply, this, true); BeanUtil.copyProperties(copyrightApply, this, true);
......
package com.fzm.common.mapper; package com.fzm.common.mapper;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fzm.common.entity.CopyrightApply; import com.fzm.common.entity.CopyrightApply;
import com.fzm.common.entity.vo.CopyrightApplyVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -22,4 +24,6 @@ public interface CopyrightApplyMapper extends BaseMapper<CopyrightApply> { ...@@ -22,4 +24,6 @@ public interface CopyrightApplyMapper extends BaseMapper<CopyrightApply> {
* @return * @return
*/ */
List<CopyrightApply> list(@Param("userId") Integer userId, @Param("state") Integer state); List<CopyrightApply> list(@Param("userId") Integer userId, @Param("state") Integer state);
List<CopyrightApplyVo> pages(@Param("telephone") String telephone, @Param("serialNum") String serialNum, @Param("registerState") Integer registerState, @Param("startDate") DateTime startDate, @Param("endDate") DateTime endDate);
} }
...@@ -44,4 +44,6 @@ public interface NftMapper extends BaseMapper<Nft> { ...@@ -44,4 +44,6 @@ public interface NftMapper extends BaseMapper<Nft> {
List<NftListVo> page(@Param("categoryId") Integer categoryId, @Param("name") String name, @Param("telephone") String telephone, @Param("status") Integer status, @Param("startDate") DateTime startDate, @Param("endDate") DateTime endDate); List<NftListVo> page(@Param("categoryId") Integer categoryId, @Param("name") String name, @Param("telephone") String telephone, @Param("status") Integer status, @Param("startDate") DateTime startDate, @Param("endDate") DateTime endDate);
List<CollectionNftVo> listCurrent(@Param("categoryId") Integer categoryId, @Param("userId") Integer userId); List<CollectionNftVo> listCurrent(@Param("categoryId") Integer categoryId, @Param("userId") Integer userId);
List<CollectionNftVo> listCopyright(@Param("userId") Integer userId);
} }
...@@ -3,9 +3,28 @@ package com.fzm.common.service; ...@@ -3,9 +3,28 @@ package com.fzm.common.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.fzm.common.entity.CopyrightApplyOwnerRelation; import com.fzm.common.entity.CopyrightApplyOwnerRelation;
import java.util.List;
/** /**
* @author tangtuo * @author tangtuo
* @date 2021/12/13 11:24 * @date 2021/12/13 11:24
*/ */
public interface CopyrightApplyOwnerRelationService extends IService<CopyrightApplyOwnerRelation> { public interface CopyrightApplyOwnerRelationService extends IService<CopyrightApplyOwnerRelation> {
/**
* 根据版权id删除记录
*
* @param copyrightId
* @return
*/
Integer delByCopyrightId(Integer copyrightId);
/**
* 根据版权id查询
*
* @param copyrightId
* @return
*/
List<CopyrightApplyOwnerRelation> getByCopyrightId(Integer copyrightId);
} }
...@@ -3,9 +3,12 @@ package com.fzm.common.service; ...@@ -3,9 +3,12 @@ package com.fzm.common.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.fzm.common.entity.CopyrightApply; import com.fzm.common.entity.CopyrightApply;
import com.fzm.common.entity.dto.CopyrightDTO; import com.fzm.common.entity.dto.CopyrightDTO;
import com.fzm.common.entity.vo.CopyrightApplyVo;
import com.fzm.common.entity.vo.CopyrightVo; import com.fzm.common.entity.vo.CopyrightVo;
import com.github.pagehelper.PageInfo;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException;
/** /**
* @author tangtuo * @author tangtuo
...@@ -31,12 +34,12 @@ public interface CopyrightApplyService extends IService<CopyrightApply> { ...@@ -31,12 +34,12 @@ public interface CopyrightApplyService extends IService<CopyrightApply> {
List<CopyrightApply> list(Integer userId, Integer state); List<CopyrightApply> list(Integer userId, Integer state);
/** /**
* *
* *
* @param id * @param id
* @return * @return
*/ */
Boolean reject(Integer id); Boolean withdraw(Integer id);
/** /**
...@@ -53,5 +56,43 @@ public interface CopyrightApplyService extends IService<CopyrightApply> { ...@@ -53,5 +56,43 @@ public interface CopyrightApplyService extends IService<CopyrightApply> {
* @param id * @param id
* @return * @return
*/ */
CopyrightVo getDetail(Integer id); CopyrightVo getDetail(Integer id) throws ExecutionException, InterruptedException;
/**
* 修改
*
* @param copyrightDTO
*/
Boolean update(CopyrightDTO copyrightDTO);
/**
* 分页查询
*
* @param pageNum
* @param pageSize
* @param telephone
* @param serialNum
* @param registerState
* @param from
* @param to
* @return
*/
PageInfo<CopyrightApplyVo> pages(Integer pageNum, Integer pageSize, String telephone, String serialNum, Integer registerState, String from, String to);
/**
* 驳回
*
* @param id
* @param rejectReason
* @return
*/
boolean reject(Integer id, String rejectReason);
/**
* 审核通过
*
* @param id
* @return
*/
boolean pass(Integer id);
} }
...@@ -15,4 +15,6 @@ public interface CopyrightAuthorityRelationService extends IService<CopyrightAut ...@@ -15,4 +15,6 @@ public interface CopyrightAuthorityRelationService extends IService<CopyrightAut
* @param copyrightId * @param copyrightId
*/ */
Integer delByCopyrightId(Integer copyrightId); Integer delByCopyrightId(Integer copyrightId);
int insert(CopyrightAuthorityRelation CopyrightAuthorityRelation);
} }
...@@ -144,4 +144,12 @@ public interface NftService extends IService<Nft> { ...@@ -144,4 +144,12 @@ public interface NftService extends IService<Nft> {
* @return * @return
*/ */
Nft getByNftHash(String nftHash); Nft getByNftHash(String nftHash);
/**
* 查询用户还未申请版权的nft列表
*
* @param userId
* @return
*/
List<CollectionNftVo> listCopyright(Integer userId);
} }
package com.fzm.common.service.impl; package com.fzm.common.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fzm.common.entity.CopyrightApplyOwnerRelation; import com.fzm.common.entity.CopyrightApplyOwnerRelation;
import com.fzm.common.mapper.CopyrightApplyOwnerRelationMapper; import com.fzm.common.mapper.CopyrightApplyOwnerRelationMapper;
import com.fzm.common.service.CopyrightApplyOwnerRelationService; import com.fzm.common.service.CopyrightApplyOwnerRelationService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/** /**
* @author tangtuo * @author tangtuo
* @date 2021/12/13 11:25 * @date 2021/12/13 11:25
*/ */
@Service @Service
public class CopyrightApplyOwnerRelationServiceImpl extends ServiceImpl<CopyrightApplyOwnerRelationMapper, CopyrightApplyOwnerRelation> implements CopyrightApplyOwnerRelationService { public class CopyrightApplyOwnerRelationServiceImpl extends ServiceImpl<CopyrightApplyOwnerRelationMapper, CopyrightApplyOwnerRelation> implements CopyrightApplyOwnerRelationService {
@Resource
private CopyrightApplyOwnerRelationMapper copyrightApplyOwnerRelationMapper;
@Override
public Integer delByCopyrightId(Integer copyrightId) {
UpdateWrapper<CopyrightApplyOwnerRelation> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("copyright_id", copyrightId);
return copyrightApplyOwnerRelationMapper.delete(updateWrapper);
}
@Override
public List<CopyrightApplyOwnerRelation> getByCopyrightId(Integer copyrightId) {
QueryWrapper<CopyrightApplyOwnerRelation> wrapper = new QueryWrapper<>();
wrapper.eq("copyright_id", copyrightId);
return this.list(wrapper);
}
} }
package com.fzm.common.service.impl; package com.fzm.common.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fzm.common.constant.SystemConstant; import com.fzm.common.constant.SystemConstant;
import com.fzm.common.entity.*; import com.fzm.common.entity.*;
import com.fzm.common.entity.dto.CopyrightDTO; import com.fzm.common.entity.dto.CopyrightDTO;
import com.fzm.common.entity.vo.CopyrightApplyVo;
import com.fzm.common.entity.vo.CopyrightVo; import com.fzm.common.entity.vo.CopyrightVo;
import com.fzm.common.enums.CopyrightApplyStateEnum; import com.fzm.common.enums.CopyrightApplyStateEnum;
import com.fzm.common.enums.ResultCode; import com.fzm.common.enums.ResultCode;
import com.fzm.common.exception.GlobalException; import com.fzm.common.exception.GlobalException;
import com.fzm.common.mapper.CopyrightApplyMapper; import com.fzm.common.mapper.CopyrightApplyMapper;
import com.fzm.common.service.*; import com.fzm.common.service.*;
import com.fzm.common.utils.JwtUtil;
import com.fzm.common.utils.OssUtil; import com.fzm.common.utils.OssUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/** /**
* @author tangtuo * @author tangtuo
...@@ -58,6 +66,9 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper, ...@@ -58,6 +66,9 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper,
@Resource @Resource
private OssUtil ossUtil; private OssUtil ossUtil;
@Resource
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Override @Override
public Integer submit(CopyrightDTO copyrightDTO) { public Integer submit(CopyrightDTO copyrightDTO) {
// 判断此nft是否属于当前登录用户所有 // 判断此nft是否属于当前登录用户所有
...@@ -89,7 +100,7 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper, ...@@ -89,7 +100,7 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper,
// 保存著作权人信息 // 保存著作权人信息
ArrayList<CopyrightApplyOwnerRelation> owners = new ArrayList<>(); ArrayList<CopyrightApplyOwnerRelation> owners = new ArrayList<>();
for (Integer ownerId : copyrightDTO.getOwnerIds()) { for (Integer ownerId : copyrightDTO.getOwnerIds()) {
owners.add(new CopyrightApplyOwnerRelation(copyrightApply.getId(), ownerId)); owners.add(new CopyrightApplyOwnerRelation(copyrightApply.getId(), copyrightOwnerService.getById(ownerId)));
} }
copyrightApplyOwnerRelationService.saveBatch(owners); copyrightApplyOwnerRelationService.saveBatch(owners);
// 保存作者信息 // 保存作者信息
...@@ -116,15 +127,15 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper, ...@@ -116,15 +127,15 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper,
} }
@Override @Override
public Boolean reject(Integer id) { public Boolean withdraw(Integer id) {
CopyrightApply copyright = getById(id); CopyrightApply copyright = getById(id);
if (copyright == null) { if (copyright == null) {
throw GlobalException.newException(ResultCode.DATA_ERROR, "此版权登记记录不存在,请核对后重试"); throw GlobalException.newException(ResultCode.DATA_ERROR, "此版权登记记录不存在,请核对后重试");
} }
if (CopyrightApplyStateEnum.TO_BE_REVIEWED.getCode() != copyright.getRegisterState()) { if (CopyrightApplyStateEnum.TO_BE_REVIEWED.getCode() != copyright.getRegisterState()) {
throw GlobalException.newException(ResultCode.OPERATION_FAILED, "此版权申请记录已提交,无法回"); throw GlobalException.newException(ResultCode.OPERATION_FAILED, "此版权申请记录已提交,无法回");
} }
copyright.setRegisterState(CopyrightApplyStateEnum.REJECTED.getCode()); copyright.setRegisterState(CopyrightApplyStateEnum.WITHDRAW.getCode());
return updateById(copyright); return updateById(copyright);
} }
...@@ -135,10 +146,11 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper, ...@@ -135,10 +146,11 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper,
if (copyright == null) { if (copyright == null) {
throw GlobalException.newException(ResultCode.DATA_ERROR, "此版权登记记录不存在,请核对后重试"); throw GlobalException.newException(ResultCode.DATA_ERROR, "此版权登记记录不存在,请核对后重试");
} }
// 只有驳回和登记失败的才能删除 // 只有撤回、驳回和登记失败的才能删除
if (CopyrightApplyStateEnum.REJECTED.getCode() != copyright.getRegisterState() && if (CopyrightApplyStateEnum.WITHDRAW.getCode() != copyright.getRegisterState() &&
CopyrightApplyStateEnum.REJECTED.getCode() != copyright.getRegisterState() &&
CopyrightApplyStateEnum.FAILED.getCode() != copyright.getRegisterState()) { CopyrightApplyStateEnum.FAILED.getCode() != copyright.getRegisterState()) {
throw GlobalException.newException(ResultCode.OPERATION_FAILED, "只有驳回或登记失败的版权记录才能删除"); throw GlobalException.newException(ResultCode.OPERATION_FAILED, "当前版权记录不能被删除");
} }
// 删除权力取得方式的附件 // 删除权力取得方式的附件
if (StringUtils.isNotBlank(copyright.getAuthorityAcquireMode())) { if (StringUtils.isNotBlank(copyright.getAuthorityAcquireMode())) {
...@@ -154,25 +166,141 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper, ...@@ -154,25 +166,141 @@ public class CopyrightApplyServiceImpl extends ServiceImpl<CopyrightApplyMapper,
copyrightAuthorService.delByCopyrightId(id); copyrightAuthorService.delByCopyrightId(id);
// 删除版权权力拥有情况 // 删除版权权力拥有情况
copyrightAuthorityRelationService.delByCopyrightId(id); copyrightAuthorityRelationService.delByCopyrightId(id);
// 删除版权和著作权人关联关系
copyrightApplyOwnerRelationService.delByCopyrightId(id);
return copyrightApplyMapper.deleteById(id) > 0; return copyrightApplyMapper.deleteById(id) > 0;
} }
@Override @Override
public CopyrightVo getDetail(Integer id) { public CopyrightVo getDetail(Integer id) throws ExecutionException, InterruptedException {
// 使用异步编排查询
CompletableFuture<CopyrightVo> applyFuture = CompletableFuture.supplyAsync(() -> {
CopyrightApply copyrightApply = getById(id); CopyrightApply copyrightApply = getById(id);
CopyrightVo copyrightVo = new CopyrightVo(copyrightApply); return new CopyrightVo(copyrightApply);
}, threadPoolTaskExecutor);
CompletableFuture<Void> filesFuture = applyFuture.thenAcceptAsync((result) -> {
// 查询附件列表 // 查询附件列表
List<CopyrightFile> files = copyrightFileService.getByCopyrightId(id); List<CopyrightFile> files = copyrightFileService.getByCopyrightId(id);
copyrightVo.setFiles(files); result.setFiles(files);
}, threadPoolTaskExecutor);
CompletableFuture<Void> authorsFuture = applyFuture.thenAcceptAsync((result) -> {
// 查询作者列表 // 查询作者列表
List<CopyrightAuthor> authors = copyrightAuthorService.getByCopyrightId(id); List<CopyrightAuthor> authors = copyrightAuthorService.getByCopyrightId(id);
copyrightVo.setAuthors(authors); result.setAuthors(authors);
}, threadPoolTaskExecutor);
CompletableFuture<Void> ownerFuture = applyFuture.thenAcceptAsync((result) -> {
// 查询著作权人列表 // 查询著作权人列表
List<CopyrightOwner> owners = copyrightOwnerService.getByCopyrightId(id); List<CopyrightApplyOwnerRelation> owners = copyrightApplyOwnerRelationService.getByCopyrightId(id);
copyrightVo.setOwners(owners); result.setOwners(owners);
}, threadPoolTaskExecutor);
CompletableFuture<Void> authoritiesFuture = applyFuture.thenAcceptAsync((result) -> {
// 查询权力列表 // 查询权力列表
List<Authority> authorities = authorityService.getByCopyrightId(id); List<Authority> authorities = authorityService.getByCopyrightId(id);
copyrightVo.setAuthorities(authorities); result.setAuthorities(authorities);
return copyrightVo; }, threadPoolTaskExecutor);
// 等所有异步任务都完成以后返回结果
CompletableFuture.allOf(applyFuture, filesFuture, authorsFuture, ownerFuture, authoritiesFuture).get();
return applyFuture.get();
}
@Override
public Boolean update(CopyrightDTO copyrightDTO) {
// 只有驳回和登记失败的才能编辑
CopyrightApply copyright = this.getById(copyrightDTO.getId());
if (CopyrightApplyStateEnum.REJECTED.getCode() != copyright.getRegisterState() &&
CopyrightApplyStateEnum.FAILED.getCode() != copyright.getRegisterState()) {
throw GlobalException.newException(ResultCode.OPERATION_FAILED, "只有驳回或登记失败的版权记录才能编辑");
}
CopyrightApply copyrightApply = new CopyrightApply(copyrightDTO);
if (CollectionUtil.isNotEmpty(copyrightDTO.getFiles())) {
copyrightFileService.delByCopyrightId(copyrightDTO.getId());
ArrayList<CopyrightFile> files = new ArrayList<>();
for (CopyrightDTO.File file : copyrightDTO.getFiles()) {
CopyrightFile copyrightFile = new CopyrightFile(file);
copyrightFile.setNftHash(copyrightApply.getNftHash());
copyrightFile.setCopyrightId(copyrightApply.getId());
files.add(copyrightFile);
}
copyrightFileService.saveBatch(files);
}
if (CollectionUtil.isNotEmpty(copyrightDTO.getAuthors())) {
// 删除作者信息
copyrightAuthorService.delByCopyrightId(copyrightDTO.getId());
// 保存作者信息
ArrayList<CopyrightAuthor> authors = new ArrayList<>();
for (CopyrightDTO.Author author : copyrightDTO.getAuthors()) {
CopyrightAuthor copyrightAuthor = new CopyrightAuthor(author);
copyrightAuthor.setCopyrightId(copyrightApply.getId());
authors.add(copyrightAuthor);
}
copyrightAuthorService.saveBatch(authors);
}
if (CollectionUtil.isNotEmpty(copyrightDTO.getAuthorityIds())) {
// 删除权力信息
copyrightAuthorityRelationService.delByCopyrightId(copyrightDTO.getId());
// 保存权力信息
ArrayList<CopyrightAuthorityRelation> relations = new ArrayList<>();
for (Integer authorityId : copyrightDTO.getAuthorityIds()) {
CopyrightAuthorityRelation relation = new CopyrightAuthorityRelation(copyrightApply.getId(), authorityId);
relations.add(relation);
}
copyrightAuthorityRelationService.saveBatch(relations);
}
if (CollectionUtil.isNotEmpty(copyrightDTO.getOwnerIds())) {
// 删除著作权人信息
copyrightApplyOwnerRelationService.delByCopyrightId(copyrightDTO.getId());
// 保存著作权人信息
ArrayList<CopyrightApplyOwnerRelation> owners = new ArrayList<>();
for (Integer ownerId : copyrightDTO.getOwnerIds()) {
owners.add(new CopyrightApplyOwnerRelation(copyrightApply.getId(), copyrightOwnerService.getById(ownerId)));
}
copyrightApplyOwnerRelationService.saveBatch(owners);
}
return updateById(copyrightApply);
}
@Override
public PageInfo<CopyrightApplyVo> pages(Integer pageNum, Integer pageSize, String telephone, String serialNum, Integer registerState, String from, String to) {
PageHelper.startPage(pageNum, pageSize);
DateTime startDate = null;
DateTime endDate = null;
if (StringUtils.isNotBlank(from)) {
startDate = DateUtil.parse(from + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
}
if (StringUtils.isNotBlank(to)) {
endDate = DateUtil.parse(to + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
} }
List<CopyrightApplyVo> list = copyrightApplyMapper.pages(telephone, serialNum, registerState, startDate, endDate);
return new PageInfo<>(list);
}
@Override
public boolean reject(Integer id, String rejectReason) {
CopyrightApply copyright = getById(id);
if (copyright == null) {
throw GlobalException.newException(ResultCode.DATA_ERROR, "此版权登记记录不存在,请核对后重试");
}
if (CopyrightApplyStateEnum.TO_BE_REVIEWED.getCode() != copyright.getRegisterState()) {
throw GlobalException.newException(ResultCode.OPERATION_FAILED, "此版权申请记录无法驳回");
}
copyright.setRegisterState(CopyrightApplyStateEnum.REJECTED.getCode());
copyright.setRejectReason(rejectReason);
return updateById(copyright);
}
@Override
public boolean pass(Integer id) {
CopyrightApply copyright = getById(id);
if (copyright == null) {
throw GlobalException.newException(ResultCode.DATA_ERROR, "此版权登记记录不存在,请核对后重试");
}
if (CopyrightApplyStateEnum.TO_BE_REVIEWED.getCode() != copyright.getRegisterState()) {
throw GlobalException.newException(ResultCode.OPERATION_FAILED, "此版权申请记录的状态不是待提交,无法审核通过");
}
// todo 版权申请
copyright.setRegisterState(CopyrightApplyStateEnum.SUCCEEDED.getCode());
copyright.setRejectReason("");
return updateById(copyright);
}
} }
...@@ -6,6 +6,7 @@ import com.fzm.common.entity.CopyrightAuthorityRelation; ...@@ -6,6 +6,7 @@ import com.fzm.common.entity.CopyrightAuthorityRelation;
import com.fzm.common.mapper.CopyrightAuthorityRelationMapper; import com.fzm.common.mapper.CopyrightAuthorityRelationMapper;
import com.fzm.common.service.CopyrightAuthorityRelationService; import com.fzm.common.service.CopyrightAuthorityRelationService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -25,4 +26,16 @@ public class CopyrightAuthorityRelationServiceImpl extends ServiceImpl<Copyright ...@@ -25,4 +26,16 @@ public class CopyrightAuthorityRelationServiceImpl extends ServiceImpl<Copyright
updateWrapper.eq("copyrightId", copyrightId); updateWrapper.eq("copyrightId", copyrightId);
return copyrightAuthorityRelationMapper.delete(updateWrapper); return copyrightAuthorityRelationMapper.delete(updateWrapper);
} }
@Override
@Transactional(rollbackFor = RuntimeException.class)
public int insert(CopyrightAuthorityRelation copyrightAuthorityRelation) {
this.save(copyrightAuthorityRelation);
return 10 / 0;
}
protected int insert2(CopyrightAuthorityRelation copyrightAuthorityRelation) {
this.insert(copyrightAuthorityRelation);
return 0;
}
} }
package com.fzm.common.service.impl; package com.fzm.common.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fzm.common.entity.Draft; import com.fzm.common.entity.Draft;
...@@ -43,7 +44,7 @@ public class DraftServiceImpl extends ServiceImpl<DraftMapper, Draft> implements ...@@ -43,7 +44,7 @@ public class DraftServiceImpl extends ServiceImpl<DraftMapper, Draft> implements
if (draft == null) { if (draft == null) {
throw GlobalException.newException(ResultCode.FAILED, "删除草稿失败,此记录不存在"); throw GlobalException.newException(ResultCode.FAILED, "删除草稿失败,此记录不存在");
} }
CopyrightDTO copyrightDTO = JsonUtil.toObject(draft.getJson(), CopyrightDTO.class); CopyrightDTO copyrightDTO = JSONUtil.toBean(draft.getJson(), CopyrightDTO.class);
if (copyrightDTO != null) { if (copyrightDTO != null) {
// 删除权力取得方式的附件权力 // 删除权力取得方式的附件权力
if (StringUtils.isNotBlank(copyrightDTO.getAuthorityAcquireMode())) { if (StringUtils.isNotBlank(copyrightDTO.getAuthorityAcquireMode())) {
......
...@@ -229,6 +229,11 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe ...@@ -229,6 +229,11 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
return getOne(queryWrapper); return getOne(queryWrapper);
} }
@Override
public List<CollectionNftVo> listCopyright(Integer userId) {
return nftMapper.listCopyright(userId);
}
private String getCodeType(String type) { private String getCodeType(String type) {
switch (type) { switch (type) {
case "sms": case "sms":
......
...@@ -11,7 +11,38 @@ ...@@ -11,7 +11,38 @@
and register_state != 4 and register_state != 4
</if> </if>
<if test="state == 2"> <if test="state == 2">
and register_state == 4 and register_state = 4
</if>
</where>
</select>
<select id="pages" resultType="com.fzm.common.entity.vo.CopyrightApplyVo">
SELECT c.id,
c.user_id,
c.serial_num,
c.register_state,
c.opus_name,
c.nft_hash,
c.create_date,
u.nickname,
u.telephone
FROM tb_copyright_apply c
INNER JOIN tb_user u ON c.user_id = u.id
<where>
c.register_state != -1
<if test="telephone!= null and telephone != ''">
and u.telephone = #{telephone}
</if>
<if test="serialNum != null and serialNum != ''">
and c.serial_num = #{serialNum}
</if>
<if test="registerState != null">
and c.register_state = #{registerState}
</if>
<if test="startDate != null">
and c.create_date >= #{startDate}
</if>
<if test="endDate != null">
and c.create_date &lt;= #{endDate}
</if> </if>
</where> </where>
</select> </select>
......
...@@ -77,6 +77,7 @@ ...@@ -77,6 +77,7 @@
a.name, a.name,
a.cover, a.cover,
a.nft_id, a.nft_id,
a.nft_hash,
a.file_url, a.file_url,
a.is_commemorate, a.is_commemorate,
b.category_name as category b.category_name as category
...@@ -87,5 +88,21 @@ ...@@ -87,5 +88,21 @@
</if> </if>
order by a.publish_time desc order by a.publish_time desc
</select> </select>
<select id="listCopyright" resultType="com.fzm.common.entity.vo.CollectionNftVo">
select a.id,
a.name,
a.cover,
a.nft_id,
a.nft_hash,
a.file_url,
a.is_commemorate,
b.category_name as category
from tb_nft a
left join tb_category b on a.category_id = b.id
where a.user_id = #{userId}
and a.nft_hash != ''
and nft_hash not in (select nft_hash from tb_copyright_apply where user_id = #{userId}
and register_state in (2, 4))
</select>
</mapper> </mapper>
\ No newline at end of file
2021-12-15 17:29:02.714 [main] INFO com.fzm.portal.LyPortalApplicationTests-Starting LyPortalApplicationTests on LAPTOP-AT8CNAMK with PID 9036 (started by tangtuo in D:\workspace\fzm-joying\joying-portal)
2021-12-15 17:29:02.715 [main] INFO com.fzm.portal.LyPortalApplicationTests-The following profiles are active: dev
2021-12-15 17:29:03.704 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Multiple Spring Data modules found, entering strict repository configuration mode!
2021-12-15 17:29:03.707 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2021-12-15 17:29:03.742 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Finished Spring Data repository scanning in 14ms. Found 0 Redis repository interfaces.
2021-12-15 17:29:04.847 [main] INFO c.a.d.s.b.a.DruidDataSourceAutoConfigure-Init DruidDataSource
2021-12-15 17:29:06.439 [main] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} inited
2021-12-15 17:29:08.975 [main] INFO org.redisson.Version-Redisson 3.16.0
2021-12-15 17:29:09.905 [redisson-netty-4-25] INFO o.r.connection.pool.MasterPubSubConnectionPool-1 connections initialized for 172.16.101.135/172.16.101.135:6379
2021-12-15 17:29:09.949 [redisson-netty-4-19] INFO org.redisson.connection.pool.MasterConnectionPool-24 connections initialized for 172.16.101.135/172.16.101.135:6379
2021-12-15 17:29:10.132 [main] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightApplyOwnerRelation.
2021-12-15 17:29:10.246 [main] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightAuthorityRelation.
2021-12-15 17:29:10.330 [main] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Initializing ExecutorService 'threadPoolTaskExecutor'
2021-12-15 17:29:11.348 [main] INFO s.d.s.w.PropertySourcedRequestMappingHandlerMapping-Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2021-12-15 17:29:12.859 [main] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Context refreshed
2021-12-15 17:29:12.889 [main] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Found 1 custom documentation plugin(s)
2021-12-15 17:29:12.930 [main] INFO s.d.spring.web.scanners.ApiListingReferenceScanner-Scanning for api listing references
2021-12-15 17:29:13.105 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_1
2021-12-15 17:29:13.126 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_2
2021-12-15 17:29:13.156 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_3
2021-12-15 17:29:13.198 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_1
2021-12-15 17:29:13.216 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_4
2021-12-15 17:29:13.247 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: addUsingPOST_1
2021-12-15 17:29:13.249 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_1
2021-12-15 17:29:13.257 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_5
2021-12-15 17:29:13.260 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: updateUsingPOST_1
2021-12-15 17:29:13.263 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_2
2021-12-15 17:29:13.270 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_6
2021-12-15 17:29:13.304 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_2
2021-12-15 17:29:13.319 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_7
2021-12-15 17:29:13.328 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: publishUsingPOST_1
2021-12-15 17:29:13.356 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: saveUsingPOST_1
2021-12-15 17:29:13.370 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getDetailUsingGET_1
2021-12-15 17:29:13.374 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_8
2021-12-15 17:29:13.377 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_9
2021-12-15 17:29:13.379 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_3
2021-12-15 17:29:13.381 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: downloadUsingPOST_1
2021-12-15 17:29:13.387 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: uploadUsingPOST_1
2021-12-15 17:29:13.422 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: updateUsingPOST_2
2021-12-15 17:29:13.448 [main] INFO com.fzm.portal.LyPortalApplicationTests-Started LyPortalApplicationTests in 11.093 seconds (JVM running for 12.273)
2021-12-15 17:29:13.689 [main] DEBUG c.f.c.m.CopyrightAuthorityRelationMapper.insert-==> Preparing: INSERT INTO tb_copyright_authority_relation ( copyright_id, authority_id ) VALUES ( ?, ? )
2021-12-15 17:29:13.815 [main] DEBUG c.f.c.m.CopyrightAuthorityRelationMapper.insert-==> Parameters: 3(Integer), 5(Integer)
2021-12-15 17:29:13.827 [main] DEBUG c.f.c.m.CopyrightAuthorityRelationMapper.insert-<== Updates: 1
2021-12-15 17:29:13.870 [SpringContextShutdownHook] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Shutting down ExecutorService 'threadPoolTaskExecutor'
2021-12-15 17:29:13.931 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closing ...
2021-12-15 17:29:13.938 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closed
2021-12-15 17:30:39.083 [main] INFO com.fzm.portal.LyPortalApplicationTests-Starting LyPortalApplicationTests on LAPTOP-AT8CNAMK with PID 13380 (started by tangtuo in D:\workspace\fzm-joying\joying-portal)
2021-12-15 17:30:39.084 [main] INFO com.fzm.portal.LyPortalApplicationTests-The following profiles are active: dev
2021-12-15 17:30:40.039 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Multiple Spring Data modules found, entering strict repository configuration mode!
2021-12-15 17:30:40.041 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2021-12-15 17:30:40.069 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Finished Spring Data repository scanning in 14ms. Found 0 Redis repository interfaces.
2021-12-15 17:30:41.140 [main] INFO c.a.d.s.b.a.DruidDataSourceAutoConfigure-Init DruidDataSource
2021-12-15 17:30:43.566 [main] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} inited
2021-12-15 17:30:45.945 [main] INFO org.redisson.Version-Redisson 3.16.0
2021-12-15 17:30:46.900 [redisson-netty-4-24] INFO o.r.connection.pool.MasterPubSubConnectionPool-1 connections initialized for 172.16.101.135/172.16.101.135:6379
2021-12-15 17:30:47.002 [redisson-netty-4-19] INFO org.redisson.connection.pool.MasterConnectionPool-24 connections initialized for 172.16.101.135/172.16.101.135:6379
2021-12-15 17:30:47.186 [main] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightApplyOwnerRelation.
2021-12-15 17:30:47.308 [main] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightAuthorityRelation.
2021-12-15 17:30:47.389 [main] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Initializing ExecutorService 'threadPoolTaskExecutor'
2021-12-15 17:30:48.399 [main] INFO s.d.s.w.PropertySourcedRequestMappingHandlerMapping-Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2021-12-15 17:30:49.771 [main] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Context refreshed
2021-12-15 17:30:49.806 [main] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Found 1 custom documentation plugin(s)
2021-12-15 17:30:49.861 [main] INFO s.d.spring.web.scanners.ApiListingReferenceScanner-Scanning for api listing references
2021-12-15 17:30:50.060 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_1
2021-12-15 17:30:50.079 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_2
2021-12-15 17:30:50.106 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_3
2021-12-15 17:30:50.149 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_1
2021-12-15 17:30:50.168 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_4
2021-12-15 17:30:50.197 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: addUsingPOST_1
2021-12-15 17:30:50.199 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_1
2021-12-15 17:30:50.205 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_5
2021-12-15 17:30:50.207 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: updateUsingPOST_1
2021-12-15 17:30:50.210 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_2
2021-12-15 17:30:50.215 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_6
2021-12-15 17:30:50.239 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_2
2021-12-15 17:30:50.253 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_7
2021-12-15 17:30:50.261 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: publishUsingPOST_1
2021-12-15 17:30:50.288 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: saveUsingPOST_1
2021-12-15 17:30:50.303 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getDetailUsingGET_1
2021-12-15 17:30:50.308 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_8
2021-12-15 17:30:50.314 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_9
2021-12-15 17:30:50.316 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_3
2021-12-15 17:30:50.318 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: downloadUsingPOST_1
2021-12-15 17:30:50.326 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: uploadUsingPOST_1
2021-12-15 17:30:50.394 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: updateUsingPOST_2
2021-12-15 17:30:50.419 [main] INFO com.fzm.portal.LyPortalApplicationTests-Started LyPortalApplicationTests in 11.702 seconds (JVM running for 12.828)
2021-12-15 17:30:50.656 [main] DEBUG c.f.c.m.CopyrightAuthorityRelationMapper.insert-==> Preparing: INSERT INTO tb_copyright_authority_relation ( copyright_id, authority_id ) VALUES ( ?, ? )
2021-12-15 17:30:50.809 [main] DEBUG c.f.c.m.CopyrightAuthorityRelationMapper.insert-==> Parameters: 3(Integer), 5(Integer)
2021-12-15 17:30:50.823 [main] DEBUG c.f.c.m.CopyrightAuthorityRelationMapper.insert-<== Updates: 1
2021-12-15 17:30:50.848 [SpringContextShutdownHook] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Shutting down ExecutorService 'threadPoolTaskExecutor'
2021-12-15 17:30:50.898 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closing ...
2021-12-15 17:30:50.903 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closed
...@@ -6,7 +6,6 @@ import org.springframework.boot.SpringApplication; ...@@ -6,7 +6,6 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
@EnableSwagger2Doc @EnableSwagger2Doc
@EnableCaching @EnableCaching
@SpringBootApplication(scanBasePackages = {"com.fzm.portal", "com.fzm.common"}) @SpringBootApplication(scanBasePackages = {"com.fzm.portal", "com.fzm.common"})
......
...@@ -8,13 +8,13 @@ import com.fzm.common.model.ResponseModel; ...@@ -8,13 +8,13 @@ import com.fzm.common.model.ResponseModel;
import com.fzm.common.service.CopyrightApplyService; import com.fzm.common.service.CopyrightApplyService;
import com.fzm.common.utils.JwtUtil; import com.fzm.common.utils.JwtUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException;
/** /**
* @author tangtuo * @author tangtuo
...@@ -30,7 +30,7 @@ public class CopyrightApplyController { ...@@ -30,7 +30,7 @@ public class CopyrightApplyController {
private CopyrightApplyService copyrightApplyService; private CopyrightApplyService copyrightApplyService;
@PostMapping("/submit") @PostMapping("/submit")
@ApiModelProperty("/提交申请") @ApiOperation("/提交申请")
public ResponseModel<Integer> submit(@RequestBody CopyrightDTO copyrightDTO) { public ResponseModel<Integer> submit(@RequestBody CopyrightDTO copyrightDTO) {
Integer copyrightId = copyrightApplyService.submit(copyrightDTO); Integer copyrightId = copyrightApplyService.submit(copyrightDTO);
return ResponseModel.success(copyrightId); return ResponseModel.success(copyrightId);
...@@ -45,10 +45,10 @@ public class CopyrightApplyController { ...@@ -45,10 +45,10 @@ public class CopyrightApplyController {
return ResponseModel.success(list); return ResponseModel.success(list);
} }
@PostMapping(value = "/reject") @PostMapping(value = "/withdraw")
@ApiOperation(value = "回") @ApiOperation(value = "回")
public ResponseModel<Boolean> reject(@RequestParam Integer id) { public ResponseModel<Boolean> withdraw(@RequestParam Integer id) {
Boolean result = copyrightApplyService.reject(id); Boolean result = copyrightApplyService.withdraw(id);
return ResponseModel.success(result); return ResponseModel.success(result);
} }
...@@ -61,9 +61,21 @@ public class CopyrightApplyController { ...@@ -61,9 +61,21 @@ public class CopyrightApplyController {
@GetMapping(value = "/detail") @GetMapping(value = "/detail")
@ApiOperation(value = "获取详情") @ApiOperation(value = "获取详情")
public ResponseModel<CopyrightVo> getById(@RequestParam Integer id) { public ResponseModel<CopyrightVo> getById(@RequestParam Integer id) throws ExecutionException, InterruptedException {
CopyrightVo copyrightVo = copyrightApplyService.getDetail(id); CopyrightVo copyrightVo = copyrightApplyService.getDetail(id);
return ResponseModel.success(copyrightVo); return ResponseModel.success(copyrightVo);
} }
@PostMapping(value = "/update")
@ApiOperation(value = "编辑")
public ResponseModel<Boolean> update(@RequestBody CopyrightDTO copyrightDTO) {
return ResponseModel.success(copyrightApplyService.update(copyrightDTO));
}
@GetMapping(value = "/content")
@ApiOperation(value = "获取json串")
public ResponseModel<String> getContent(@RequestParam Integer id) {
String content = copyrightApplyService.getById(id).getContent();
return ResponseModel.success(content);
}
} }
...@@ -32,7 +32,7 @@ public class CopyrightOwnerController { ...@@ -32,7 +32,7 @@ public class CopyrightOwnerController {
@PostMapping(value = "/add") @PostMapping(value = "/add")
@ApiOperation(value = "新增著作权人") @ApiOperation(value = "新增著作权人")
public ResponseModel<Integer> add(@RequestHeader(value = "Authorization") String token, @Validated @RequestBody CopyrightOwner owner) { public ResponseModel<Integer> add(@RequestHeader String Authorization, @Validated @RequestBody CopyrightOwner owner) {
// 如果著作权人是个人的话,身份证正反面照片 著作权人手持身份证照片等信息必传 // 如果著作权人是个人的话,身份证正反面照片 著作权人手持身份证照片等信息必传
if (owner.getType().equals(OwnerTypeEnum.PERSON.getType())) { if (owner.getType().equals(OwnerTypeEnum.PERSON.getType())) {
if (StringUtils.isAnyBlank(owner.getBackPhoto(), owner.getPositivePhoto(), owner.getPersonalPhoto())) { if (StringUtils.isAnyBlank(owner.getBackPhoto(), owner.getPositivePhoto(), owner.getPersonalPhoto())) {
...@@ -44,7 +44,7 @@ public class CopyrightOwnerController { ...@@ -44,7 +44,7 @@ public class CopyrightOwnerController {
throw GlobalException.newException(ResultCode.VALIDATE_FAILED); throw GlobalException.newException(ResultCode.VALIDATE_FAILED);
} }
} }
Integer userId = JwtUtil.getUserIdFromToken(token); Integer userId = JwtUtil.getUserIdFromToken(Authorization);
owner.setUserId(userId); owner.setUserId(userId);
copyrightOwnerService.save(owner); copyrightOwnerService.save(owner);
return ResponseModel.success(owner.getId()); return ResponseModel.success(owner.getId());
...@@ -57,4 +57,17 @@ public class CopyrightOwnerController { ...@@ -57,4 +57,17 @@ public class CopyrightOwnerController {
List<CopyrightOwner> list = copyrightOwnerService.getByUserId(userId); List<CopyrightOwner> list = copyrightOwnerService.getByUserId(userId);
return ResponseModel.success(list); return ResponseModel.success(list);
} }
@PostMapping("/update")
@ApiOperation(value = "修改")
public ResponseModel<Boolean> update(@Validated @RequestBody CopyrightOwner owner) {
return ResponseModel.success(copyrightOwnerService.updateById(owner));
}
@PostMapping("/delete")
@ApiOperation(value = "删除")
public ResponseModel<Boolean> delete(@RequestParam Integer id) {
return ResponseModel.success(copyrightOwnerService.removeById(id));
}
} }
...@@ -36,8 +36,7 @@ public class DraftController { ...@@ -36,8 +36,7 @@ public class DraftController {
@GetMapping("/list") @GetMapping("/list")
@ApiOperation(value = "查询我的草稿列表") @ApiOperation(value = "查询我的草稿列表")
public ResponseModel<List<Draft>> list(@RequestHeader(value = "" + public ResponseModel<List<Draft>> list(@RequestHeader(value = "Authorization") String token) {
"") String token) {
Integer userId = JwtUtil.getUserIdFromToken(token); Integer userId = JwtUtil.getUserIdFromToken(token);
List<Draft> list = draftService.getByUserId(userId); List<Draft> list = draftService.getByUserId(userId);
return ResponseModel.success(list); return ResponseModel.success(list);
......
...@@ -202,4 +202,10 @@ public class NftController { ...@@ -202,4 +202,10 @@ public class NftController {
return ResponseModel.success(result); return ResponseModel.success(result);
} }
@GetMapping(value = "/list/copyright")
public ResponseModel<List<CollectionNftVo>> listCopyright(@RequestHeader(value = "Authorization") String token){
Integer userId = JwtUtil.getUserIdFromToken(token);
List<CollectionNftVo> list = nftService.listCopyright(userId);
return ResponseModel.success(list);
}
} }
...@@ -2,8 +2,11 @@ package com.fzm.portal; ...@@ -2,8 +2,11 @@ package com.fzm.portal;
import cn.fzm.chain.simplesdk.client.ParaChainClient; import cn.fzm.chain.simplesdk.client.ParaChainClient;
import com.fzm.common.constant.RedisConstant; import com.fzm.common.constant.RedisConstant;
import com.fzm.common.entity.CopyrightAuthorityRelation;
import com.fzm.common.enums.ResultCode; import com.fzm.common.enums.ResultCode;
import com.fzm.common.exception.GlobalException; import com.fzm.common.exception.GlobalException;
import com.fzm.common.service.CopyrightAuthorityRelationService;
import com.fzm.common.service.impl.CopyrightAuthorityRelationServiceImpl;
import com.fzm.common.utils.JsonUtil; import com.fzm.common.utils.JsonUtil;
import com.fzm.common.utils.RedisUtil; import com.fzm.common.utils.RedisUtil;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -36,10 +39,20 @@ class LyPortalApplicationTests { ...@@ -36,10 +39,20 @@ class LyPortalApplicationTests {
@Resource @Resource
RedissonClient redisson; RedissonClient redisson;
@Resource
private CopyrightAuthorityRelationServiceImpl copyrightAuthorityRelationService;
@Test
void test1() {
CopyrightAuthorityRelation copyrightAuthorityRelation = new CopyrightAuthorityRelation(3, 5);
copyrightAuthorityRelationService.insert(copyrightAuthorityRelation);
}
@Test @Test
void contextLoads() { void contextLoads() {
System.out.println("redisson = " + redisson); System.out.println("redisson = " + redisson);
RSemaphore semaphore = redisson.getSemaphore("banner09"); RSemaphore semaphore = redisson.getSemaphore("banner09");
boolean b = semaphore.trySetPermits(10); boolean b = semaphore.trySetPermits(10);
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
boolean acquire = semaphore.tryAcquire(); boolean acquire = semaphore.tryAcquire();
......
...@@ -573,3 +573,306 @@ Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '3 ...@@ -573,3 +573,306 @@ Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '3
2021-12-13 18:02:56.159 [SpringContextShutdownHook] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Shutting down ExecutorService 'applicationTaskExecutor' 2021-12-13 18:02:56.159 [SpringContextShutdownHook] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Shutting down ExecutorService 'applicationTaskExecutor'
2021-12-13 18:02:56.266 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closing ... 2021-12-13 18:02:56.266 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closing ...
2021-12-13 18:02:56.296 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closed 2021-12-13 18:02:56.296 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closed
2021-12-13 18:03:01.921 [main] INFO com.fzm.portal.JoyingPortalApplication-Starting JoyingPortalApplication on LAPTOP-AT8CNAMK with PID 184588 (D:\workspace\fzm-joying\joying-portal\target\classes started by tangtuo in D:\workspace\fzm-joying)
2021-12-13 18:03:01.923 [main] INFO com.fzm.portal.JoyingPortalApplication-The following profiles are active: dev
2021-12-13 18:03:02.905 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Multiple Spring Data modules found, entering strict repository configuration mode!
2021-12-13 18:03:02.907 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2021-12-13 18:03:02.931 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Finished Spring Data repository scanning in 12ms. Found 0 Redis repository interfaces.
2021-12-13 18:03:03.696 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer-Tomcat initialized with port(s): 8001 (http)
2021-12-13 18:03:03.704 [main] INFO org.apache.coyote.http11.Http11NioProtocol-Initializing ProtocolHandler ["http-nio-8001"]
2021-12-13 18:03:03.705 [main] INFO org.apache.catalina.core.StandardService-Starting service [Tomcat]
2021-12-13 18:03:03.705 [main] INFO org.apache.catalina.core.StandardEngine-Starting Servlet engine: [Apache Tomcat/9.0.35]
2021-12-13 18:03:03.838 [main] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]-Initializing Spring embedded WebApplicationContext
2021-12-13 18:03:03.838 [main] INFO org.springframework.web.context.ContextLoader-Root WebApplicationContext: initialization completed in 1874 ms
2021-12-13 18:03:03.979 [main] INFO c.a.d.s.b.a.DruidDataSourceAutoConfigure-Init DruidDataSource
2021-12-13 18:03:05.277 [main] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} inited
2021-12-13 18:03:06.913 [main] INFO org.redisson.Version-Redisson 3.16.0
2021-12-13 18:03:08.012 [redisson-netty-4-26] INFO o.r.connection.pool.MasterPubSubConnectionPool-1 connections initialized for 172.16.101.135/172.16.101.135:6379
2021-12-13 18:03:08.064 [redisson-netty-4-19] INFO org.redisson.connection.pool.MasterConnectionPool-24 connections initialized for 172.16.101.135/172.16.101.135:6379
2021-12-13 18:03:08.389 [main] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightApplyOwnerRelation.
2021-12-13 18:03:08.456 [main] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightAuthorityRelation.
2021-12-13 18:03:09.165 [main] INFO s.d.s.w.PropertySourcedRequestMappingHandlerMapping-Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2021-12-13 18:03:09.359 [main] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Initializing ExecutorService 'applicationTaskExecutor'
2021-12-13 18:03:09.813 [main] INFO org.apache.coyote.http11.Http11NioProtocol-Starting ProtocolHandler ["http-nio-8001"]
2021-12-13 18:03:09.828 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer-Tomcat started on port(s): 8001 (http) with context path ''
2021-12-13 18:03:09.829 [main] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Context refreshed
2021-12-13 18:03:09.849 [main] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Found 1 custom documentation plugin(s)
2021-12-13 18:03:09.884 [main] INFO s.d.spring.web.scanners.ApiListingReferenceScanner-Scanning for api listing references
2021-12-13 18:03:10.013 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_1
2021-12-13 18:03:10.028 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_2
2021-12-13 18:03:10.048 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_3
2021-12-13 18:03:10.073 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_1
2021-12-13 18:03:10.082 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_4
2021-12-13 18:03:10.100 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: addUsingPOST_1
2021-12-13 18:03:10.103 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_5
2021-12-13 18:03:10.106 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_1
2021-12-13 18:03:10.111 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_6
2021-12-13 18:03:10.131 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_2
2021-12-13 18:03:10.141 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_7
2021-12-13 18:03:10.145 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: publishUsingPOST_1
2021-12-13 18:03:10.163 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: saveUsingPOST_1
2021-12-13 18:03:10.171 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getDetailUsingGET_1
2021-12-13 18:03:10.173 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_8
2021-12-13 18:03:10.177 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_9
2021-12-13 18:03:10.178 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_2
2021-12-13 18:03:10.180 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: downloadUsingPOST_1
2021-12-13 18:03:10.185 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: uploadUsingPOST_1
2021-12-13 18:03:10.231 [main] INFO com.fzm.portal.JoyingPortalApplication-Started JoyingPortalApplication in 8.791 seconds (JVM running for 9.758)
2021-12-13 18:28:07.109 [http-nio-8001-exec-1] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]-Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-12-13 18:28:07.111 [http-nio-8001-exec-1] INFO org.springframework.web.servlet.DispatcherServlet-Initializing Servlet 'dispatcherServlet'
2021-12-13 18:28:07.172 [http-nio-8001-exec-1] INFO org.springframework.web.servlet.DispatcherServlet-Completed initialization in 60 ms
2021-12-13 18:30:42.123 [http-nio-8001-exec-4] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Preparing: SELECT id,telephone,email,password,wallet,nickname,signature,avatar,auth_type,auth_status,is_publish,create_date,update_date,create_time,update_time FROM tb_user WHERE id=?
2021-12-13 18:30:42.270 [http-nio-8001-exec-4] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Parameters: 2(Integer)
2021-12-13 18:30:42.361 [http-nio-8001-exec-4] DEBUG com.fzm.common.mapper.UserMapper.selectById-<== Total: 1
2021-12-13 18:30:42.665 [http-nio-8001-exec-4] ERROR c.f.c.exception.handler.GlobalExceptionHandler-JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1, column: 10] (through reference chain: com.fzm.common.entity.CopyrightOwner["owner"])
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1, column: 10] (through reference chain: com.fzm.common.entity.CopyrightOwner["owner"])
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:245)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:227)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:205)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1, column: 10] (through reference chain: com.fzm.common.entity.CopyrightOwner["owner"])
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1464)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1238)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1148)
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:63)
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:10)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:371)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:164)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4482)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3487)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:239)
... 51 common frames omitted
2021-12-13 18:34:19.374 [SpringContextShutdownHook] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Shutting down ExecutorService 'applicationTaskExecutor'
2021-12-13 18:34:19.571 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closing ...
2021-12-13 18:34:19.579 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closed
2021-12-13 18:34:27.306 [main] INFO com.fzm.portal.JoyingPortalApplication-Starting JoyingPortalApplication on LAPTOP-AT8CNAMK with PID 167224 (D:\workspace\fzm-joying\joying-portal\target\classes started by tangtuo in D:\workspace\fzm-joying)
2021-12-13 18:34:27.308 [main] INFO com.fzm.portal.JoyingPortalApplication-The following profiles are active: dev
2021-12-13 18:34:28.259 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Multiple Spring Data modules found, entering strict repository configuration mode!
2021-12-13 18:34:28.261 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2021-12-13 18:34:28.286 [main] INFO o.s.d.r.config.RepositoryConfigurationDelegate-Finished Spring Data repository scanning in 12ms. Found 0 Redis repository interfaces.
2021-12-13 18:34:29.039 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer-Tomcat initialized with port(s): 8001 (http)
2021-12-13 18:34:29.047 [main] INFO org.apache.coyote.http11.Http11NioProtocol-Initializing ProtocolHandler ["http-nio-8001"]
2021-12-13 18:34:29.048 [main] INFO org.apache.catalina.core.StandardService-Starting service [Tomcat]
2021-12-13 18:34:29.048 [main] INFO org.apache.catalina.core.StandardEngine-Starting Servlet engine: [Apache Tomcat/9.0.35]
2021-12-13 18:34:29.182 [main] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]-Initializing Spring embedded WebApplicationContext
2021-12-13 18:34:29.182 [main] INFO org.springframework.web.context.ContextLoader-Root WebApplicationContext: initialization completed in 1835 ms
2021-12-13 18:34:29.339 [main] INFO c.a.d.s.b.a.DruidDataSourceAutoConfigure-Init DruidDataSource
2021-12-13 18:34:30.779 [main] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} inited
2021-12-13 18:34:32.346 [main] INFO org.redisson.Version-Redisson 3.16.0
2021-12-13 18:34:33.382 [redisson-netty-4-14] INFO o.r.connection.pool.MasterPubSubConnectionPool-1 connections initialized for 172.16.101.135/172.16.101.135:6379
2021-12-13 18:34:33.671 [redisson-netty-4-19] INFO org.redisson.connection.pool.MasterConnectionPool-24 connections initialized for 172.16.101.135/172.16.101.135:6379
2021-12-13 18:34:33.990 [main] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightApplyOwnerRelation.
2021-12-13 18:34:34.061 [main] WARN c.b.mybatisplus.core.metadata.TableInfoHelper-Warn: Could not find @TableId in Class: com.fzm.common.entity.CopyrightAuthorityRelation.
2021-12-13 18:34:34.738 [main] INFO s.d.s.w.PropertySourcedRequestMappingHandlerMapping-Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2021-12-13 18:34:34.935 [main] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Initializing ExecutorService 'applicationTaskExecutor'
2021-12-13 18:34:35.319 [main] INFO org.apache.coyote.http11.Http11NioProtocol-Starting ProtocolHandler ["http-nio-8001"]
2021-12-13 18:34:35.332 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer-Tomcat started on port(s): 8001 (http) with context path ''
2021-12-13 18:34:35.333 [main] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Context refreshed
2021-12-13 18:34:35.357 [main] INFO s.d.s.web.plugins.DocumentationPluginsBootstrapper-Found 1 custom documentation plugin(s)
2021-12-13 18:34:35.387 [main] INFO s.d.spring.web.scanners.ApiListingReferenceScanner-Scanning for api listing references
2021-12-13 18:34:35.510 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_1
2021-12-13 18:34:35.524 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_2
2021-12-13 18:34:35.548 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_3
2021-12-13 18:34:35.576 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_1
2021-12-13 18:34:35.583 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_4
2021-12-13 18:34:35.602 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: addUsingPOST_1
2021-12-13 18:34:35.604 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_5
2021-12-13 18:34:35.608 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_1
2021-12-13 18:34:35.612 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_6
2021-12-13 18:34:35.633 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getByIdUsingGET_2
2021-12-13 18:34:35.643 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_7
2021-12-13 18:34:35.647 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: publishUsingPOST_1
2021-12-13 18:34:35.665 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: saveUsingPOST_1
2021-12-13 18:34:35.673 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: getDetailUsingGET_1
2021-12-13 18:34:35.675 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_8
2021-12-13 18:34:35.678 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: listUsingGET_9
2021-12-13 18:34:35.679 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: deleteUsingPOST_2
2021-12-13 18:34:35.681 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: downloadUsingPOST_1
2021-12-13 18:34:35.684 [main] INFO s.d.s.w.r.operation.CachingOperationNameGenerator-Generating unique operation named: uploadUsingPOST_1
2021-12-13 18:34:35.733 [main] INFO com.fzm.portal.JoyingPortalApplication-Started JoyingPortalApplication in 8.891 seconds (JVM running for 9.871)
2021-12-13 18:36:24.222 [http-nio-8001-exec-1] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/]-Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-12-13 18:36:24.222 [http-nio-8001-exec-1] INFO org.springframework.web.servlet.DispatcherServlet-Initializing Servlet 'dispatcherServlet'
2021-12-13 18:36:24.229 [http-nio-8001-exec-1] INFO org.springframework.web.servlet.DispatcherServlet-Completed initialization in 7 ms
2021-12-13 18:36:24.496 [http-nio-8001-exec-1] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Preparing: SELECT id,telephone,email,password,wallet,nickname,signature,avatar,auth_type,auth_status,is_publish,create_date,update_date,create_time,update_time FROM tb_user WHERE id=?
2021-12-13 18:36:24.601 [http-nio-8001-exec-1] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Parameters: 2(Integer)
2021-12-13 18:36:24.716 [http-nio-8001-exec-1] DEBUG com.fzm.common.mapper.UserMapper.selectById-<== Total: 1
2021-12-13 18:36:25.026 [http-nio-8001-exec-1] ERROR c.f.c.exception.handler.GlobalExceptionHandler-JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1, column: 10] (through reference chain: com.fzm.common.entity.CopyrightOwner["owner"])
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1, column: 10] (through reference chain: com.fzm.common.entity.CopyrightOwner["owner"])
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:245)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:227)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:205)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1, column: 10] (through reference chain: com.fzm.common.entity.CopyrightOwner["owner"])
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1464)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1238)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1148)
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:63)
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:10)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:371)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:164)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4482)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3487)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:239)
... 51 common frames omitted
2021-12-13 18:38:27.533 [http-nio-8001-exec-2] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Preparing: SELECT id,telephone,email,password,wallet,nickname,signature,avatar,auth_type,auth_status,is_publish,create_date,update_date,create_time,update_time FROM tb_user WHERE id=?
2021-12-13 18:38:27.534 [http-nio-8001-exec-2] DEBUG com.fzm.common.mapper.UserMapper.selectById-==> Parameters: 2(Integer)
2021-12-13 18:38:27.587 [http-nio-8001-exec-2] DEBUG com.fzm.common.mapper.UserMapper.selectById-<== Total: 1
2021-12-13 18:38:27.699 [http-nio-8001-exec-2] ERROR c.f.c.exception.handler.GlobalExceptionHandler-Validation failed for argument [1] in public com.fzm.common.model.ResponseModel<java.lang.Integer> com.fzm.portal.controller.CopyrightOwnerController.add(java.lang.String,com.fzm.common.entity.CopyrightOwner) with 8 errors: [Field error in object 'copyrightOwner' on field 'type': rejected value [null]; codes [NotNull.copyrightOwner.type,NotNull.type,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.type,type]; arguments []; default message [type]]; default message [著作权人类型不能为空]] [Field error in object 'copyrightOwner' on field 'isEffective': rejected value [null]; codes [NotNull.copyrightOwner.isEffective,NotNull.isEffective,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.isEffective,isEffective]; arguments []; default message [isEffective]]; default message [证件是否长期有效不能为空]] [Field error in object 'copyrightOwner' on field 'idNumber': rejected value [null]; codes [NotBlank.copyrightOwner.idNumber,NotBlank.idNumber,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.idNumber,idNumber]; arguments []; default message [idNumber]]; default message [证件号码不能为空]] [Field error in object 'copyrightOwner' on field 'province': rejected value [null]; codes [NotBlank.copyrightOwner.province,NotBlank.province,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.province,province]; arguments []; default message [province]]; default message [用户所在省份不能为空]] [Field error in object 'copyrightOwner' on field 'entrustProve': rejected value [null]; codes [NotBlank.copyrightOwner.entrustProve,NotBlank.entrustProve,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.entrustProve,entrustProve]; arguments []; default message [entrustProve]]; default message [委托证明不能为空]] [Field error in object 'copyrightOwner' on field 'city': rejected value [null]; codes [NotBlank.copyrightOwner.city,NotBlank.city,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.city,city]; arguments []; default message [city]]; default message [用户所在城市不能为空]] [Field error in object 'copyrightOwner' on field 'effectiveEndDate': rejected value [null]; codes [NotNull.copyrightOwner.effectiveEndDate,NotNull.effectiveEndDate,NotNull.java.util.Date,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.effectiveEndDate,effectiveEndDate]; arguments []; default message [effectiveEndDate]]; default message [证件有效期终止时间不能为空]] [Field error in object 'copyrightOwner' on field 'effectiveStartDate': rejected value [null]; codes [NotNull.copyrightOwner.effectiveStartDate,NotNull.effectiveStartDate,NotNull.java.util.Date,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.effectiveStartDate,effectiveStartDate]; arguments []; default message [effectiveStartDate]]; default message [证件有效期起始时间不能为空]]
org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [1] in public com.fzm.common.model.ResponseModel<java.lang.Integer> com.fzm.portal.controller.CopyrightOwnerController.add(java.lang.String,com.fzm.common.entity.CopyrightOwner) with 8 errors: [Field error in object 'copyrightOwner' on field 'type': rejected value [null]; codes [NotNull.copyrightOwner.type,NotNull.type,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.type,type]; arguments []; default message [type]]; default message [著作权人类型不能为空]] [Field error in object 'copyrightOwner' on field 'isEffective': rejected value [null]; codes [NotNull.copyrightOwner.isEffective,NotNull.isEffective,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.isEffective,isEffective]; arguments []; default message [isEffective]]; default message [证件是否长期有效不能为空]] [Field error in object 'copyrightOwner' on field 'idNumber': rejected value [null]; codes [NotBlank.copyrightOwner.idNumber,NotBlank.idNumber,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.idNumber,idNumber]; arguments []; default message [idNumber]]; default message [证件号码不能为空]] [Field error in object 'copyrightOwner' on field 'province': rejected value [null]; codes [NotBlank.copyrightOwner.province,NotBlank.province,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.province,province]; arguments []; default message [province]]; default message [用户所在省份不能为空]] [Field error in object 'copyrightOwner' on field 'entrustProve': rejected value [null]; codes [NotBlank.copyrightOwner.entrustProve,NotBlank.entrustProve,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.entrustProve,entrustProve]; arguments []; default message [entrustProve]]; default message [委托证明不能为空]] [Field error in object 'copyrightOwner' on field 'city': rejected value [null]; codes [NotBlank.copyrightOwner.city,NotBlank.city,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.city,city]; arguments []; default message [city]]; default message [用户所在城市不能为空]] [Field error in object 'copyrightOwner' on field 'effectiveEndDate': rejected value [null]; codes [NotNull.copyrightOwner.effectiveEndDate,NotNull.effectiveEndDate,NotNull.java.util.Date,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.effectiveEndDate,effectiveEndDate]; arguments []; default message [effectiveEndDate]]; default message [证件有效期终止时间不能为空]] [Field error in object 'copyrightOwner' on field 'effectiveStartDate': rejected value [null]; codes [NotNull.copyrightOwner.effectiveStartDate,NotNull.effectiveStartDate,NotNull.java.util.Date,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [copyrightOwner.effectiveStartDate,effectiveStartDate]; arguments []; default message [effectiveStartDate]]; default message [证件有效期起始时间不能为空]]
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:139)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2021-12-13 18:45:19.916 [SpringContextShutdownHook] INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor-Shutting down ExecutorService 'applicationTaskExecutor'
2021-12-13 18:45:20.077 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closing ...
2021-12-13 18:45:20.090 [SpringContextShutdownHook] INFO com.alibaba.druid.pool.DruidDataSource-{dataSource-1} closed
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment