当前位置: 首页 > news >正文

公司做企业网站深圳有哪些外贸公司

公司做企业网站,深圳有哪些外贸公司,怎么查网站接入商,自适应网站建站价格1.背景 产品需要实现一个待办提醒功能#xff0c;就是核心业务发生变更即提醒业务员去处理相关业务。譬如#xff1a;订单上传了支付凭证#xff0c;那么就会提醒相关业务员去待办列表操办。 2.表设计 其实表设计主要是两张表sys_todo、sys_todo_detail 一张是待办核心表…1.背景 产品需要实现一个待办提醒功能就是核心业务发生变更即提醒业务员去处理相关业务。譬如订单上传了支付凭证那么就会提醒相关业务员去待办列表操办。 2.表设计 其实表设计主要是两张表sys_todo、sys_todo_detail 一张是待办核心表主要是记录待办类型待办业务id等。 CREATE TABLE sys_todo (id bigint NOT NULL AUTO_INCREMENT COMMENT id,model int NOT NULL DEFAULT 0 COMMENT 归属模块: 0-crm 1-srm,type int NOT NULL DEFAULT 0 COMMENT 待办类型,biz_id bigint NOT NULL DEFAULT 0 COMMENT 业务id,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci COMMENT待办统计表; 另一张是待办详情表主要是记录这个待办能做哪些操作。 CREATE TABLE sys_todo_detail (id bigint NOT NULL AUTO_INCREMENT COMMENT id,todo_id bigint NOT NULL DEFAULT 0 COMMENT sys_todo表id,title varchar(50) NOT NULL DEFAULT COMMENT 标题,url varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT COMMENT 地址,is_pop int NOT NULL DEFAULT 0 COMMENT 是否弹窗 0-否 1-是,content varchar(3000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT COMMENT 内容,sort_num int NOT NULL DEFAULT 0 COMMENT 排序,PRIMARY KEY (id),KEY idx_todo_id (todo_id) USING BTREE ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci COMMENT待办统计详情表; 举例sys_todo 有个待办类型是【上传支付凭证】id1sys_todo_detail 待办详情表就有todo_id 为1的内容譬如【查看】、【审核】操作的两条记录。 当然这些表具体实现得根据具体业务设计来实现。 3.如何实现 3.1 业务埋点 业务埋点也就是在每一个相关业务代码里面加上待办的埋点让相关待办业务内容插入待办表。譬如【上传支付凭证】就得在上传支付凭证的代码最后上传成功的地方写上上传待办的业务代码。 3.2 切面Aspect 策略模式 3.2.1 先定义好切面 这里我在项目里面定义好切面类。 Component Aspect public class SrmTodoAspect {//这里拦截mybatis-plus底层方法Pointcut((execution(* com.baomidou.mybatisplus.extension.service.IService.update*(..)) ||execution(* com.baomidou.mybatisplus.extension.service.IService.save*(..)) ||execution(* com.baomidou.mybatisplus.core.mapper.BaseMapper.update*(..)) ||execution(* com.baomidou.mybatisplus.core.mapper.BaseMapper.insert(..))) )public void todo(){};//策略AResourceprivate ATodoStrategy aTodoStrategy;//策略BResourceprivate BTodoStrategy bTodoStrategy;//线程池Resourceprivate TaskExecutor taskExecutor;Around(todo())public Object around(ProceedingJoinPoint point) throws Throwable {Object[] args point.getArgs();Object obj point.proceed();Object arg args[0];ListObject paramList null;if(Objects.isNull(arg)){return obj;}if(arg instanceof ArrayList){paramList (List)arg;}else {paramList Arrays.asList(args);}if (CollectionUtil.isEmpty(paramList)){return obj;}/** 这里用到捕获异常很关键不能因待办出现异常而影响主流程* 用线程池避免待办处理过慢影响主流程性能*/taskExecutor.execute(()-{try{Thread.sleep(1000L);dealTodoStrategy(paramList);}catch (Exception e){}});return obj;}/** TodoContext 是策略模式的上下文* aTodoStrategy、bTodoStrategy 是具体的策略*/private void dealTodoStrategy(ListObject paramList) {TodoContext context null;Object param paramList.get(0);if(param instanceof A){context new TodoContext(aTodoStrategy);}else if(param instanceof B) {context new TodoContext(bTodoStrategy);}if(context ! null){context.executeStrategy(paramList);}}}特别说一句这里其实最初的设计并不是用切面而是用mybatis拦截器 Interceptor 去实现获取到insert或update后的实体的但是拦截mybatis-plus的saveBatch方法能拿到List实体但是没有id。因此不能很好处理待办业务。原因大家可以去看下CSDN。 3.2.2 定义策略模式 策略接口TodoStrategy  public interface TodoStrategy {void dealTodo(List list); }Context类 public class TodoContext {private TodoStrategy strategy;public TodoContext(TodoStrategy strategy){this.strategy strategy;}public void executeStrategy(List list){strategy.dealTodo(list);} } 策略实现类 ATodoStrategy  Service public class ATodoStrategy implements TodoStrategy {Overridepublic void dealTodo(List list) {if(CollectionUtil.isEmpty(list)){return;}TodoForm todoForm null;ListEnquiry enquiryList (List)list;ListLong enquiryIdList enquiryList.stream().map(Enquiry::getId).collect(Collectors.toList());//根据id找到数据库实体类enquiryList enquiryService.findList(new EnquiryQuery().setIdList(enquiryIdList));//遍历实体类然后根据不同的实体状态去实现待办规则新增或消除功能for(Enquiry enquiry : enquiryList){Long id enquiry.getId();//新增去报价待办if(EnquiryStatusEnum.WAIT_QUOTE.getKey().equals(enquiry.getStatus())){}//消除去报价待办if(EnquiryStatusEnum.HAD_QUOTE.getKey().equals(enquiry.getStatus())){}}} }4.总结 待办实现方式两种①埋点 ②切面Aspect 策略模式 个人比较推荐② 因为这个代码设计好处如下 1.不需要“过分”埋点。埋点的话容易漏埋点。譬如新增代码业务代码在插入操作后埋点了但是突然另一个业务也有插入操作但是忘记埋点那么待办就容易遗漏。 2.代码集中维护模块分层清晰。也就是待办新增或消除逻辑统一写在策略模式里面了只需要去策略模式里面维护即可。这样也能减少在业务代码过多埋点造成代码臃肿。
http://www.hkea.cn/news/14307739/

相关文章:

  • 专业网站建设必要性今天特大军事新闻事件
  • 邢台建设局网站上中标公示查询德阳手机网站建设
  • 网站首眉怎么做seo免费网站建设
  • 没有网站怎么做网络推广帮非法集资公司做网站违法吗
  • 地图网站抓取石景山富阳网站建设
  • 大学网站建设管理办法网站后台 全局配置
  • 专业的公司网站开发教育培训网站
  • 网站建设七大步骤怎么给网站做超链接
  • 白银市住房与建设局网站网页制作官方网站
  • 网站空间与域名的关系仿腾讯视频网站源码
  • 商丘市做网站的公司建立网站大概投入
  • 做直播网站要多少钱短信平台
  • 怎么做一淘宝客网站wordpress完全开源吗
  • 做网站选哪家公司好安徽建网站
  • 网站建设人员配置学电子商务有前途吗
  • 可以左右滑动的网站网站建设与管理专业题目
  • 网站开发摊销期怎样不用代码就能建网站
  • 教育培训网站设计国家企业信息公示系统查询入口
  • 北京建设交易工程信息网站网站项目进度
  • 十大搜索引擎网站做公司年报网站登录密码是什么
  • 企业网站的宣传功能体现在哪里长治网站设计制作网站
  • 网站开发前台网站开发哪个好
  • 英文 edm营销 的网站 与 工具北京做app的公司有哪些
  • 东阳实惠营销型网站建设厂家app制作教学视频
  • 网站 入站规则 设置广告制作费和广告服务费区别
  • 做pc端网站教程搜索引擎不收录网站
  • 常见网站颜色搭配企业管理咨询心得体会
  • 网站建设专题页那个做网站好
  • 青岛城乡建设局网站首页盱眙县建设局网站
  • 自己做网站可以随便起名字吗凡科官网登录页面