yzh
2022-03-14 1fbfe94790a03ab58ac8dee37f5095ff611ec3d8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
// Decompiled with JetBrains decompiler
// Type: Dao.SysXhDao
// Assembly: Dao, Version=3.2.1.428, Culture=neutral, PublicKeyToken=c1a16487c920c3dc
// MVID: 22E6EB3F-6D25-4B57-BE09-AD2F5391CFA5
// Assembly location: C:\Users\Administrator\Desktop\wwww\bin\Dao.dll
 
using Common;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Oracle.DataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using Model;
 
namespace Dao
{
  public class SysXhDao : IDisposable
  {
 
        /**
         * 根据产品ID获取产品信息
         * API_SP_NOTICE:通知短信API账号生成规则
         * API_SP_SECURITY_CODE:验证码短信API账号生成规则
         * API_SP_MARKETING:会员营销短信API账号生成规则
         * */
        public string getXh(string xhId)
        {
            SysXh o = new SysXh();
            if (string.IsNullOrEmpty(xhId) || string.Equals("0", xhId))
                return null;
 
            using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select * from SYS_XH where XH_ID=:XH_ID"), OracleHelper.Connection, new OracleParameter(":XH_ID", (object)xhId)))
            {
                if (reader.RowSize <= 0)
                {
                    return "无配置" + xhId + "序号规则";
                }
 
                //序号组合串
                string xhStr = "";
                if (((DbDataReader)reader).Read())
                {
                    this.ReadInfo(reader, o);
 
                    //检查序号长度
                    if (o.xhLength == 0 )
                    {
                        return null;
                    }
 
                    //检查序号前缀
                    if (!string.IsNullOrEmpty(o.xhPrefix))
                    {
                        xhStr += o.xhPrefix;
                    }
 
                    //检查序号回归规则
                    if (!string.IsNullOrEmpty(o.returnRules))
                    {
                        //按年
                        if (string.Equals("Y", o.returnRules) )
                        {
                            //当前年不匹配时
                            if (!string.Equals(DateTime.Now.ToString("yyyy"), o.currentReturnStr))
                            {
                                o.currentNum = 1;
                            }
                            else
                            {
                                o.currentNum += 1;
                            }
                            //更新当前年
                            o.currentReturnStr = DateTime.Now.ToString("yyyy");
                        }
                        //按月
                        else if (string.Equals("M", o.returnRules))
                        {
                            //当前年月不匹配时
                            if (!string.Equals(DateTime.Now.ToString("yyyyMM"), o.currentReturnStr))
                            {
                                o.currentNum = 1;
                            }
                            else
                            {
                                o.currentNum += 1;
                            }
 
                            //更新当前年月
                            o.currentReturnStr = DateTime.Now.ToString("yyyyMM");
                        }
                        //按日
                        else if (string.Equals("D", o.returnRules))
                        {
                            //当前年月日不匹配时
                            if (!string.Equals(DateTime.Now.ToString("yyyyMMdd"), o.currentReturnStr))
                            {
                                o.currentNum = 1;
                            }
                            else
                            {
                                o.currentNum += 1;
                            }
 
                            //更新当前年月日
                            o.currentReturnStr = DateTime.Now.ToString("yyyyMMdd");
                        }
 
                        xhStr += o.currentReturnStr;
                    }
                    else
                    {
                        o.currentNum += 1;
                    }
 
                    string tmpXhStr = "";
                    //判断序号长度
                    if (o.xhLength > (xhStr.Length + o.currentNum.ToString().Length))
                    {
                        for (int i = 0; i < (o.xhLength - xhStr.Length - o.currentNum.ToString().Length); i++)
                        {
                            //序数前补“0”
                            tmpXhStr += "0";
                        }
                        tmpXhStr += o.currentNum ;
                    }
                    else if (o.xhLength == (xhStr.Length + o.currentNum.ToString().Length))
                    {
                        tmpXhStr = o.currentNum.ToString();
                    }
                    else
                    {
                        //序号溢出
                        return "序号溢出";
                    }
 
                    //更新序号
                    update(o);
 
                    xhStr += tmpXhStr;
 
                    return xhStr;
                }
            }
 
            return null;
        }
 
        public bool update(SysXh o)
        {
            string sql = "";
            sql += " update SYS_XH set XH_ID=:XH_ID, XH_PREFIX=:XH_PREFIX, RETURN_RULES=:RETURN_RULES, CURRENT_RETURN_STR=:CURRENT_RETURN_STR, CURRENT_NUM=:CURRENT_NUM ";
            sql += " ,XH_LENGTH=:XH_LENGTH, REMARK=:REMARK ";
            sql += " where XH_ID=:XH_ID ";
 
            return OracleHelper.ExecuteSql(sql, OracleHelper.Connection,
                new OracleParameter(":XH_ID", (object)o.xhId),
                new OracleParameter(":XH_PREFIX", (object)o.xhPrefix),
                new OracleParameter(":RETURN_RULES", (object)o.returnRules),
                new OracleParameter(":CURRENT_RETURN_STR", (object)o.currentReturnStr),
                new OracleParameter(":CURRENT_NUM", (object)o.currentNum),
                new OracleParameter(":XH_LENGTH", (object)o.xhLength),
                new OracleParameter(":REMARK", (object)o.remark)
                ) > 0;
        }
 
        public void Dispose()
        {
 
        }
 
        /**
         * 数据转换封装
         * */
        private bool ReadInfo(OracleDataReader reader, SysXh sysXh)
        {
            OracleReaderWrapper oracleReaderWrapper = new OracleReaderWrapper(reader);
            sysXh.xhId = oracleReaderWrapper.GetString("XH_ID", "");
            sysXh.xhPrefix = oracleReaderWrapper.GetString("XH_PREFIX", "");
            sysXh.returnRules = oracleReaderWrapper.GetString("RETURN_RULES", "");
            sysXh.currentReturnStr = oracleReaderWrapper.GetString("CURRENT_RETURN_STR", "");
            sysXh.xhLength = oracleReaderWrapper.GetInt("XH_LENGTH", 0);
            sysXh.currentNum = oracleReaderWrapper.GetInt("CURRENT_NUM", 0);
            sysXh.remark = oracleReaderWrapper.GetString("remark", "");
 
            return true;
        }
  }
}