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, 上線步驟