软件开发案例参考

news2024/10/7 8:30:30

前言:基于平台现有需求进行新功能模块开发与实现,以下内容为部分源码解析,仅提供一些思路参考,不予以客观指导,毕竟条条大路通罗马嘛;

语言:C#

工具:visual studio 2017/visual studio code

框架:.NET formwork 4.5

应用:外部API

准备工作:

        新建文件-visual C#-.net fromwork 选择4.5版本

1.继承服务插件几类:AbstractOperationServicePlugIn

2.引用,创建事件事务执行后重写方法;

public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
}

3.API准备,

4.创建字符串列表,使用StreamReader方法,从指定文件中读取数据

List<string> objects = new List<string>();
using (StreamReader reader = new StreamReader(@"your_path"))
            {
                while (!reader.EndOfStream)
                {
                    string line = reader.ReadLine();
                    
                    objects.Add(line);
                }
            }

 5.根据自定义文本中的内容进行遍历后打印,结合需求;

 Console.WriteLine(objects.First().ToString());
 Console.WriteLine(objects.Last().ToString());

6.建立客户端连接,登录

your_client client = new your_client(objects.First().ToString());
//此处登录信息方法ValidateLogin中参数以及参数类型结合个人所设
var loginResult = client.ValidateLogin("id", "user", objects.Last().ToString(), language);
var resultType = JObject.Parse(loginResult)["LoginResultType"].Value<int>();

7.获取登录结果之后,如果需要API数据库进行操作可参考一下内容同,如不需要则自行跳过;

 if (resultType == 1)
            {
//验证是否登录成功,登录成功以逗号进行分割
                var ids = string.Join(",",e.DataEntitys.Select(o => o[0]));

                string viewsql = string.Format("/dialect/--dialect为注释,数据库使用的事SQLserver,此处书写sql语句且将获取登录类型信息作为sql语句的最后条件进行查询",ids);
//调用此方法执行sql语句,获取结果存储在MAUCOL集合中,this.context连接上下文
//也可自定义方法是使用context,(public void 方法名(Context ctx){}),将this.context变更ctx即可
                DynamicObjectCollection MAUCOL = DbUtils.ExecuteDynamicObject(this.Context, viewsql);

8.在此假设对数据库中查询出来的数据为A\B\C\D\E,对此进行操作,思路为拆分信息后进行物理自动重组形成新的逻辑内容;

 if(MAUCOL != null && MAUCOL.Count > 0)
                {
//判断是否有数据进行操作,遍历,取出所需要的数据进行下一步操作;
                    for(int x = 0; x < MAUCOL.Count; x++)
                    {
//获取各个字段;
                        string a = Convert.ToString(MAUCOL[x]["A"]);
                        string b= Convert.ToString(MAUCOL[x]["B"]);
                        string c= Convert.ToString(MAUCOL[x]["C"]);
                        string d= Convert.ToString(MAUCOL[x]["D"]);
                        string e= Convert.ToString(MAUCOL[x]["E"]);

9.因为是需要将原有字段拆分后重组,所以需要查询在数据库对应表中是否存在,不存在写进去;

string aa = string.Format("/dialect/sql语句, 根据查询字段作为选定条件进行查询);
                        DynamicObjectCollection aasql = DbUtils.ExecuteDynamicObject(this.Context,aa);

10.使用正则进行拆分

 if(aasql.Count == 0)
                        {
                            string[] vs = Regex.Split(需要拆分的字段,"/",RegexOptions.IgnoreCase);
//分割以“\”
                            if(vs.Length >= 3)
                            {
//如果分割的长度大于4,那么分别取出
                                string aaa = vs[0];
                                string bbb = vs[1];
                                string ccc = vs[2];
                                string ddd = vs[3];
                                string eee = vs[4];

11.根据拆分出来的字段条件进行构建sql查询语气分别在数据库对应的表中查询出所需要的信息,因为查询拆分出五个信息 所以此处需要构建出五个语句在这里我只书写一个作为参考;

 string bb = string.Format("/dialect/以vs[0]第一个拆分字段为查询条件的sql语句'", vs[0]);
                                DynamicObjectCollection bbsql = DbUtils.ExecuteDynamicObject(this.Context,bb);
//此处需要对应书写其五个 分别为bbccddee,自定义变量名称即可

12.重组

        使用json进行

if (vs[0] == "拆分字段")
 {
    JObject jObject = new JObject();
    JObject modelobject = new JObject();

    modelobject.Add("数据库表A对应字段", aa);

    modelobject.Add("数据库表B对应字段", bb);

    modelobject.Add("数据库表C对应字段", cc);

    modelobject.Add("数据库表D对应字段", dd);

    modelobject.Add("数据库表E对应字段", ee);

//创建json数据,根据前边拆分的字段条件进行查询,维护在数据表中
    
    JArray entryarray = new JArray(); 

//
string AAA= string.Format("/dialect/以aabbccddee,作为查询条件的sql语句", aa,bb,cc,dd,ee);
                                                        DynamicObjectCollection AAAsql = DbUtils.ExecuteDynamicObject(this.Context,AA);

13.如果上边没有问题执行后会将数据写入进去,开始遍历写入具体信息数据;

for (int i = 0; i < AAsql.Count; i++)
     {
            JObject entryobject = new JObject();

             如需类型转换 F = Convert.如需类型转换(AAsql[i]["数据库字段"]);

             如需类型转换G = Convert.如需类型转换(AAsql[i]["数据库字段"]);

             如需类型转换H = Convert.如需类型转换(AAsql[i]["数据库字段"]);

             entryobject.Add("数据库字段1", F);

             entryobject.Add("数据库字段2 ", G);

             entryobject.Add("数据库字段2 ", H);

             JObject wjobject = new JObject();

             wjobject.Add("对应数据表结构字段与添加的字段一直的字段", 需要添加的字段);

             entryobject.Add("条件字段 ", wjobject);

             JObject yObject = new JObject();
             yObject.Add("对应数据表结构字段与添加的字段一直的字段2", 需要条件的第二个字段);

             JObject cjobject = new JObject();

             cjobject.Add("对应数据表结构字段与添加的字段一直的字段3", "");

			 //以此类推

              JObject fzjobject = new JObject();

              fzjobject.Add("对应数据表结构字段与添加的字段一直的字段4", yjObject);

              fzjobject.Add("对应数据表结构字段与添加的字段一直的字段5", cjobject);

              entryobject.Add("对应数据表结构字段与添加的字段一直的字段6", fzjobject);

                                                                entryarray.Add(entryobject);
                                                            }

14.创建保存方法向客户端

modelobject.Add("对应需要添加的类型字段 ", entryarray);
    jObject.Add("类型字段", modelobject);

	//构建SAVE提交方法客户端
	string SSAVE = jObject.ToString();
    var resultJsons = client.Save("数据表中头字段标识", jObject.ToString());

15.提交

string submitSW = string.Format("/*dialect*/sql语句以提交字段进行条件查询的", 字段);
   DynamicObjectCollection fidsql1 = DbUtils.ExecuteDynamicObject(this.Context, submitSW);
   if (fidsql1 != null && fidsql1.Count > 0)
    {
        for (int i = 0; i < fidsql1.Count; i++)
        {
            Int32 fid = Convert.ToInt32(fidsql1[i]["fid"]);
            JObject submitjobject = new JObject();
            submitjobject.Add("Ids", fid);
            var resultJsonss = client.Submit("数据表中头字段标识", submitjobject.ToString());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1887044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【unity实战】在Unity中使用有限状态机制作一个敌人AI

最终效果 文章目录 最终效果前言有限状态机的主要作用和意义素材下载逻辑图敌人动画配置优雅的代码文件目录状态机代码定义敌人不同状态切换创建敌人效果更多的敌人参考源码完结 前言 有限状态机以前的我嗤之以鼻&#xff0c;现在的我逐帧分析。其实之前我就了解过有限状态机&…

晚上睡觉要不要关路由器?一语中的

前言 前几天小白去了一个朋友家&#xff0c;有朋友说&#xff1a;路由器不关机的话会影响睡眠吗&#xff1f; 这个影响睡眠嘛&#xff0c;确实是会的。毕竟一时冲浪一时爽&#xff0c;一直冲浪一直爽……刷剧刷抖音刷到根本停不下来&#xff0c;肯定影响睡眠。 所以晚上睡觉要…

PCL 点云最小图割(前景、背景点云提取)

点云最小图割 一、概述1.1 概念1.2 算法原理二、代码示例三、运行结果🙋 结果预览 一、概述 1.1 概念 最小图割算法(pcl::MinCutSegmentation):是一种基于图论的对象分割方法,主要用于点云数据的处理和分析。该算法将点云数据表示为一个图结构,其中点云中的点作为图的节…

【SkiaSharp绘图14】SKCanvas方法详解(三)URL注释、按顶点绘制、 是否裁切区域之外、旋转、缩放、倾斜、平移、保存/恢复画布

文章目录 SKCanvas方法DrawUrlAnnotation 绘制URL注释DrawVertices 按顶点绘制Flush 立即绘制QuickReject 判断区域是否在裁切区域之外ResetMatrix重置矩阵Restore、RestoreToCountRotateDegrees按角度旋转画布RotateRadians按弧度旋转画布SaveLayer保存并新建图层Scale 缩放画…

二叉树(2)

二叉树的销毁 分为三个部分的销毁&#xff1a;根节点&#xff0c;左子树和右子树 void TreeDestory(BTNode* root) {if(rootNULL)return;TreeDestory(root->left);TreeDestory(root->right);free(root);rootNULL; }层序遍历&#xff08;上一层带下一层&#xff09; ty…

nginx如何解决惊群效应

什么是惊群效应 惊群效应&#xff08;thundering herd&#xff09;是指多进程&#xff08;多线程&#xff09;在同时阻塞等待同一个事件的时候&#xff08;休眠状态&#xff09;&#xff0c;如果等待的这个事件发生&#xff0c;那么他就会唤醒等待的所有进程&#xff08;或者线…

web权限到系统权限 内网学习第一天 权限提升 使用手工还是cs???msf可以不??

现在开始学习内网的相关的知识了&#xff0c;我们在拿下web权限过后&#xff0c;我们要看自己拿下的是什么权限&#xff0c;可能是普通的用户权限&#xff0c;这个连添加用户都不可以&#xff0c;这个时候我们就要进行权限提升操作了。 权限提升这点与我们后门进行内网渗透是乘…

用AI,每天创作200+优质内容,2分钟教会你操作!

前段时间发布了这篇“寻找爆款文案及标题的9大渠道&#xff0c;直接搬运都能搞流量&#xff01;”&#xff0c;里面我讲到如何寻找爆款标题。最近不少朋友问我&#xff0c;如何创作这个标题相关的内容。 多数平台都有风控规则&#xff0c;有些平台内容也会有字数要求。为了让大…

【D3.js in Action 3 精译】1.2.2 可缩放矢量图形(三)

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知 1.2.1 HTML 与 DOM1.2.2 SVG - 可缩放矢量图形 ✔️ 第一部分第二部分【第三部分】✔️ 1.2.3 Canvas 与 WebGL&#xff08;精译中 ⏳&#xff09;1.2.4 C…

10.8K star!史上最强Web应用防火墙雷池WAF

长亭雷池SafeLine是长亭科技耗时近 10 年倾情打造的WAF(Web Application Firewall)&#xff0c; 一款敢打出口号 “不让黑客越雷池一步” 的 WAF&#xff0c;愿称之为史上最强的一款Web应用防火墙&#xff0c;足够简单、足够好用、足够强的免费且开源的 WAF&#xff0c;基于业…

全球首款商用,AI为视频自动配音配乐产品上线

近日&#xff0c;海外推出了一款名为Resona V2A的产品&#xff0c;这是全球首款商用视频转音频 (V2A) 技术产品。这项突破性技术利用AI&#xff0c;仅凭视频数据即可自动生成高质量、与上下文相关的音频&#xff0c;包括声音设计、音效、拟音和环境音&#xff0c;为电影制作人、…

单向链表结构

链表结构简介 链表结构是一种用比较特殊的数据结构类型&#xff0c;它也是线性数据结构中的一种&#xff0c;但是与栈结构等线性数据结构不同&#xff0c;它的内部结构并不是一个简单的存储空间&#xff0c;而是一个带有指向性质的单元。要理解链表结构要弄清楚两个问题&#x…

react_后台管理_项目

目录 1.运行项目 2. 项目结构 ①项目顶部导航栏 ②项目左侧导航栏 ③主页面-路由切换区 本项目使用的是 reacttsscss 技术栈。 1.运行项目 在当前页面顶部下载本项目&#xff0c;解压后使用编辑器打开&#xff0c;然后再终端输入命令&#xff1a; npm i 下载依赖后&am…

使用Python绘制动态螺旋线:旋转动画效果

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame绘制螺旋线函数主循环 完整代码 引言 螺旋线是一个具有美学和数学魅力的图形。通过编程&#xff0c;我们可以轻松创建动态旋转的螺旋线动画。在这篇博客中&#xff0c;我们将使用Python和Pygame库来实现…

【python脚本】批量检测sql延时注入

文章目录 前言批量检测sql延时注入工作原理脚本演示 前言 SQL延时注入是一种在Web应用程序中利用SQL注入漏洞的技术&#xff0c;当传统的基于错误信息或数据回显的注入方法不可行时&#xff0c;例如当Web应用进行了安全配置&#xff0c;不显示任何错误信息或敏感数据时&#x…

解决卡顿发热,超帧技术焕发中重载游戏动力

近几年&#xff0c;中国手游市场规模不断扩大&#xff0c;开发者通过在画面、玩法等方面的持续创新和打磨&#xff0c;推出更加精品化的产品。然而愈发精美的画质和复杂的玩法&#xff0c;也给硬件带来超高的负载&#xff0c;导致玩家在游戏过程中&#xff0c;频繁出现掉帧卡顿…

动态规划算法,完全零基础小白教程!不是计算机的都能学会!万字吐血详解。

目录 一、动态规划算法概念 题一 1、算法解析 1&#xff09;确定状态&#xff1a; ​2&#xff09;状态转移方程&#xff1a; ​3&#xff09;初始化&#xff1a; 4&#xff09;填表顺序&#xff1a; 5&#xff09;返回值&#xff1a; 2、代码 题二 1、算法解析 1、确…

你喜欢波段交易吗?

波段交易的核心在于精准捕捉市场中的长期趋势波动&#xff0c;以实现更为稳健的收益。与剥头皮和日内交易不同&#xff0c;波段交易者更倾向于持有交易头寸数日乃至数周&#xff0c;以更宽广的视角把握市场动态。 这种交易方式的优势在于&#xff0c;它降低了对即时市场反应的…

C - Popcorn(abs358)

题意&#xff1a;有n个摊子&#xff0c;m个爆米花&#xff0c;想花费最少去的店铺买到所有的口味的爆米花&#xff0c;找到每一列都为‘o’的最少行数。 分析&#xff1a;用dfs寻找最少路径 #include<bits/stdc.h> using namespace std; typedef long long ll; char x;…

【面试系列】AI研究员高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…