Test Book2 2 Test Character2

/

Test Book2



Test Book2 2 Test Character2


testohJava技术干货首发于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 编译器无法进行优化,所以要手动使用StringBuildersb.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;// "" + valueString 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-25Java程序员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表dagreement2 . ccBkserviceDB.novelscontract表(海外已有)新增字段字段 类型 是否为null 其它tracker_id int Y 签约跟进人idupdate_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 Ncauthorid bigint Nsend_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_typesignonline表的修改发送书籍事件,不通知下游信息 对应字段 其它作家真实姓名 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 作者在用户中心的uidguarder_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_exp9.新增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 Nupdator_id int N 更新人id,serviceuser表主键,创建时同creator_idupdate_time datetime N 创建时同createtime14 . 新增协议代码表ccCopyrightDBCREATE 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_time3.流程图状态机图片描述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需要转换,可能会影响ocr8. 循环发送消息,数据回流到国内,对国内提供接口,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_expccAuthorBaseDB.signonline_result signonline_result_expccBkservieDB.novelscontract(主键自增,需要改成ID生成器,本期历史IDX不做处理.暂时不会回流到国内了)ccAuthorBaseDB.authorbankinfo(主键自增,需要改成ID生成器,历史IDX需要处理)ccAuthorBaseDB.country_infoccOverseaDB.business_country5. 国内同步到海外ccCopyrightDB.protocoltypeccAuthorBaseDB.signtemplateccAuthorBaseDB.signonlieconfig6 注意事项合同同步时,需要重新生成地址,因为海外不能访问国内cos,同理国内也不能访问海外cos,获取信息,流水号生成,作家专区掉方法生成ID生成最少10+合同类型2+我方主体3 在线签约合同证件页上传,ID生成是单独生成的国内修改笔名时,同步到海外需要更改translator, authorxx表,也需要修改书表上的authorname6. 海外修改入口封闭表 字段 含义 入口 判断条件 如果需要修改 具体标准(不包含供国内调用的接口逻辑)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_pennameccOverseaDB.translator penname 作家笔名 下游入口 作家所有书籍均处于确认信息之前 如果已经签约,需要在国内版权系统 change_pennameccAuthorDBxx.author_payinfoxx card_type, card_id_en, realname_en 身份证件类型,证件号,真实姓名 inkstone, intservice, sdkapi, 作家如果有书籍,inkstone:确认信息之前,或者被打回 国内版权系统 change_pennameccAuthorBaseDB 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并...还没有评论评论由作者筛选后显示发布选择语言my6工作台文档项目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表dagreement2 . ccBkserviceDB.novelscontract表(海外已有)新增字段字段 类型 是否为null 其它tracker_id int Y 签约跟进人idupdate_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 Ncauthorid bigint Nsend_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_typesignonline表的修改发送书籍事件,不通知下游信息 对应字段 其它作家真实姓名 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 作者在用户中心的uidguarder_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_exp9.新增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 Nupdator_id int N 更新人id,serviceuser表主键,创建时同creator_idupdate_time datetime N 创建时同createtime14 . 新增协议代码表ccCopyrightDBCREATE 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_time3.流程图状态机图片描述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需要转换,可能会影响ocr8. 循环发送消息,数据回流到国内,对国内提供接口,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_expccAuthorBaseDB.signonline_result signonline_result_expccBkservieDB.novelscontract(主键自增,需要改成ID生成器,本期历史IDX不做处理.暂时不会回流到国内了)ccAuthorBaseDB.authorbankinfo(主键自增,需要改成ID生成器,历史IDX需要处理)ccAuthorBaseDB.country_infoccOverseaDB.business_country5. 国内同步到海外ccCopyrightDB.protocoltypeccAuthorBaseDB.signtemplateccAuthorBaseDB.signonlieconfig6 注意事项合同同步时,需要重新生成地址,因为海外不能访问国内cos,同理国内也不能访问海外cos,获取信息,流水号生成,作家专区掉方法生成ID生成最少10+合同类型2+我方主体3 在线签约合同证件页上传,ID生成是单独生成的国内修改笔名时,同步到海外需要更改translator, authorxx表,也需要修改书表上的authorname6. 海外修改入口封闭表 字段 含义 入口 判断条件 如果需要修改 具体标准(不包含供国内调用的接口逻辑)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_pennameccOverseaDB.translator penname 作家笔名 下游入口 作家所有书籍均处于确认信息之前 如果已经签约,需要在国内版权系统 change_pennameccAuthorDBxx.author_payinfoxx card_type, card_id_en, realname_en 身份证件类型,证件号,真实姓名 inkstone, intservice, sdkapi, 作家如果有书籍,inkstone:确认信息之前,或者被打回 国内版权系统 change_pennameccAuthorBaseDB 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, 上线步骤








Tips: You're reading Test Book2 2 Test Character2, please read Test Book2 2 Test Character2 online from left to right.You can use left, right, A and D keyboard keys to browse between chapters.Use F11 button to read novel in full-screen(PC only).

Test Book2 2 Test Character2 - Read Test Book2 2 Test Character2 Online

It's great if you read and follow any Novel on our website. We promise you that we'll bring you the latest, hottest Novel everyday and FREE.


Top