LightNovesOnl.com

Test Book2 2 Test Character2

Test Book2 - LightNovelsOnl.com

You're reading novel online at LightNovelsOnl.com. Please use the follow button to get notifications about your favorite novels and its latest chapters so you can come back anytime and won't miss anything.

test

oh

Java技术干货

首发于

Java技术干货

关注专栏

写文章

这样规范化编写Java代码,同事直呼"666"

这样规范化编写Java代码,同事直呼"666"

老刘

老刘

我的微信公众号:Java团长

​关注他

264 人赞同了该文章

一,迭代entrySet() 获取Map 的key 和value

当循环中只需要获取Map 的主键key时,迭代keySet() 是正确的;但是,当需要主键key 和取值value 时,迭代entrySet() 才是更高效的做法,其比先迭代keySet() 后再去通过get 取值性能更佳.

反例:

//Map 获取value 反例:

HashMap map = new HashMap<>();

for (String key : map.keySet()){

String value = map.get(key);

}

正例:

//Map 获取key & value 正例:

HashMap map = new HashMap<>();

for (Map.Entry entry : map.entrySet()){

String key = entry.getKey();

String value = entry.getValue();

}

二,使用Collection.isEmpty() 检测空

使用Collection.size() 来检测是否为空在逻辑上没有问题,但是使用Collection.isEmpty() 使得代码更易读,并且可以获得更好的性能;除此之外,任何Collection.isEmpty() 实现的时间复杂度都是O(1) ,不需要多次循环遍历,但是某些通过Collection.size() 方法实现的时间复杂度可能是O(n)

反例:

LinkedList collection = new LinkedList<>();

if (collection.size() == 0){

System.out.println("collection is empty.");

}

正例:

LinkedList collection = new LinkedList<>();

if (collection.isEmpty()){

System.out.println("collection is empty.");

}

//检测是否为null 可以使用CollectionUtils.isEmpty()

if (CollectionUtils.isEmpty(collection)){

System.out.println("collection is null.");

}

三,初始化集合时尽量指定其大小

尽量在初始化时指定集合的大小,能有效减少集合的扩容次数,因为集合每次扩容的时间复杂度很可能时O(n),耗费时间和性能.

反例:

//初始化list,往list 中添加元素反例:

int[] arr = new int[]{1,2,3,4};

List list = new ArrayList<>();

for (int i : arr){

list.add(i);

}

正例:

//初始化list,往list 中添加元素正例:

int[] arr = new int[]{1,2,3,4};

//指定集合list 的容量大小

List list = new ArrayList<>(arr.length);

for (int i : arr){

list.add(i);

}

四,使用StringBuilder 拼接字符串

一般的字符串拼接在编译期Java 会对其进行优化,但是在循环中字符串的拼接Java 编译期无法执行优化,所以需要使用StringBuilder 进行替换.

反例:

//在循环中拼接字符串反例

String str = "";

for (int i = 0; i < 10;="">

//在循环中字符串拼接Java 不会对其进行优化

str += i;

}

正例:

//在循环中拼接字符串正例

String str1 = "Love";

String str2 = "Courage";

String strConcat = str1 + str2; //Java 编译器会对该普通模式的字符串拼接进行优化

StringBuilder sb = new StringBuilder();

for (int i = 0; i < 10;="">

//在循环中,Java 编译器无法进行优化,所以要手动使用StringBuilder

sb.append(i);

}

五,若需频繁调用Collection.contains 方法则使用Set

在Java 集合类库中,List的contains 方法普遍时间复杂度为O(n),若代码中需要频繁调用contains 方法查找数据则先将集合list 转换成HashSet 实现,将O(n) 的时间复杂度将为O(1).


反例:

//频繁调用Collection.contains() 反例

List list = new ArrayList<>();

for (int i = 0; i <= integer.max_value;="">

//时间复杂度为O(n)

if (list.contains(i))

System.out.println("list contains "+ i);

}

正例:

//频繁调用Collection.contains() 正例

List list = new ArrayList<>();

Set set = new HashSet<>();

for (int i = 0; i <= integer.max_value;="">

//时间复杂度为O(1)

if (set.contains(i)){

System.out.println("list contains "+ i);

}

}

六,使用静态代码块实现赋值静态成员变量

对于集合类型的静态成员变量,应该使用静态代码块赋值,而不是使用集合实现来赋值.

反例:

//赋值静态成员变量反例

private static Map map = new HashMap(){

{

map.put("Leo",1);

map.put("Family-loving",2);

map.put("Cold on the out side pa.s.sionate on the inside",3);

}

};

private static List list = new ArrayList<>(){

{

list.add("Sagittarius");

list.add("Charming");

list.add("Perfectionist");

}

};

正例:

//赋值静态成员变量正例

private static Map map = new HashMap();

static {

map.put("Leo",1);

map.put("Family-loving",2);

map.put("Cold on the out side pa.s.sionate on the inside",3);

}

private static List list = new ArrayList<>();

static {

list.add("Sagittarius");

list.add("Charming");

list.add("Perfectionist");

}

七,删除未使用的局部变量,方法参数,私有方法,字段和多余的括号.

八,工具类中屏蔽构造函数

工具类是一堆静态字段和函数的集合,其不应该被实例化;但是,Java 为每个没有明确定义构造函数的类添加了一个隐式公有构造函数,为了避免不必要的实例化,应该显式定义私有构造函数来屏蔽这个隐式公有构造函数.

反例:

public cla.s.s Pa.s.swordUtils {

//工具类构造函数反例

private static final Logger LOG = LoggerFactory.getLogger(Pa.s.swordUtils.cla.s.s);

public static final String DEFAULT_CRYPT_ALGO = "PBEWithMD5AndDES";

public static String encryptPa.s.sword(String aPa.s.sword) throws IOException {

return new Pa.s.swordUtils(aPa.s.sword).encrypt();

}

正例:

public cla.s.s Pa.s.swordUtils {

//工具类构造函数正例

private static final Logger LOG = LoggerFactory.getLogger(Pa.s.swordUtils.cla.s.s);

//定义私有构造函数来屏蔽这个隐式公有构造函数

private Pa.s.swordUtils(){}

public static final String DEFAULT_CRYPT_ALGO = "PBEWithMD5AndDES";

public static String encryptPa.s.sword(String aPa.s.sword) throws IOException {

return new Pa.s.swordUtils(aPa.s.sword).encrypt();

}

九,删除多余的异常捕获并跑出

用catch 语句捕获异常后,若什么也不进行处理,就只是让异常重新抛出,这跟不捕获异常的效果一样,可以删除这块代码或添加别的处理.

反例:

//多余异常反例

private static String fileReader(String fileName)throws IOException{

try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {

String line;

StringBuilder builder = new StringBuilder();

while ((line = reader.readLine()) != null) {

builder.append(line);

}

return builder.toString();

} catch (Exception e) {

//仅仅是重复抛异常 未作任何处理

throw e;

}

}

正例:

//多余异常正例

private static String fileReader(String fileName)throws IOException{

try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {

String line;

StringBuilder builder = new StringBuilder();

while ((line = reader.readLine()) != null) {

builder.append(line);

}

return builder.toString();

//删除多余的抛异常,或增加其他处理:

/*catch (Exception e) {

return "fileReader exception";

}*/

}

}

十,字符串转化使用String.valueOf(value) 代替 " " + value

把其它对象或类型转化为字符串时,使用String.valueOf(value) 比 ""+value 的效率更高.

反例:

//把其它对象或类型转化为字符串反例:

int num = 520;

// "" + value

String strLove = "" + num;

正例:

//把其它对象或类型转化为字符串正例:

int num = 520;

// String.valueOf() 效率更高

String strLove = String.valueOf(num);

十一,避免使用BigDecimal(double)

BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常.

反例:

// BigDecimal 反例

BigDecimal bigDecimal = new BigDecimal(0.11D);

正例:

// BigDecimal 正例

BigDecimal bigDecimal1 = bigDecimal.valueOf(0.11D);

十二,返回空数组和集合而非 null

若程序运行返回null,需要调用方强制检测null,否则就会抛出空指针异常;返回空数组或空集合,有效地避免了调用方因为未检测null 而抛出空指针异常的情况,还可以删除调用方检测null 的语句使代码更简洁.

反例:

//返回null 反例

public static Result[] getResults() {

return null;

}

public static List getResultList() {

return null;

}

public static Map getResultMap() {

return null;

}

正例:

//返回空数组和空集正例

public static Result[] getResults() {

return new Result[0];

}

public static List getResultList() {

return Collections.emptyList();

}

public static Map getResultMap() {

return Collections.emptyMap();

}

十三,优先使用常量或确定值调用equals 方法

对象的equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals 方法.

反例:

//调用 equals 方法反例

private static boolean fileReader(String fileName)throws IOException{

// 可能抛空指针异常

return fileName.equals("Charming");

}

正例:

//调用 equals 方法正例

private static boolean fileReader(String fileName)throws IOException{

// 使用常量或确定有值的对象来调用 equals 方法

return "Charming".equals(fileName);

//或使用:java.util.Objects.equals() 方法

return Objects.equals("Charming",fileName);

}

十四,枚举的属性字段必须是私有且不可变

枚举通常被当做常量使用,如果枚举中存在公共属性字段或设置字段方法,那么这些枚举常量的属性很容易被修改;理想情况下,枚举中的属性字段是私有的,并在私有构造函数中赋值,没有对应的Setter 方法,最好加上final 修饰符.

反例:

public enum SwitchStatus {

// 枚举的属性字段反例

DISABLED(0, "禁用"),

ENABLED(1, "启用");

public int value;

private String description;

private SwitchStatus(int value, String description) {

this.value = value;

this.description = description;

}

public String getDescription() {

return description;

}

public void setDescription(String description) {

this.description = description;

}

}

正例:

public enum SwitchStatus {

// 枚举的属性字段正例

DISABLED(0, "禁用"),

ENABLED(1, "启用");

// final 修饰

private final int value;

private final String description;

private SwitchStatus(int value, String description) {

this.value = value;

this.description = description;

}

// 没有Setter 方法

public int getValue() {

return value;

}

public String getDescription() {

return description;

}

}

十五,tring.split(String regex)部分关键字需要转译

使用字符串String 的plit 方法时,传入的分隔字符串是正则表达式,则部分关键字(比如 .[]() 等)需要转义.

反例:

// String.split(String regex) 反例

String[] split = "a.ab.abc".split(".");

System.out.println(Arrays.toString(split)); // 结果为[]

String[] split1 = "a ab abc".split(" ");

System.out.println(Arrays.toString(split1)); // 结果为["a", " ", "a", "b", " ", "a", "b", "c"]

正例:

// String.split(String regex) 正例

// . 需要转译

String[] split2 = "a.ab.abc".split(".");

System.out.println(Arrays.toString(split2)); // 结果为["a", "ab", "abc"]

// 需要转译

String[] split3 = "a ab abc".split(" ");

System.out.println(Arrays.toString(split3)); // 结果为["a", "ab", "abc"]

作者:涛姐涛哥

链接:https://www.cnblogs.com/taojietaoge/p/11575376.html

来源:博客园

编辑于 2019-10-25

Java

程序员

Java 编程

​已赞同 264​

​添加评论

​分享

​收藏

已赞同 264

分享

文章被以下专栏收录

Java技术干货

6

工作台

文档

项目

p_ypjiang

项目

我参与的项目

175 [245/426/1103]

内 内容中心_产品线 在线指引

需求

缺陷

测试用例

Wiki

发布计划

迭代

发布评审

更多

创建wiki

关键字以空格区分

Wiki标签

所有的 我关注的 我创建的

[内容中心]通用

[内容中心]主线接口清单

[内容中心]数据字典

[内容中心]海外项目

海外项目简介

海外开发Guide

事件系统-old

错误代码

内容接口

内容接口-对内

海外事件系统整理-最新up to 2019-02-13

海外漫画

内容中心-海外设计文档

多语言版本接入

签约管理

自翻译书籍流程

劳务设置及授权流程图

漫画管理

书籍批量刷新

漫画批量刷新

海外书封管理关联数据库

海外稿酬下载

海外书籍漫画征文增加地区显示属性

海外自动书封设计文档

招募系统

qa系统设计文档

海外作品添加作者自定义标签

海外同步国内书籍流程

海外redis队列监控设计文档

翻译组变更逻辑

国内书籍输出到海外

长短篇幅

海外漫画回流

海外作家ES

后台编辑工作模块

一键搬家功能

自翻译列表增加qa审核状态

公共接口调研

作家国籍

海外-作家创作计划设计方案

海外默认书封

快速创建书籍

海外在线签约

海外引进机翻书籍

第三方作品引入

海外开放平台接口设计

内容中心-海外数据字典

海外部分业务规则说明

[内容中心]业务支持

[内容中心]业务支持JOB与接口列表(按业务划分)

[内容中心]业务支持测试

[内容中心]事件系统

[内容中心]综合后台

[内容中心]综合后台测试

[内容中心]UGC审核平台

[内容中心]作家助手

[内容中心]业务处理规范流程

[内容中心]业务规则说明

[内容中心]redis

[内容中心]持续集成实施

[内容中心]新第三方系统

[内容中心]第三方审核平台

[内容中心]第三方系统测试

[内容中心]高级搜索项目

[内容中心]出版精排

[内容中心]签约相关

[内容中心]article 图文引进(企鹅号)

[内容中心]统一书服务

[内容中心]Lest

[内容中心]潇湘内容引入

[内容中心]潇湘测试

IP共营合伙人项目

[内容中心]新对话式小说

[内容中心]轻文

[内容中心]抽奖类活动注意事项

海外在线签约

p_qchunw.a.n.g 创建于2019-09-11 , p_qchunw.a.n.g 更新于2019-12-04 浏览量(576) 编辑 关注 评论 更多

1,背景

新加坡分公司建立后,责编团队规模持续扩大,签约作品数会有明显提升,海外引入在线签约流程

2,表设计

1.ccBkServiceDB.responsibleeditor表新增字段

字段 类型 是否为null 其它

dagreement tinyint N 责编提签时协议类型默认-1,枚举同novelscontract表dagreement

2 . ccBkserviceDB.novelscontract表(海外已有)

新增字段

字段 类型 是否为null 其它

tracker_id int Y 签约跟进人id

update_time datetime N 默认0000-00-00 00:00:00, 更新时间

新增枚举

字段 类型 是否为null 其它

contract int N 默认-1,签约进度(-1:尚未开始 5:主编提交 10:开始联系 15:无法联系 20:洽谈中 30:谈妥待寄 40:合约已到 1:暂缓签约 4:放弃签约, 50:作者信息填写完成,60:转站确认中), 增加70:签约开始,80:合同上传完成,90:审核完成,100:上传签字合同, 40:签约完成(合约已到)110:填写资料(海外专用)

添加索引

idx_update(update_time)

3.ccBkserviceDB新增表scontractlog,结构同国内(其它变动同novelscontract表)

CREATE TABLE `scontractlog` (

`IDX` int(11) NOT NULL AUTO_INCREMENT,

`CBID` bigint(20) NOT NULL COMMENT '书ID',

`actor` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作用户',

`responsibility` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作者身份',

`editortype` int(11) NOT NULL DEFAULT '-1' COMMENT '身份',

`contract` int(11) NOT NULL DEFAULT '0' COMMENT '进程编号',

`contractname` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '进程名',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`note` varchar(512) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '备注说明',

`dagreement` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '协议类型 -1:无 1:标准分成 2:原标准买断 3:征文标准分成 4:征文标准买断 5:X签新签 6:X签转签 7:线下签约 8:上架转买断(原枚举为3)10:未知',

`buyoutprice` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '买断金额 元(x签 专用)',

`flow_id` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '买断申请表中的oa流程标识',

`minwords` decimal(15,3) NOT NULL DEFAULT '0.000' COMMENT '最小字数单位 万字(x签)',

`maxwords` decimal(15,3) NOT NULL DEFAULT '0.000' COMMENT '最大字数单位 万字(x签)',

`originpid` int(11) DEFAULT NULL COMMENT 'x签原合同的pid',

`finishstatus` int(11) DEFAULT NULL COMMENT '提签时完本状态 连载中(30),已完结(50),其他 -1',

`deductiondivideamount` decimal(15,3) DEFAULT NULL COMMENT '扣除分成金额',

`minneedwords_month` decimal(15,3) DEFAULT NULL COMMENT '每月最小交稿字数 单位:万字(x签)',

`maxneedwords_month` decimal(15,3) DEFAULT NULL COMMENT '每月最大交稿字数 单位:万字(x签)',

PRIMARY KEY (`IDX`),

KEY `CBID` (`CBID`),

KEY `originpid` (`originpid`)

) ENGINE=InnoDB AUTO_INCREMENT=863304 DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='签约过程'

4.ccBkserviceDB.oversea_editor_group表

responsibility 增加枚举11:签约编辑

5.新增ccOverseaDB.oversea_signonline_msg

字段 类型 是否为null 其它

IDX bigint N ID生成器

CBID bigint N

cauthorid bigint N

send_reason int N 触发的原因,1:主编提签,2:签约审核不通过, 3:签约成功, 4:循环提示填写签约基本信息, 5: 循环提示上传合同

msg text N 消息内容

send_time datetime N 消息发送时间

msg_route int N 1:发送邮箱,2:发送给推送消息

email_en varchar(600) Y 加密存储消息的接收邮箱,如果不是发送邮箱,那么不填即可

status int N -1:发送失败,1:发送成功

error_msg text Y 发送消息失败的原因

sender_name varchar(255) N 消息发送人

idx(cbid,send_time)

6.新增签约记录表 复用国内,并且增加字段ccAuthorBaseDB.signonline( signonlinepre也是 )

新增字段

字段 类型 是否为null 其它

source int N 数据来源,默认1:国内,2:海外

新增枚举

字段 类型 是否为null 其它

cardtype tinyint N 证件类型 0:身份证(基本信息,不作为支付依据) 1:护照,2:军官证,3:学生证,4:海外证件, 更新为: 枚举同author_payinfoxx表card_type

signonline表的修改发送书籍事件,不通知下游

信息 对应字段 其它

作家真实姓名 realname_en 加密存储

作家笔名 authorname

性别 s.e.x

生日 birthday_en date格式加密存储1999-09-09 格式加密存储

作家提供的ID Card上的证件号码 cardid_en 加密存储

监护人证件号 keeper_cardid_en 加密存储

邮编 zipcode

手机号 mobile_en 加密存储,加密前是不包含国家地区码

手机号国家地区码 telpre

邮箱 email_en 加密存储

电话 phone_en 加密存储

qq qq_en 加密存储

微信 wechat_en 加密存储

紧急联系人姓名 contactname_en 加密存储

紧急联系人手机国家地区码 contacttelpre

紧急联系人手机号 contactmobile_en 加密存储

收款账户名称 bank_openname_en 加密存储

账户号码 bank_account_en 加密存储

银行名称 bank

分行名称 bank_info

联系地址 address_en 加密存储

新增 signonline_exp ( signonlinepre_exp )

字段 类型 是否为null 其它

IDX bigint N 主键,signonline表主键

job varchar(512) N 默认空字符串,

nationality varchar(10) N 作家国籍简写,默认空字符串

guid bigint Y 作者在用户中心的uid

guarder_card_type tinyint N 监护人证件类型,默认0,枚举同cardtype字段

skype_en varchar(256) Y skype账号,加密存储

discord_en varchar(256) Y discord账号,加密存储

whatsapp_en varchar(256) Y whatsapp账号,加密存储

line_en varchar(256) Y line账号,加密存储

facebook_ma.s.sage_en varchar(256) Y facebook ma.s.sage账号,加密存储

contact_email_en varchar(600) Y 紧急联系人邮箱,加密存储

swiftcode varchar(100) N 默认空字符串,银行识别码

country_abbreviation varchar(10) Y 开户行所在国家地区简写

user_address_en text Y 用户在开户行开户时所留住址(加密字段)

bank_address varchar(255) Y 分行地址

signed_contract_en text Y 作家签字合同信息,[{"sort":1,"url":"http://www.google.com"},{"sort":2,"url":"http://www.baidu.com"}] 形式加密存储,海外使用多个图片

sealed_contract_en text Y 公司盖章后合同信息,[{"sort":1,"url":"http://www.google.com"},{"sort":2,"url":"http://www.baidu.com"}] 形式加密存储,只是使用pdf,1个文件

card_images_en text Y 作家证件附件 [{"sort":1,"url":"http://www.google.com", "type":1},{"sort":2,"url":"http://www.baidu.com", "type":2}] 形式加密存储, 身份证时, sort:1:正面,2:反面

guarder_card_images_en text Y 监护人证件附件 [{"sort":1,"url":"http://www.google.com", "type":1},{"sort":2,"url":"http://www.baidu.com", "type":2}] 形式加密存储, 身份证时, sort:1:正面,2:反面

7.新增审核日志表ccAuthorBaseDB.signonlineauditlog(复用国内表结构)

CREATE TABLE `signonlineauditlog` (

`IDX` bigint(20) unsigned NOT NULL COMMENT '主键',

`signid` bigint(20) NOT NULL COMMENT '合同ID',

`cauthorid` bigint(20) NOT NULL DEFAULT '0' COMMENT '作家ID',

`CBID` bigint(20) NOT NULL DEFAULT '0' COMMENT '书号',

`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '审核状态:1审核通过,2审核不通过',

`audittime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '审核时间',

`auditor` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '审核人',

`reason` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '不通过原因',

PRIMARY KEY (`IDX`),

KEY `signid` (`signid`),

KEY `cauthorid` (`cauthorid`),

KEY `cbid` (`CBID`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='网上签约日志表'

增加字段:reason_id: 原因id, int, not null, default 0;

reason 从varchar(200)改为varchar(2048),

idx(CBID,audittime)

8.新增ccAuthorBaseDB.signonline_result 表结构同signonline表, signonlie_result_exp 表结构同signonline_exp

9.新增ccAuthorBaseDB.signonlineconfig (表结构同国内,同步国内数据到海外)

CREATE TABLE `signonlineconfig` (

`IDX` bigint(20) unsigned NOT NULL COMMENT '合同模板id',

`site` int(11) NOT NULL DEFAULT '5' COMMENT '站点属性 5:起点男生 1:创世 2:云起 3:起点女生 4:其他 6:第三方 9:起点文学 10:海外 21:xy小说阅读网 22:xx潇湘 23:hx红袖添香 24:yq言情小说吧',

`ctype` tinyint(4) NOT NULL COMMENT '协议类型 -1:无 1:标准分成 2:原标准买断 3:征文标准分成 4:征文标准买断 5:X签新签 6:X签转签 7:线下签约 8:上架转买断(原枚举为3)10:未知',

`TID` bigint(20) unsigned NOT NULL COMMENT '合同模版版本号',

`tname` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '合同模版名称',

`status` tinyint(4) DEFAULT '-1' COMMENT '状态 -1:无效 1:有效',

`articleid` bigint(20) DEFAULT NULL COMMENT '征文ID',

`counselnote` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '咨询文案,含有标签,要替换',

`creator` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建人',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`updater` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '最后更新人',

`updatetime` datetime DEFAULT NULL COMMENT '最后更新时间',

PRIMARY KEY (`IDX`),

KEY `tid` (`TID`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='在线签约合同表'

10.新增表ccAuthorBaseDB.signtemplate(表结构同国内,同步国内数据到海外)

CREATE TABLE `signtemplate` (

`TID` bigint(20) unsigned NOT NULL COMMENT '合同模板版本号',

`tname` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '合同模版名称',

`shortname` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '合同模版版本名(导出用)',

`template` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '模版内容地址(用于生成PDF)',

`rightlist` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '权利项数组(用于同步版权系统)',

`status` tinyint(4) DEFAULT '-1' COMMENT '状态 -1:无效 1:有效',

`creator` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建人',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`updater` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '最后更新人',

`updatetime` datetime DEFAULT NULL COMMENT '最后更新时间',

`isAuthorBanksynchro` tinyint(4) DEFAULT '2' COMMENT '是否同步作者银行信息1,是,2否',

`templateconfig` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '模板配置,用于模板里的控制,如删除指定页',

PRIMARY KEY (`TID`),

KEY `tname` (`tname`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同模版版本表'

11 . ccAuthorDBxx.author_payinfoxx表

枚举变更

字段 类型 是否为null 其它

card_type int Y 0,证件类型 0:身份证(基本信息,不作为支付依据) 1:护照,2:军官证,3:学生证,4:海外证件, 新增5: 驾驶证 4:其它

12 ccBkserviceDB 新增表field_modified_log(intservice裁剪图片时会用到)

CREATE TABLE `field_modified_log` (

`IDX` bigint(20) NOT NULL COMMENT 'IDX',

`tablePk` bigint(20) unsigned NOT NULL COMMENT '原表主键',

`tableName` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`fieldName` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`newValue_en` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '新字段值',

`originValue_en` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '原始字段值',

`createtime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`creator` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建者',

PRIMARY KEY (`IDX`),

KEY `table_field_pk` (`tableName`,`fieldName`,`tablePk`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字段修改日志表'

13 . 新增表 ccBkserviceDB.oversea_editor_info (签约跟进人配置)

字段 类型 是否为null 其它

IDX int N 主键,自增

user_id int N 用户id,serviceuser表主键

s.e.xattr varchar(32) N 男女频,英文逗号分隔,枚举同书籍表

categoryid varchar(512) N 用逗号分隔

language varchar(255) N 用逗号分隔

status int N 是否有效,-1无效,1有效

creator_id int N 创建人id.serviceuser表主键

create_time datetime N

updator_id int N 更新人id,serviceuser表主键,创建时同creator_id

update_time datetime N 创建时同createtime

14 . 新增协议代码表ccCopyrightDB

CREATE TABLE `protocoltype` (

`typeid` int(11) NOT NULL AUTO_INCREMENT COMMENT '协议类型 代码',

`typename` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '协议类型名称',

`status` tinyint(4) DEFAULT '1' COMMENT '状态:-1:无效 1:有效',

`creator` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '提交人',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '提交人员工编号',

`updater` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修改人',

`updatetime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',

PRIMARY KEY (`typeid`)

) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='协议类型代码表'

15 . 新增ccAuthorBaseDB.signonlinestep表

CREATE TABLE `signonlinestep` (

`IDX` bigint(20) unsigned NOT NULL COMMENT 'IDX',

`cauthorid` bigint(20) NOT NULL COMMENT '作家id',

`CBID` bigint(20) NOT NULL COMMENT '书的id',

`step` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0:签约意向页 11:拒绝签约结束页 10:版权信息确认页 21:非大陆身份证结束页 22: 版权信息异常页 20:签约说明页 30:在线签约信息填写页 40:已保存在线签约信息填写 50:等待审核页 60:检查合同页',

`refuse_cause` tinyint(4) DEFAULT NULL COMMENT '1:该作品已经与其他网站或者出版社签约, 2:没有时间进行作品的更新, 3:纯粹练笔,无签约意向, 4:其他',

`is_alone` tinyint(4) DEFAULT NULL COMMENT '是否独立完成 (1:是, 0:否)',

`is_all_copyright` tinyint(4) DEFAULT NULL COMMENT '是否拥有所有版权 (1:是, 0:否)',

`is_guarder_agreen` tinyint(4) DEFAULT NULL COMMENT '(未成年)监护人是否同意签约 (1:是, 0:否)',

`status` tinyint(4) DEFAULT NULL COMMENT '签约意向 (1:接受, 0:拒绝)',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`updatetime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '修改时间',

`is_editor_confirm` tinyint(4) DEFAULT '0' COMMENT '编辑是否确定过用户成年信息 (1:是, 0:否)',

`editupdatetime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '编辑修改时间',

`edit_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '编辑id ',

`edit_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '编辑名字 ',

`is_exclusive_sign` tinyint(4) DEFAULT NULL COMMENT '是否是独家签约 (1:是, 0:否)',

`refuse_cause_detail` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '详细拒绝原因',

PRIMARY KEY (`IDX`),

UNIQUE KEY `cbid_1` (`CBID`),

KEY `cauthorid_1` (`cauthorid`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='在线签约步骤表'

在step中增加枚举

70:海外基础信息,:80:海外填写签约信息, 90:海外预览合同页,100:海外上传签字合同页. 110:海外审核失败页

16 . ccAuthorBaseDB增加表author_signonline_pennamelock

字段 类型 是否为null 其它

cauthorid bigint N 主键

change_penname tinyint N 默认-1,-1:无法修改,1:可以修改

此表的修改,请发送作家事件(不需通知下游),更新到做作家的主缓中

17 审核不通过原因配置表ccOverseaDB.audit_reason_config

字段 类型 是否为null 其它

IDX int N 主键,自增

business_type int N 业务类型,1:在线签约

name varchar(127) N 错误原因,intservice下拉列表,比如证件不对,合同签字不合理

details text N 给作家的提示,json格式,[{ "sort": 1,"type":2,"content":"11222"}], type枚举1:文本,2:正确图片,3:错误图片, content为具体的内容,可以使文本内容,也可以是图片url,由type确定

status int N 是否有效,-1:无效,1:有效

create_time datetime N 创建时间

update_time datetime N 更新时间,创建时同create_time

3.流程图

状态机

图片描述

4,修改点

1.责编提签

respinsibleeditor表插入时,请写入责编提前时选的协议类型

2. 主编提签

novelscontract表中dagreement字段需要写入字段.

scotnractlog表中需要插入记录

需要发送消息,调用接口,并且向ccAuthroBaseDB.oversea_signonline_msg插入记录

3. 责编分组

增加签约编辑设置

4. 编辑工作->签约作品列表

不能修改签约进度.

不可以修改协议类型

5. 签约工作

书籍solr新增字段 ccAuthorBaseDB.signonline表status字段加到solr,字段名为signonline_status 支持搜索, ccBkserviceDB.novelscontract表launchtime 字段加到solr,字段名为launchtime ,支持搜索.

单页修改签约进度时,scontractlog需要添加日志,备注需要写入scontractlog的note字段.

审核通过或不同过时,需要更新signonline表状态,signonline_result状态, signonlineauditlog加入日志,novelscontract表contract进度更新,scontractlog表添加记录.给作家发送消息时,需向oversea_signonline_msg 插入记录

6. 编辑信息管理页

设置指派编辑信息

7. 作家填写签约信息

在作家填写信息(没有提交合同,最终进审时),信息填写到signonlinepre, signonlinepre_exp表中,注意signonlinestep表也需要插入或者更新.

只有提交最后合同后,signonline, signonline_exp同时插入数据(或者更新),表的主键值相同.同时signonline_result, signonline_result_exp 也需要插入数据(更新signonline, signonline_exp表时,对应签约类型的signonline_result, signonline_result_exp表也同步更新, 每一个CBID在signonline中只有一条记录, cbid+协议类型在signonline_result是唯一的)

上传签字合同时,需要是图片格式(PNG,JPG,JPEG 这三种,ocr接口限制), pdf需要转换,可能会影响ocr

8. 循环发送消息,数据回流到国内,对国内提供接口,

9. 生成合同接口,生成流流水号接口(嘴爷,需要重新布置一套).

10. change_penname加入主缓.

11. novelscontract表contract变更,signonlinestep表step变更,以及原创小说以及fanficsigntype变为249均需调用接口,重新计算change_penname的逻辑

12. intservice在未封闭signtype修改入口之前,也需要调用潘潘的接口

5,国内数据交互

1 初步确认结论

根据填写的信息实时生成合同

合同流水号生成

合同分成比例,协议类型,合同模板需要提供

合同信息,参与方信息,权利项信息,发稿要求目前参考国内,如需修改后面可以去掉或增加

合同确认,修改书的信息和作者信息统一调用海外接口

书名和作者名修改也是调用海外接口

版权状态导入要修改之处海外书修改,统一调用海外接口

我方主体公司 Cloudary Holdings Limited 枚举:100

签约作家逻辑此次需要完成

2 依赖数据

数据库 表 国内写字段 读写 处理方式

ccAuthorBaseDB signonline status, updatetime 国内外均读和写,国内合同同步完成后,修改status=3, updatetime=now 方式一

ccAuthorBaseDB signtemplate 所有 国内读写,海外读 初始同步,如果国内变更,可以出发同步到海外

ccAuthorBaseDB signonlieconfig 所有 国内读写,海外读 初始同步

ccCopyrightDB protocoltype 所有 国内读写,海外读 同上

ccAuthorBaseDB signonline_result status, updatetime 国内外均读和写,国内合同同步完成后,修改status=3, updatetime=now 方式一

ccBkServiceDB novelscontract contract 国内外均读写 方式一

ccBookDBxx book_novelsxx t.i.tle, signtype, splitype, signtime,updatetime 国内均读写,签约后如果修改书名,需要在国内版权系统修改 方式一

ccAuthorDBxx authorxx authorname 国内均读写,签约后如果修改笔名,需要在国内版权系统修改 方式一

ccAuthorBaseDB authorbankinfo 银行信息 国内均读写,签约后修改走国内版权系统 方式一

方式一: 直接调用海外接口写,海外更新后,触发回流,回流到国内, 读也调用国内接口(需要配置ip)

3. 提供国内调用的接口

-- 修改数据接口

修改书名接口

修改作者笔名接口

版权状态导入接口(修改书和作者信息)

修改novelscontract签约进度接口

修改signonline状态接口

修改银行信息接口

-- 获取数据接口

获取novelscontract签约进度接口

在线签约数据列表获取接口,要分页

获取在线签约明细数据,具体到单本,接口

获取单本书或多本书接口

获取单作者或者多作者接口

获取海外合同文件(流水号,模板ID)接口

-- OCR盖章合同

提供给海外盖章后的合同接口

4 海外回流到国内的表新增

ccAuthorBaseDB.signonline, signonline_exp

ccAuthorBaseDB.signonline_result signonline_result_exp

ccBkservieDB.novelscontract(主键自增,需要改成ID生成器,本期历史IDX不做处理.暂时不会回流到国内了)

ccAuthorBaseDB.authorbankinfo(主键自增,需要改成ID生成器,历史IDX需要处理)

ccAuthorBaseDB.country_info

ccOverseaDB.business_country

5. 国内同步到海外

ccCopyrightDB.protocoltype

ccAuthorBaseDB.signtemplate

ccAuthorBaseDB.signonlieconfig

6 注意事项

合同同步时,需要重新生成地址,因为海外不能访问国内cos,同理国内也不能访问海外cos,

获取信息,流水号生成,作家专区掉方法生成ID生成最少10+合同类型2+我方主体3 在线签约合同证件页上传,ID生成是单独生成的

国内修改笔名时,同步到海外需要更改translator, authorxx表,也需要修改书表上的authorname

6. 海外修改入口封闭

表 字段 含义 入口 判断条件 如果需要修改 具体标准(不包含供国内调用的接口逻辑)

ccBookDBxx.book_novelsxx t.i.tle 书名 inkstone, intservice, sdk 针对海外原创的小说和fanfic 确认信息之前,或者被打回 才可以被修改 签约后在版权内修改 1. (signtype != 249) and (signonlinestep无记录 or signonlinestep.step in (0,70,80,90) or novelscontract.contract in(100,110))

ccBookDBxx.book_novelsxx signtype, signtime, splittype 签约类型,签约时间,分成属性 intservice 除了创建书籍时的默认值,海外原创海外原创的小说和fanfic 均不能修改signtype,intservice只做展示 国内调用海外接口修改除外 走国内版权系统

ccAuthorDBxx.authorxx authorname 作家笔名 下游入口 需要加限制,提供接口判断接口是否可以修改, 只有确认合同之前才可以修改 ,审核不通过也可以, 国内调用海外接口除外 国内版权系统 change_penname

ccOverseaDB.translator penname 作家笔名 下游入口 作家所有书籍均处于确认信息之前 如果已经签约,需要在国内版权系统 change_penname

ccAuthorDBxx.author_payinfoxx card_type, card_id_en, realname_en 身份证件类型,证件号,真实姓名 inkstone, intservice, sdkapi, 作家如果有书籍,inkstone:确认信息之前,或者被打回 国内版权系统 change_penname

ccAuthorBaseDB authorbankinfo 所有字段 详见表结构 作家如果有书籍:确认信息之前,或者被打回 国内版权系统 change_penname

判断是否可以修改信息均由业务支持组封装接口实现,

change_penname逻辑:

作家所有书籍均符合

(signtype != 249) and (signonlinestep无记录 or signonlinestep.step in (0,70,80,90) or novelscontract.contract in(100,110))

部分历史线下签约书籍逻辑需要中插入数据

7. 依赖下游

笔名修改提供逻辑下游变更,内容侧需要提供接口,判断是否可以修改笔名.

需要依赖下游接口,来直接修改用户笔名(不加入1中判断是否可以修改笔名的逻辑)

8. 历史问题

ccAuthorBaseDB.authorbankinfo表signcompany字段有0,1,100,均用错了,需要修正

签约公司主体表,需要加入签约公司配置,signcompany会用到这个枚举

9, 上线步骤

第一步: 1. 事件系统change_penname上线(加入主缓线上).2. solr加字段,3. 国内数据配置表同步到海外. 4. 海外authorbankinfo插入数据时,signcompany设置为100.5. 计算change_penname的接口上线.6. novelscontract表,authorbankinfo 主键变为ID生成器生成 . 7. 给作家推送发消息接口上线

第二步:1. intservice修改signtype调用change_penname的接口逻辑上线.2. 生成合同接口上线, 3. authorbankinfo表signcompany字段全部刷成100, 4. novelscontract表,authorbankinfo 历史数据刷新上线,历史数据处理. ,5:合同编号ID生成器接口上线.6. 历史数据发消息,solr中补全历史数据

第三步: 1. change_penname历史数据处理.

第四步: 1. 判断是否修改笔名,书名,银行信息的接口上线 2. 海外发站短接口(inkstone以及intservice调用)

第五步: 1. 封禁修改数据入口,作者名,书名 上线. 2. 下游禁止修改用户名功能上线. 5. 下游供修改笔名接口上线.

第六步: 1. intservice在线签约功能上线.2. 海外供国内调用接口上线, 3. 回流上线, 4: 循环发送消息上线. 5. intservice修改signtype的入口关闭

第七步: 1. novelscontract表历史数据协议数据处理

第八步: 1. inkstone在线签约上线

第九步: 1. 国内版权系统上线

标签 编辑

附件 添加

评论

@通知他人,增加评论/处理意见

目录

1,背景

2,表设计

3.流程图

4,修改点

5,国内数据交互

6. 海外修改入口封闭

7. 依赖下游

8. 历史问题

9, 上线步骤

Java技术干货

只分享干货!!!

关注专栏

推荐阅读

不了解这12个语法糖,别说你会Java!

不了解这12个语法糖,别说你会Java!

孤独键客

Arrays.asList存在的坑

Arrays.asList存在的坑

老刘

发表于Java技...

避免在Java中检查Null语句

避免在Java中检查Null语句

Java肖...

发表于Java架...

死磕Java之泛型(一)

死磕Java之泛型(一)一般的类和方法,只能使用具体的类型;要么是基本类型,要么是自定义的类,如果需要编写可以应用于多种类型的代码,这种限制就降低了代码的可用性,当然你会想到重载,但…

Oelje...

发表于Java并...

还没有评论

评论由作者筛选后显示

发布

选择语言

my

6

工作台

文档

项目

p_ypjiang

项目

我参与的项目

175 [245/426/1103]

内 内容中心_产品线 在线指引

需求

缺陷

测试用例

Wiki

发布计划

迭代

发布评审

更多

创建wiki

关键字以空格区分

Wiki标签

所有的 我关注的 我创建的

[内容中心]通用
Find authorized novels in Webnovel,faster updates, better experience,Please click for visiting.

[内容中心]主线接口清单

[内容中心]数据字典

[内容中心]海外项目

海外项目简介

海外开发Guide

事件系统-old

错误代码

内容接口

内容接口-对内

海外事件系统整理-最新up to 2019-02-13

海外漫画

内容中心-海外设计文档

多语言版本接入

签约管理

自翻译书籍流程

劳务设置及授权流程图

漫画管理

书籍批量刷新

漫画批量刷新

海外书封管理关联数据库

海外稿酬下载

海外书籍漫画征文增加地区显示属性

海外自动书封设计文档

招募系统

qa系统设计文档

海外作品添加作者自定义标签

海外同步国内书籍流程

海外redis队列监控设计文档

翻译组变更逻辑

国内书籍输出到海外

长短篇幅

海外漫画回流

海外作家ES

后台编辑工作模块

一键搬家功能

自翻译列表增加qa审核状态

公共接口调研

作家国籍

海外-作家创作计划设计方案

海外默认书封

快速创建书籍

海外在线签约

海外引进机翻书籍

第三方作品引入

海外开放平台接口设计

内容中心-海外数据字典

海外部分业务规则说明

[内容中心]业务支持

[内容中心]业务支持JOB与接口列表(按业务划分)

[内容中心]业务支持测试

[内容中心]事件系统

[内容中心]综合后台

[内容中心]综合后台测试

[内容中心]UGC审核平台

[内容中心]作家助手

[内容中心]业务处理规范流程

[内容中心]业务规则说明

[内容中心]redis

[内容中心]持续集成实施

[内容中心]新第三方系统

[内容中心]第三方审核平台

[内容中心]第三方系统测试

[内容中心]高级搜索项目

[内容中心]出版精排

[内容中心]签约相关

[内容中心]article 图文引进(企鹅号)

[内容中心]统一书服务

[内容中心]Lest

[内容中心]潇湘内容引入

[内容中心]潇湘测试

IP共营合伙人项目

[内容中心]新对话式小说

[内容中心]轻文

[内容中心]抽奖类活动注意事项

海外在线签约

p_qchunw.a.n.g 创建于2019-09-11 , p_qchunw.a.n.g 更新于2019-12-04 浏览量(576) 编辑 关注 评论 更多

1,背景

新加坡分公司建立后,责编团队规模持续扩大,签约作品数会有明显提升,海外引入在线签约流程

2,表设计

1.ccBkServiceDB.responsibleeditor表新增字段

字段 类型 是否为null 其它

dagreement tinyint N 责编提签时协议类型默认-1,枚举同novelscontract表dagreement

2 . ccBkserviceDB.novelscontract表(海外已有)

新增字段

字段 类型 是否为null 其它

tracker_id int Y 签约跟进人id

update_time datetime N 默认0000-00-00 00:00:00, 更新时间

新增枚举

字段 类型 是否为null 其它

contract int N 默认-1,签约进度(-1:尚未开始 5:主编提交 10:开始联系 15:无法联系 20:洽谈中 30:谈妥待寄 40:合约已到 1:暂缓签约 4:放弃签约, 50:作者信息填写完成,60:转站确认中), 增加70:签约开始,80:合同上传完成,90:审核完成,100:上传签字合同, 40:签约完成(合约已到)110:填写资料(海外专用)

添加索引

idx_update(update_time)

3.ccBkserviceDB新增表scontractlog,结构同国内(其它变动同novelscontract表)

CREATE TABLE `scontractlog` (

`IDX` int(11) NOT NULL AUTO_INCREMENT,

`CBID` bigint(20) NOT NULL COMMENT '书ID',

`actor` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作用户',

`responsibility` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '操作者身份',

`editortype` int(11) NOT NULL DEFAULT '-1' COMMENT '身份',

`contract` int(11) NOT NULL DEFAULT '0' COMMENT '进程编号',

`contractname` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '进程名',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`note` varchar(512) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '备注说明',

`dagreement` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '协议类型 -1:无 1:标准分成 2:原标准买断 3:征文标准分成 4:征文标准买断 5:X签新签 6:X签转签 7:线下签约 8:上架转买断(原枚举为3)10:未知',

`buyoutprice` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '买断金额 元(x签 专用)',

`flow_id` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '买断申请表中的oa流程标识',

`minwords` decimal(15,3) NOT NULL DEFAULT '0.000' COMMENT '最小字数单位 万字(x签)',

`maxwords` decimal(15,3) NOT NULL DEFAULT '0.000' COMMENT '最大字数单位 万字(x签)',

`originpid` int(11) DEFAULT NULL COMMENT 'x签原合同的pid',

`finishstatus` int(11) DEFAULT NULL COMMENT '提签时完本状态 连载中(30),已完结(50),其他 -1',

`deductiondivideamount` decimal(15,3) DEFAULT NULL COMMENT '扣除分成金额',

`minneedwords_month` decimal(15,3) DEFAULT NULL COMMENT '每月最小交稿字数 单位:万字(x签)',

`maxneedwords_month` decimal(15,3) DEFAULT NULL COMMENT '每月最大交稿字数 单位:万字(x签)',

PRIMARY KEY (`IDX`),

KEY `CBID` (`CBID`),

KEY `originpid` (`originpid`)

) ENGINE=InnoDB AUTO_INCREMENT=863304 DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='签约过程'

4.ccBkserviceDB.oversea_editor_group表

responsibility 增加枚举11:签约编辑

5.新增ccOverseaDB.oversea_signonline_msg

字段 类型 是否为null 其它

IDX bigint N ID生成器

CBID bigint N

cauthorid bigint N

send_reason int N 触发的原因,1:主编提签,2:签约审核不通过, 3:签约成功, 4:循环提示填写签约基本信息, 5: 循环提示上传合同

msg text N 消息内容

send_time datetime N 消息发送时间

msg_route int N 1:发送邮箱,2:发送给推送消息

email_en varchar(600) Y 加密存储消息的接收邮箱,如果不是发送邮箱,那么不填即可

status int N -1:发送失败,1:发送成功

error_msg text Y 发送消息失败的原因

sender_name varchar(255) N 消息发送人

idx(cbid,send_time)

6.新增签约记录表 复用国内,并且增加字段ccAuthorBaseDB.signonline( signonlinepre也是 )

新增字段

字段 类型 是否为null 其它

source int N 数据来源,默认1:国内,2:海外

新增枚举

字段 类型 是否为null 其它

cardtype tinyint N 证件类型 0:身份证(基本信息,不作为支付依据) 1:护照,2:军官证,3:学生证,4:海外证件, 更新为: 枚举同author_payinfoxx表card_type

signonline表的修改发送书籍事件,不通知下游

信息 对应字段 其它

作家真实姓名 realname_en 加密存储

作家笔名 authorname

性别 s.e.x

生日 birthday_en date格式加密存储1999-09-09 格式加密存储

作家提供的ID Card上的证件号码 cardid_en 加密存储

监护人证件号 keeper_cardid_en 加密存储

邮编 zipcode

手机号 mobile_en 加密存储,加密前是不包含国家地区码

手机号国家地区码 telpre

邮箱 email_en 加密存储

电话 phone_en 加密存储

qq qq_en 加密存储

微信 wechat_en 加密存储

紧急联系人姓名 contactname_en 加密存储

紧急联系人手机国家地区码 contacttelpre

紧急联系人手机号 contactmobile_en 加密存储

收款账户名称 bank_openname_en 加密存储

账户号码 bank_account_en 加密存储

银行名称 bank

分行名称 bank_info

联系地址 address_en 加密存储

新增 signonline_exp ( signonlinepre_exp )

字段 类型 是否为null 其它

IDX bigint N 主键,signonline表主键

job varchar(512) N 默认空字符串,

nationality varchar(10) N 作家国籍简写,默认空字符串

guid bigint Y 作者在用户中心的uid

guarder_card_type tinyint N 监护人证件类型,默认0,枚举同cardtype字段

skype_en varchar(256) Y skype账号,加密存储

discord_en varchar(256) Y discord账号,加密存储

whatsapp_en varchar(256) Y whatsapp账号,加密存储

line_en varchar(256) Y line账号,加密存储

facebook_ma.s.sage_en varchar(256) Y facebook ma.s.sage账号,加密存储

contact_email_en varchar(600) Y 紧急联系人邮箱,加密存储

swiftcode varchar(100) N 默认空字符串,银行识别码

country_abbreviation varchar(10) Y 开户行所在国家地区简写

user_address_en text Y 用户在开户行开户时所留住址(加密字段)

bank_address varchar(255) Y 分行地址

signed_contract_en text Y 作家签字合同信息,[{"sort":1,"url":"http://www.google.com"},{"sort":2,"url":"http://www.baidu.com"}] 形式加密存储,海外使用多个图片

sealed_contract_en text Y 公司盖章后合同信息,[{"sort":1,"url":"http://www.google.com"},{"sort":2,"url":"http://www.baidu.com"}] 形式加密存储,只是使用pdf,1个文件

card_images_en text Y 作家证件附件 [{"sort":1,"url":"http://www.google.com", "type":1},{"sort":2,"url":"http://www.baidu.com", "type":2}] 形式加密存储, 身份证时, sort:1:正面,2:反面

guarder_card_images_en text Y 监护人证件附件 [{"sort":1,"url":"http://www.google.com", "type":1},{"sort":2,"url":"http://www.baidu.com", "type":2}] 形式加密存储, 身份证时, sort:1:正面,2:反面

7.新增审核日志表ccAuthorBaseDB.signonlineauditlog(复用国内表结构)

CREATE TABLE `signonlineauditlog` (

`IDX` bigint(20) unsigned NOT NULL COMMENT '主键',

`signid` bigint(20) NOT NULL COMMENT '合同ID',

`cauthorid` bigint(20) NOT NULL DEFAULT '0' COMMENT '作家ID',

`CBID` bigint(20) NOT NULL DEFAULT '0' COMMENT '书号',

`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '审核状态:1审核通过,2审核不通过',

`audittime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '审核时间',

`auditor` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '审核人',

`reason` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '不通过原因',

PRIMARY KEY (`IDX`),

KEY `signid` (`signid`),

KEY `cauthorid` (`cauthorid`),

KEY `cbid` (`CBID`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='网上签约日志表'

增加字段:reason_id: 原因id, int, not null, default 0;

reason 从varchar(200)改为varchar(2048),

idx(CBID,audittime)

8.新增ccAuthorBaseDB.signonline_result 表结构同signonline表, signonlie_result_exp 表结构同signonline_exp

9.新增ccAuthorBaseDB.signonlineconfig (表结构同国内,同步国内数据到海外)

CREATE TABLE `signonlineconfig` (

`IDX` bigint(20) unsigned NOT NULL COMMENT '合同模板id',

`site` int(11) NOT NULL DEFAULT '5' COMMENT '站点属性 5:起点男生 1:创世 2:云起 3:起点女生 4:其他 6:第三方 9:起点文学 10:海外 21:xy小说阅读网 22:xx潇湘 23:hx红袖添香 24:yq言情小说吧',

`ctype` tinyint(4) NOT NULL COMMENT '协议类型 -1:无 1:标准分成 2:原标准买断 3:征文标准分成 4:征文标准买断 5:X签新签 6:X签转签 7:线下签约 8:上架转买断(原枚举为3)10:未知',

`TID` bigint(20) unsigned NOT NULL COMMENT '合同模版版本号',

`tname` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '合同模版名称',

`status` tinyint(4) DEFAULT '-1' COMMENT '状态 -1:无效 1:有效',

`articleid` bigint(20) DEFAULT NULL COMMENT '征文ID',

`counselnote` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '咨询文案,含有标签,要替换',

`creator` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建人',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`updater` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '最后更新人',

`updatetime` datetime DEFAULT NULL COMMENT '最后更新时间',

PRIMARY KEY (`IDX`),

KEY `tid` (`TID`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='在线签约合同表'

10.新增表ccAuthorBaseDB.signtemplate(表结构同国内,同步国内数据到海外)

CREATE TABLE `signtemplate` (

`TID` bigint(20) unsigned NOT NULL COMMENT '合同模板版本号',

`tname` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '合同模版名称',

`shortname` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '合同模版版本名(导出用)',

`template` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '模版内容地址(用于生成PDF)',

`rightlist` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '权利项数组(用于同步版权系统)',

`status` tinyint(4) DEFAULT '-1' COMMENT '状态 -1:无效 1:有效',

`creator` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建人',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`updater` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '最后更新人',

`updatetime` datetime DEFAULT NULL COMMENT '最后更新时间',

`isAuthorBanksynchro` tinyint(4) DEFAULT '2' COMMENT '是否同步作者银行信息1,是,2否',

`templateconfig` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '模板配置,用于模板里的控制,如删除指定页',

PRIMARY KEY (`TID`),

KEY `tname` (`tname`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同模版版本表'

11 . ccAuthorDBxx.author_payinfoxx表

枚举变更

字段 类型 是否为null 其它

card_type int Y 0,证件类型 0:身份证(基本信息,不作为支付依据) 1:护照,2:军官证,3:学生证,4:海外证件, 新增5: 驾驶证 4:其它

12 ccBkserviceDB 新增表field_modified_log(intservice裁剪图片时会用到)

CREATE TABLE `field_modified_log` (

`IDX` bigint(20) NOT NULL COMMENT 'IDX',

`tablePk` bigint(20) unsigned NOT NULL COMMENT '原表主键',

`tableName` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`fieldName` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`newValue_en` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '新字段值',

`originValue_en` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '原始字段值',

`createtime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`creator` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建者',

PRIMARY KEY (`IDX`),

KEY `table_field_pk` (`tableName`,`fieldName`,`tablePk`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字段修改日志表'

13 . 新增表 ccBkserviceDB.oversea_editor_info (签约跟进人配置)

字段 类型 是否为null 其它

IDX int N 主键,自增

user_id int N 用户id,serviceuser表主键

s.e.xattr varchar(32) N 男女频,英文逗号分隔,枚举同书籍表

categoryid varchar(512) N 用逗号分隔

language varchar(255) N 用逗号分隔

status int N 是否有效,-1无效,1有效

creator_id int N 创建人id.serviceuser表主键

create_time datetime N

updator_id int N 更新人id,serviceuser表主键,创建时同creator_id

update_time datetime N 创建时同createtime

14 . 新增协议代码表ccCopyrightDB

CREATE TABLE `protocoltype` (

`typeid` int(11) NOT NULL AUTO_INCREMENT COMMENT '协议类型 代码',

`typename` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '协议类型名称',

`status` tinyint(4) DEFAULT '1' COMMENT '状态:-1:无效 1:有效',

`creator` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '提交人',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '提交人员工编号',

`updater` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修改人',

`updatetime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',

PRIMARY KEY (`typeid`)

) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='协议类型代码表'

15 . 新增ccAuthorBaseDB.signonlinestep表

CREATE TABLE `signonlinestep` (

`IDX` bigint(20) unsigned NOT NULL COMMENT 'IDX',

`cauthorid` bigint(20) NOT NULL COMMENT '作家id',

`CBID` bigint(20) NOT NULL COMMENT '书的id',

`step` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0:签约意向页 11:拒绝签约结束页 10:版权信息确认页 21:非大陆身份证结束页 22: 版权信息异常页 20:签约说明页 30:在线签约信息填写页 40:已保存在线签约信息填写 50:等待审核页 60:检查合同页',

`refuse_cause` tinyint(4) DEFAULT NULL COMMENT '1:该作品已经与其他网站或者出版社签约, 2:没有时间进行作品的更新, 3:纯粹练笔,无签约意向, 4:其他',

`is_alone` tinyint(4) DEFAULT NULL COMMENT '是否独立完成 (1:是, 0:否)',

`is_all_copyright` tinyint(4) DEFAULT NULL COMMENT '是否拥有所有版权 (1:是, 0:否)',

`is_guarder_agreen` tinyint(4) DEFAULT NULL COMMENT '(未成年)监护人是否同意签约 (1:是, 0:否)',

`status` tinyint(4) DEFAULT NULL COMMENT '签约意向 (1:接受, 0:拒绝)',

`createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`updatetime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '修改时间',

`is_editor_confirm` tinyint(4) DEFAULT '0' COMMENT '编辑是否确定过用户成年信息 (1:是, 0:否)',

`editupdatetime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '编辑修改时间',

`edit_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '编辑id ',

`edit_name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '编辑名字 ',

`is_exclusive_sign` tinyint(4) DEFAULT NULL COMMENT '是否是独家签约 (1:是, 0:否)',

`refuse_cause_detail` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '详细拒绝原因',

PRIMARY KEY (`IDX`),

UNIQUE KEY `cbid_1` (`CBID`),

KEY `cauthorid_1` (`cauthorid`)

) ENGINE=InnoDB DEFAULT CHa.r.s.eT=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='在线签约步骤表'

在step中增加枚举

70:海外基础信息,:80:海外填写签约信息, 90:海外预览合同页,100:海外上传签字合同页. 110:海外审核失败页

16 . ccAuthorBaseDB增加表author_signonline_pennamelock

字段 类型 是否为null 其它

cauthorid bigint N 主键

change_penname tinyint N 默认-1,-1:无法修改,1:可以修改

此表的修改,请发送作家事件(不需通知下游),更新到做作家的主缓中

17 审核不通过原因配置表ccOverseaDB.audit_reason_config

字段 类型 是否为null 其它

IDX int N 主键,自增

business_type int N 业务类型,1:在线签约

name varchar(127) N 错误原因,intservice下拉列表,比如证件不对,合同签字不合理

details text N 给作家的提示,json格式,[{ "sort": 1,"type":2,"content":"11222"}], type枚举1:文本,2:正确图片,3:错误图片, content为具体的内容,可以使文本内容,也可以是图片url,由type确定

status int N 是否有效,-1:无效,1:有效

create_time datetime N 创建时间

update_time datetime N 更新时间,创建时同create_time

3.流程图

状态机

图片描述

4,修改点

1.责编提签

respinsibleeditor表插入时,请写入责编提前时选的协议类型

2. 主编提签

novelscontract表中dagreement字段需要写入字段.

scotnractlog表中需要插入记录

需要发送消息,调用接口,并且向ccAuthroBaseDB.oversea_signonline_msg插入记录

3. 责编分组

增加签约编辑设置

4. 编辑工作->签约作品列表

不能修改签约进度.

不可以修改协议类型

5. 签约工作

书籍solr新增字段 ccAuthorBaseDB.signonline表status字段加到solr,字段名为signonline_status 支持搜索, ccBkserviceDB.novelscontract表launchtime 字段加到solr,字段名为launchtime ,支持搜索.

单页修改签约进度时,scontractlog需要添加日志,备注需要写入scontractlog的note字段.

审核通过或不同过时,需要更新signonline表状态,signonline_result状态, signonlineauditlog加入日志,novelscontract表contract进度更新,scontractlog表添加记录.给作家发送消息时,需向oversea_signonline_msg 插入记录

6. 编辑信息管理页

设置指派编辑信息

7. 作家填写签约信息

在作家填写信息(没有提交合同,最终进审时),信息填写到signonlinepre, signonlinepre_exp表中,注意signonlinestep表也需要插入或者更新.

只有提交最后合同后,signonline, signonline_exp同时插入数据(或者更新),表的主键值相同.同时signonline_result, signonline_result_exp 也需要插入数据(更新signonline, signonline_exp表时,对应签约类型的signonline_result, signonline_result_exp表也同步更新, 每一个CBID在signonline中只有一条记录, cbid+协议类型在signonline_result是唯一的)

上传签字合同时,需要是图片格式(PNG,JPG,JPEG 这三种,ocr接口限制), pdf需要转换,可能会影响ocr

8. 循环发送消息,数据回流到国内,对国内提供接口,

9. 生成合同接口,生成流流水号接口(嘴爷,需要重新布置一套).

10. change_penname加入主缓.

11. novelscontract表contract变更,signonlinestep表step变更,以及原创小说以及fanficsigntype变为249均需调用接口,重新计算change_penname的逻辑

12. intservice在未封闭signtype修改入口之前,也需要调用潘潘的接口

5,国内数据交互

1 初步确认结论

根据填写的信息实时生成合同

合同流水号生成

合同分成比例,协议类型,合同模板需要提供

合同信息,参与方信息,权利项信息,发稿要求目前参考国内,如需修改后面可以去掉或增加

合同确认,修改书的信息和作者信息统一调用海外接口

书名和作者名修改也是调用海外接口

版权状态导入要修改之处海外书修改,统一调用海外接口

我方主体公司 Cloudary Holdings Limited 枚举:100

签约作家逻辑此次需要完成

2 依赖数据

数据库 表 国内写字段 读写 处理方式

ccAuthorBaseDB signonline status, updatetime 国内外均读和写,国内合同同步完成后,修改status=3, updatetime=now 方式一

ccAuthorBaseDB signtemplate 所有 国内读写,海外读 初始同步,如果国内变更,可以出发同步到海外

ccAuthorBaseDB signonlieconfig 所有 国内读写,海外读 初始同步

ccCopyrightDB protocoltype 所有 国内读写,海外读 同上

ccAuthorBaseDB signonline_result status, updatetime 国内外均读和写,国内合同同步完成后,修改status=3, updatetime=now 方式一

ccBkServiceDB novelscontract contract 国内外均读写 方式一

ccBookDBxx book_novelsxx t.i.tle, signtype, splitype, signtime,updatetime 国内均读写,签约后如果修改书名,需要在国内版权系统修改 方式一

ccAuthorDBxx authorxx authorname 国内均读写,签约后如果修改笔名,需要在国内版权系统修改 方式一

ccAuthorBaseDB authorbankinfo 银行信息 国内均读写,签约后修改走国内版权系统 方式一

方式一: 直接调用海外接口写,海外更新后,触发回流,回流到国内, 读也调用国内接口(需要配置ip)

3. 提供国内调用的接口

-- 修改数据接口

修改书名接口

修改作者笔名接口

版权状态导入接口(修改书和作者信息)

修改novelscontract签约进度接口

修改signonline状态接口

修改银行信息接口

-- 获取数据接口

获取novelscontract签约进度接口

在线签约数据列表获取接口,要分页

获取在线签约明细数据,具体到单本,接口

获取单本书或多本书接口

获取单作者或者多作者接口

获取海外合同文件(流水号,模板ID)接口

-- OCR盖章合同

提供给海外盖章后的合同接口

4 海外回流到国内的表新增

ccAuthorBaseDB.signonline, signonline_exp

ccAuthorBaseDB.signonline_result signonline_result_exp

ccBkservieDB.novelscontract(主键自增,需要改成ID生成器,本期历史IDX不做处理.暂时不会回流到国内了)

ccAuthorBaseDB.authorbankinfo(主键自增,需要改成ID生成器,历史IDX需要处理)

ccAuthorBaseDB.country_info

ccOverseaDB.business_country

5. 国内同步到海外

ccCopyrightDB.protocoltype

ccAuthorBaseDB.signtemplate

ccAuthorBaseDB.signonlieconfig

6 注意事项

合同同步时,需要重新生成地址,因为海外不能访问国内cos,同理国内也不能访问海外cos,

获取信息,流水号生成,作家专区掉方法生成ID生成最少10+合同类型2+我方主体3 在线签约合同证件页上传,ID生成是单独生成的

国内修改笔名时,同步到海外需要更改translator, authorxx表,也需要修改书表上的authorname

6. 海外修改入口封闭

表 字段 含义 入口 判断条件 如果需要修改 具体标准(不包含供国内调用的接口逻辑)

ccBookDBxx.book_novelsxx t.i.tle 书名 inkstone, intservice, sdk 针对海外原创的小说和fanfic 确认信息之前,或者被打回 才可以被修改 签约后在版权内修改 1. (signtype != 249) and (signonlinestep无记录 or signonlinestep.step in (0,70,80,90) or novelscontract.contract in(100,110))

ccBookDBxx.book_novelsxx signtype, signtime, splittype 签约类型,签约时间,分成属性 intservice 除了创建书籍时的默认值,海外原创海外原创的小说和fanfic 均不能修改signtype,intservice只做展示 国内调用海外接口修改除外 走国内版权系统

ccAuthorDBxx.authorxx authorname 作家笔名 下游入口 需要加限制,提供接口判断接口是否可以修改, 只有确认合同之前才可以修改 ,审核不通过也可以, 国内调用海外接口除外 国内版权系统 change_penname

ccOverseaDB.translator penname 作家笔名 下游入口 作家所有书籍均处于确认信息之前 如果已经签约,需要在国内版权系统 change_penname

ccAuthorDBxx.author_payinfoxx card_type, card_id_en, realname_en 身份证件类型,证件号,真实姓名 inkstone, intservice, sdkapi, 作家如果有书籍,inkstone:确认信息之前,或者被打回 国内版权系统 change_penname

ccAuthorBaseDB authorbankinfo 所有字段 详见表结构 作家如果有书籍:确认信息之前,或者被打回 国内版权系统 change_penname

判断是否可以修改信息均由业务支持组封装接口实现,

change_penname逻辑:

作家所有书籍均符合

(signtype != 249) and (signonlinestep无记录 or signonlinestep.step in (0,70,80,90) or novelscontract.contract in(100,110))

部分历史线下签约书籍逻辑需要中插入数据

7. 依赖下游

笔名修改提供逻辑下游变更,内容侧需要提供接口,判断是否可以修改笔名.

需要依赖下游接口,来直接修改用户笔名(不加入1中判断是否可以修改笔名的逻辑)

8. 历史问题

ccAuthorBaseDB.authorbankinfo表signcompany字段有0,1,100,均用错了,需要修正

签约公司主体表,需要加入签约公司配置,signcompany会用到这个枚举

9, 上线步骤

第一步: 1. 事件系统change_penname上线(加入主缓线上).2. solr加字段,3. 国内数据配置表同步到海外. 4. 海外authorbankinfo插入数据时,signcompany设置为100.5. 计算change_penname的接口上线.6. novelscontract表,authorbankinfo 主键变为ID生成器生成 . 7. 给作家推送发消息接口上线

第二步:1. intservice修改signtype调用change_penname的接口逻辑上线.2. 生成合同接口上线, 3. authorbankinfo表signcompany字段全部刷成100, 4. novelscontract表,authorbankinfo 历史数据刷新上线,历史数据处理. ,5:合同编号ID生成器接口上线.6. 历史数据发消息,solr中补全历史数据

第三步: 1. change_penname历史数据处理.

第四步: 1. 判断是否修改笔名,书名,银行信息的接口上线 2. 海外发站短接口(inkstone以及intservice调用)

第五步: 1. 封禁修改数据入口,作者名,书名 上线. 2. 下游禁止修改用户名功能上线. 5. 下游供修改笔名接口上线.

第六步: 1. intservice在线签约功能上线.2. 海外供国内调用接口上线, 3. 回流上线, 4: 循环发送消息上线. 5. intservice修改signtype的入口关闭

第七步: 1. novelscontract表历史数据协议数据处理

第八步: 1. inkstone在线签约上线

第九步: 1. 国内版权系统上线

标签 编辑

附件 添加

评论

@通知他人,增加评论/处理意见

目录

1,背景

2,表设计

3.流程图

4,修改点

5,国内数据交互

6. 海外修改入口封闭

7. 依赖下游

8. 历史问题

9, 上线步骤

Click Like and comment to support us!

  • Related chapter:

RECENTLY UPDATED NOVELS

About Test Book2 2 Test Character2 novel

You're reading Test Book2 by Author(s): rickjiang. This novel has been translated and updated at LightNovelsOnl.com and has already 1297 views. And it would be great if you choose to read and follow your favorite novel on our website. We promise you that we'll bring you the latest novels, a novel list updates everyday and free. LightNovelsOnl.com is a very smart website for reading novels online, friendly on mobile. If you have any questions, please do not hesitate to contact us at [email protected] or just simply leave your comment so we'll know how to make you happy.