User.go 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298
  1. package controllers
  2. import (
  3. "Cold_Api/Nats/NatsServer"
  4. "Cold_Api/conf"
  5. "Cold_Api/controllers/lib"
  6. "Cold_Api/models/Account"
  7. "Cold_Api/models/Company"
  8. "Cold_Api/models/Device"
  9. "Cold_Api/models/System"
  10. "Cold_Api/models/Warning"
  11. "encoding/json"
  12. "fmt"
  13. "github.com/beego/beego/v2/adapter/orm"
  14. "github.com/beego/beego/v2/core/logs"
  15. beego "github.com/beego/beego/v2/server/web"
  16. uuid "github.com/satori/go.uuid"
  17. "github.com/shopspring/decimal"
  18. "github.com/xuri/excelize/v2"
  19. "math"
  20. "os"
  21. "strconv"
  22. "strings"
  23. "time"
  24. )
  25. type UserController struct {
  26. beego.Controller
  27. Admin_r Account.Admin // 登陆的用户
  28. T_pid int // 公司id
  29. }
  30. func (c *UserController) Prepare() {
  31. GetCookie := c.Ctx.GetCookie("User_tokey")
  32. GetString := c.GetString("User_tokey")
  33. User_tokey := GetString
  34. if len(User_tokey) == 0 {
  35. User_tokey = GetCookie
  36. }
  37. if Account.Admin_r == nil {
  38. return
  39. }
  40. c.Admin_r = *Account.Admin_r
  41. T_pid := c.Admin_r.T_pid
  42. EntryPid, _ := Account.Redis_Tokey_T_pid_Get(User_tokey)
  43. if EntryPid > 0 {
  44. T_pid = EntryPid
  45. }
  46. c.T_pid = T_pid
  47. }
  48. // 获取微信二维码 ( 扫描后 ,Nats 自动绑定在 Admin->T_wx )
  49. func (c *UserController) User_WxQRCode() {
  50. T_name := c.GetString("T_name")
  51. WxQRCode_str, _ := NatsServer.Wx_GenerateQRCode("-|" + lib.AesEncryptCBC(c.Admin_r.T_uuid+"/"+T_name, "0123456789012345") + "|- @宝智达冷链 微信公众号通知")
  52. WxQRCode_str = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + WxQRCode_str
  53. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: WxQRCode_str}
  54. c.ServeJSON()
  55. return
  56. }
  57. // 用户绑定的公司列表
  58. func (c *UserController) Company_Tree() {
  59. var r_jsons lib.R_JSONS
  60. T_name := c.GetString("T_name")
  61. r_jsons.Data = Account.Read_Company_Tree(c.Admin_r, T_name)
  62. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  63. c.ServeJSON()
  64. return
  65. }
  66. func (c *UserController) Company_Transport_List() {
  67. var r_jsons lib.R_JSONS
  68. T_name := c.GetString("T_name")
  69. r_jsons.Data = Account.Read_Transport_Company_List(T_name)
  70. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  71. c.ServeJSON()
  72. return
  73. }
  74. // 所有公司树
  75. func (c *UserController) Company_List() {
  76. var r_jsons lib.R_JSONS
  77. T_name := c.GetString("T_name")
  78. r_jsons.Data = Account.Read_Company_List(T_name)
  79. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  80. c.ServeJSON()
  81. return
  82. }
  83. func (c *UserController) Company_Get() {
  84. var r_jsons lib.R_JSONS
  85. Company_r, err := Account.Read_Company_ById(c.T_pid)
  86. if err != nil {
  87. logs.Warning(lib.FuncName(), "获取公司信息失败", err)
  88. }
  89. r_jsons.Data = Account.CompanyToCompany_R(Company_r)
  90. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  91. c.ServeJSON()
  92. return
  93. }
  94. func (c *UserController) Company_Details() {
  95. Id, Id_err := c.GetInt("Id")
  96. if Id_err != nil {
  97. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  98. c.ServeJSON()
  99. return
  100. }
  101. var r_jsons lib.R_JSONS
  102. Company_r, err := Account.Read_Company_ById(Id)
  103. if err != nil {
  104. logs.Warning(lib.FuncName(), "获取公司信息失败", err)
  105. }
  106. r_jsons.Data = Account.CompanyToCompany_R(Company_r)
  107. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  108. c.ServeJSON()
  109. return
  110. }
  111. func (c *UserController) Company_Add() {
  112. T_mid, _ := c.GetInt("T_mid")
  113. T_name := c.GetString("T_name")
  114. T_plan := c.GetString("T_plan")
  115. T_data := c.GetString("T_data")
  116. T_v3d := c.GetString("T_v3d")
  117. T_type, _ := c.GetInt("T_type")
  118. T_Address := c.GetString("T_Address")
  119. T_coordinate := c.GetString("T_coordinate")
  120. var_ := Account.Company{
  121. T_mid: T_mid,
  122. T_name: T_name,
  123. T_State: 1,
  124. T_plan: T_plan,
  125. T_data: T_data,
  126. T_v3d: T_v3d,
  127. T_warning: 1,
  128. T_type: T_type,
  129. T_Address: T_Address,
  130. T_coordinate: T_coordinate,
  131. }
  132. id, err := Account.Add_Company(var_)
  133. if err != nil {
  134. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  135. c.ServeJSON()
  136. return
  137. }
  138. if c.Admin_r.T_pids != "*" && c.Admin_r.T_pid == 0 {
  139. T_pids := []int{int(id)}
  140. if err = Account.Add_Company_bind(c.Admin_r, T_pids); err != nil {
  141. c.Data["json"] = lib.JSONS{Code: 202, Msg: "公司绑定失败"}
  142. c.ServeJSON()
  143. return
  144. }
  145. }
  146. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "添加", var_)
  147. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: id}
  148. c.ServeJSON()
  149. return
  150. }
  151. func (c *UserController) Company_Edit() {
  152. Id, Id_err := c.GetInt("Id")
  153. if Id_err != nil {
  154. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  155. c.ServeJSON()
  156. return
  157. }
  158. Company_r, err := Account.Read_Company_ById(Id)
  159. if err != nil {
  160. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  161. c.ServeJSON()
  162. return
  163. }
  164. T_name := c.GetString("T_name")
  165. T_type, _ := c.GetInt("T_type")
  166. T_Address := c.GetString("T_Address")
  167. T_coordinate := c.GetString("T_coordinate")
  168. if len(T_name) > 0 {
  169. Company_r.T_name = T_name
  170. }
  171. if T_type > 0 {
  172. Company_r.T_type = T_type
  173. }
  174. if len(T_Address) > 0 {
  175. Company_r.T_Address = T_Address
  176. }
  177. if len(T_coordinate) > 0 {
  178. Company_r.T_coordinate = T_coordinate
  179. }
  180. is := Account.Update_Company(Company_r, "T_name", "T_type", "T_Address", "T_coordinate")
  181. if !is {
  182. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  183. c.ServeJSON()
  184. return
  185. }
  186. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "修改", Company_r)
  187. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  188. c.ServeJSON()
  189. return
  190. }
  191. // 数字孪生
  192. func (c *UserController) Company_DigitalTwin() {
  193. Id, Id_err := c.GetInt("Id")
  194. if Id_err != nil {
  195. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  196. c.ServeJSON()
  197. return
  198. }
  199. Company_r, err := Account.Read_Company_ById(Id)
  200. if err != nil {
  201. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  202. c.ServeJSON()
  203. return
  204. }
  205. T_plan := c.GetString("T_plan")
  206. T_data := c.GetString("T_data")
  207. T_v3d := c.GetString("T_v3d")
  208. T_warning, _ := c.GetInt("T_warning")
  209. Company_r.T_plan = T_plan
  210. Company_r.T_data = T_data
  211. Company_r.T_v3d = T_v3d
  212. Company_r.T_warning = T_warning
  213. is := Account.Update_Company(Company_r, "T_plan", "T_data", "T_v3d", "T_warning")
  214. if !is {
  215. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  216. c.ServeJSON()
  217. return
  218. }
  219. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "修改数字孪生", Company_r)
  220. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  221. c.ServeJSON()
  222. return
  223. }
  224. // 充值
  225. func (c *UserController) Company_Pay() {
  226. Id, Id_err := c.GetInt("Id")
  227. if Id_err != nil {
  228. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  229. c.ServeJSON()
  230. return
  231. }
  232. Company_r, err := Account.Read_Company_ById(Id)
  233. if err != nil {
  234. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  235. c.ServeJSON()
  236. return
  237. }
  238. T_balance, _ := c.GetFloat("T_balance")
  239. T_money64, _ := decimal.NewFromFloat(float64(Company_r.T_money) + T_balance).Round(2).Float64()
  240. Company_r.T_money = float32(T_money64)
  241. is := Account.Update_Company(Company_r, "T_money")
  242. if !is {
  243. c.Data["json"] = lib.JSONS{Code: 202, Msg: "充值失败!"}
  244. c.ServeJSON()
  245. return
  246. }
  247. // 添加充值记录
  248. bill := Company.CompanyBill{
  249. T_pid: Company_r.Id,
  250. T_type: "充值",
  251. T_project: "充值",
  252. T_bill: "充值",
  253. T_charging: float32(T_balance),
  254. T_balance: float32(T_money64),
  255. }
  256. _, err = Company.Add_CompanyBill(bill)
  257. if err != nil {
  258. c.Data["json"] = lib.JSONS{Code: 202, Msg: "充值失败!"}
  259. c.ServeJSON()
  260. return
  261. }
  262. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "充值", Company_r)
  263. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  264. c.ServeJSON()
  265. return
  266. }
  267. // 报警统计
  268. func (c *UserController) Company_Warning() {
  269. Id, Id_err := c.GetInt("Id")
  270. if Id_err != nil {
  271. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  272. c.ServeJSON()
  273. return
  274. }
  275. Company_r, err := Account.Read_Company_ById(Id)
  276. if err != nil {
  277. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  278. c.ServeJSON()
  279. return
  280. }
  281. T_warning, _ := c.GetInt("T_warning")
  282. if T_warning > 0 {
  283. Company_r.T_warning = T_warning
  284. }
  285. is := Account.Update_Company(Company_r, "T_warning")
  286. if !is {
  287. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  288. c.ServeJSON()
  289. return
  290. }
  291. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "修改报警统计", Company_r)
  292. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  293. c.ServeJSON()
  294. return
  295. }
  296. // 第三方跳转
  297. func (c *UserController) Company_ThirdPartiesSkip() {
  298. Id, Id_err := c.GetInt("Id")
  299. if Id_err != nil {
  300. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  301. c.ServeJSON()
  302. return
  303. }
  304. Company_r, err := Account.Read_Company_ById(Id)
  305. if err != nil {
  306. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  307. c.ServeJSON()
  308. return
  309. }
  310. T_skip := c.GetString("T_skip")
  311. if len(T_skip) > 0 {
  312. var list []Account.ThirdPartiesSkip
  313. if err = json.Unmarshal([]byte(T_skip), &list); err != nil {
  314. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_skip JSON 解析失败!"}
  315. c.ServeJSON()
  316. return
  317. }
  318. Company_r.T_ThirdPartiesSkip = T_skip
  319. }
  320. is := Account.Update_Company(Company_r, "T_ThirdPartiesSkip")
  321. if !is {
  322. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  323. c.ServeJSON()
  324. return
  325. }
  326. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "第三方跳转", Company_r)
  327. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  328. c.ServeJSON()
  329. return
  330. }
  331. // 到期时间
  332. func (c *UserController) Company_ExpirationTime() {
  333. Id, Id_err := c.GetInt("Id")
  334. if Id_err != nil {
  335. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  336. c.ServeJSON()
  337. return
  338. }
  339. Company_r, err := Account.Read_Company_ById(Id)
  340. if err != nil {
  341. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  342. c.ServeJSON()
  343. return
  344. }
  345. T_expirationTime := c.GetString("T_expirationTime")
  346. Company_r.T_expirationTime = T_expirationTime
  347. is := Account.Update_Company(Company_r, "T_expirationTime")
  348. if !is {
  349. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  350. c.ServeJSON()
  351. return
  352. }
  353. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "到期时间", Company_r)
  354. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  355. c.ServeJSON()
  356. return
  357. }
  358. func (c *UserController) Company_Del() {
  359. Id, Id_err := c.GetInt("Id")
  360. if Id_err != nil {
  361. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  362. c.ServeJSON()
  363. return
  364. }
  365. Company_r, err := Account.Read_Company_ById(Id)
  366. if err != nil {
  367. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  368. c.ServeJSON()
  369. return
  370. }
  371. ids := Account.ReadCompanyIds_T_path(Company_r.T_path)
  372. if cnt := Account.Read_Admin_Num_ByT_pid(ids); cnt > 0 {
  373. c.Data["json"] = lib.JSONS{Code: 202, Msg: "有关联用户,禁止删除!"}
  374. c.ServeJSON()
  375. return
  376. }
  377. o := orm.NewOrm()
  378. o.Begin()
  379. for _, id := range ids {
  380. if is := Account.Delete_Company(o, id); !is {
  381. o.Rollback()
  382. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  383. c.ServeJSON()
  384. return
  385. }
  386. if err = Account.Delete_Company_bind_T_pids(o, id); err != nil {
  387. o.Rollback()
  388. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  389. c.ServeJSON()
  390. return
  391. }
  392. }
  393. o.Commit()
  394. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "删除", Company_r)
  395. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  396. c.ServeJSON()
  397. return
  398. }
  399. // 进入公司
  400. func (c *UserController) Company_Entry() {
  401. GetCookie := c.Ctx.GetCookie("User_tokey")
  402. GetString := c.GetString("User_tokey")
  403. User_tokey := GetString
  404. if len(User_tokey) == 0 {
  405. User_tokey = GetCookie
  406. }
  407. T_pid, _ := c.GetInt("T_pid")
  408. // 操作pid
  409. company_r, err := Account.Read_Company_ById(T_pid)
  410. if err != nil {
  411. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  412. c.ServeJSON()
  413. return
  414. }
  415. visit := false
  416. if c.Admin_r.T_pid > 0 && strings.Contains(company_r.T_path, fmt.Sprintf("/%d/", c.Admin_r.T_pid)) {
  417. visit = true
  418. }
  419. if c.Admin_r.T_pid == 0 {
  420. if c.Admin_r.T_pids == "*" {
  421. visit = true
  422. } else {
  423. pids := lib.SplitStringToIntIds(c.Admin_r.T_pids, "P")
  424. if len(pids) > 0 {
  425. list := Account.ReadCompanyIds_T_pids(pids)
  426. for _, v := range list {
  427. if T_pid == v {
  428. visit = true
  429. break
  430. }
  431. }
  432. }
  433. }
  434. }
  435. if !visit {
  436. c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有权限!"}
  437. c.ServeJSON()
  438. return
  439. }
  440. Account.Redis_Tokey_T_pid_Set(User_tokey, T_pid)
  441. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "进入公司", T_pid)
  442. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  443. c.ServeJSON()
  444. return
  445. }
  446. // 记账扣费
  447. func (c *UserController) Company_Charging() {
  448. Id, Id_err := c.GetInt("Id")
  449. if Id_err != nil {
  450. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  451. c.ServeJSON()
  452. return
  453. }
  454. Company_r, err := Account.Read_Company_ById(Id)
  455. if err != nil {
  456. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  457. c.ServeJSON()
  458. return
  459. }
  460. T_Charging, _ := c.GetInt("T_Charging")
  461. Company_r.T_Charging = T_Charging
  462. is := Account.Update_Company(Company_r, "T_Charging")
  463. if !is {
  464. c.Data["json"] = lib.JSONS{Code: 202, Msg: "充值失败!"}
  465. c.ServeJSON()
  466. return
  467. }
  468. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "记账扣费", Company_r)
  469. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  470. c.ServeJSON()
  471. return
  472. }
  473. // 检查 Tokey 是否过期
  474. // 用户管理
  475. func (c *UserController) User_List() {
  476. var r_jsons lib.R_JSONS
  477. page, _ := c.GetInt("page")
  478. if page < 1 {
  479. page = 1
  480. }
  481. page_z, _ := c.GetInt("page_z")
  482. if page_z < 1 {
  483. page_z = conf.Page_size
  484. }
  485. T_name := c.GetString("T_name")
  486. Account.Read_Power_All_Map()
  487. r_jsons.Data, r_jsons.Num = Account.Read_Admin_List(c.T_pid, T_name, page, page_z)
  488. r_jsons.Page = page
  489. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  490. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  491. c.ServeJSON()
  492. return
  493. }
  494. func (c *UserController) User_Get() {
  495. T_uuid := c.GetString("T_uuid")
  496. if len(T_uuid) < 8 {
  497. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  498. c.ServeJSON()
  499. return
  500. }
  501. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  502. if err != nil {
  503. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  504. c.ServeJSON()
  505. return
  506. }
  507. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Account.AdminToAdmin_R(admin_r)}
  508. c.ServeJSON()
  509. return
  510. }
  511. func (c *UserController) User_Info() {
  512. type User_ struct {
  513. User Account.Admin_R
  514. //Power Account.Power // 权限
  515. //Menu map[string]Account.Menu_R // 菜单
  516. //Menu []Account.Menu // 菜单
  517. }
  518. Admin_r := User_{}
  519. Admin_r.User = Account.AdminToAdmin_R(c.Admin_r)
  520. //Admin_r.Power, _ = Account.Read_Power_ById(admin_r.T_power)
  521. //Admin_r.Menu = Account.Read_Menu_Tree(Power.T_menu, T_pid)
  522. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Admin_r}
  523. c.ServeJSON()
  524. return
  525. }
  526. func (c *UserController) User_Post() {
  527. admin_r := c.Admin_r
  528. T_name := c.GetString("T_name")
  529. T_pass := c.GetString("T_pass")
  530. T_phone := c.GetString("T_phone")
  531. T_mail := c.GetString("T_mail")
  532. T_wx := c.GetString("T_wx")
  533. if len(T_pass) < 8 && len(T_pass) > 0 {
  534. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  535. c.ServeJSON()
  536. return
  537. }
  538. if len(T_name) > 0 {
  539. admin_r.T_name = T_name
  540. }
  541. if len(T_pass) >= 8 {
  542. admin_r.T_pass = T_pass
  543. }
  544. if len(T_phone) > 0 {
  545. admin_r.T_phone = T_phone
  546. }
  547. if len(T_mail) > 0 {
  548. admin_r.T_mail = T_mail
  549. }
  550. if len(T_wx) > 0 {
  551. if T_wx == "-" {
  552. T_wx = ""
  553. }
  554. admin_r.T_wx = T_wx
  555. }
  556. is := Account.Update_Admin(admin_r, "T_name", "T_pass", "T_phone", "T_mail", "T_wx")
  557. if !is {
  558. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  559. c.ServeJSON()
  560. return
  561. }
  562. admin_r.T_pass = "******"
  563. System.Add_UserLogs_T(c.Admin_r.T_uuid, "用户管理", "修改个人信息", admin_r)
  564. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  565. c.ServeJSON()
  566. return
  567. }
  568. func (c *UserController) User_Add() {
  569. T_power, _ := c.GetInt("T_power")
  570. T_name := c.GetString("T_name")
  571. T_user := c.GetString("T_user")
  572. T_pass := c.GetString("T_pass")
  573. T_phone := c.GetString("T_phone")
  574. T_mail := c.GetString("T_mail")
  575. T_wx := c.GetString("T_wx")
  576. T_uuid := uuid.NewV4().String()
  577. var_ := Account.Admin{
  578. T_uuid: T_uuid,
  579. T_pid: c.T_pid,
  580. T_name: T_name,
  581. T_user: T_user,
  582. T_phone: T_phone,
  583. T_mail: T_mail,
  584. T_wx: T_wx,
  585. T_pass: T_pass,
  586. T_power: T_power,
  587. T_State: 1,
  588. }
  589. if len(T_pass) < 8 {
  590. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  591. c.ServeJSON()
  592. return
  593. }
  594. _, err := Account.Read_Admin_T_user(T_user)
  595. if err == nil {
  596. c.Data["json"] = lib.JSONS{Code: 302, Msg: "账户重复!"}
  597. c.ServeJSON()
  598. return
  599. }
  600. _, err = Account.Add_Admin(var_)
  601. if err != nil {
  602. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  603. c.ServeJSON()
  604. return
  605. }
  606. var_.T_pass = "******"
  607. System.Add_UserLogs_T(c.Admin_r.T_uuid, "用户管理", "添加", var_)
  608. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  609. c.ServeJSON()
  610. return
  611. }
  612. func (c *UserController) User_Edit() {
  613. T_uuid := c.GetString("T_uuid")
  614. if len(T_uuid) < 8 {
  615. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  616. c.ServeJSON()
  617. return
  618. }
  619. r, err := Account.Read_Admin_ByUuid(T_uuid)
  620. if err != nil {
  621. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  622. c.ServeJSON()
  623. return
  624. }
  625. T_power, T_power_err := c.GetInt("T_power")
  626. T_name := c.GetString("T_name")
  627. T_pass := c.GetString("T_pass")
  628. T_phone := c.GetString("T_phone")
  629. T_mail := c.GetString("T_mail")
  630. if T_power_err == nil {
  631. r.T_power = T_power
  632. }
  633. if len(T_pass) < 8 && len(T_pass) > 0 {
  634. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  635. c.ServeJSON()
  636. return
  637. }
  638. if len(T_name) > 0 {
  639. r.T_name = T_name
  640. }
  641. if len(T_pass) >= 8 {
  642. r.T_pass = T_pass
  643. }
  644. if len(T_phone) > 0 {
  645. r.T_phone = T_phone
  646. }
  647. if len(T_mail) > 0 {
  648. r.T_mail = T_mail
  649. }
  650. is := Account.Update_Admin(r, "T_power", "T_pid", "T_name", "T_pass", "T_phone", "T_mail")
  651. if !is {
  652. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  653. c.ServeJSON()
  654. return
  655. }
  656. if len(T_name) > 0 {
  657. if is = Company.Update_CompanyNotice_Bind_By_T_uuid(T_uuid, T_name); !is {
  658. logs.Info("修改用户 => 修改用户关联报警通知失败", T_uuid, T_name)
  659. }
  660. }
  661. r.T_pass = "******"
  662. System.Add_UserLogs_T(c.Admin_r.T_uuid, "用户管理", "编辑", r)
  663. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  664. c.ServeJSON()
  665. return
  666. }
  667. func (c *UserController) User_Del() {
  668. T_uuid := c.GetString("T_uuid")
  669. if len(T_uuid) <= 0 {
  670. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  671. c.ServeJSON()
  672. return
  673. }
  674. admin_r_lod, err := Account.Read_Admin_ByUuid(T_uuid)
  675. if err != nil {
  676. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  677. c.ServeJSON()
  678. return
  679. }
  680. if is := Account.Delete_Admin(admin_r_lod); !is {
  681. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  682. c.ServeJSON()
  683. return
  684. }
  685. if is := Company.Delete_CompanyNotice_Bind_By_T_uuid(T_uuid); !is {
  686. logs.Info("删除用户 => 删除用户关联报警通知失败", T_uuid)
  687. }
  688. System.Add_UserLogs_T(c.Admin_r.T_uuid, "用户管理", "删除", T_uuid)
  689. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  690. c.ServeJSON()
  691. return
  692. }
  693. func (c *UserController) User_GetCompanyInfo() {
  694. // 报警标识
  695. //设备管理-设备报警 callthepolice
  696. //公司管理-设备报警 companyCallthepolice
  697. //T_warning_sign := c.GetString("T_warning_sign")
  698. // 验证登录
  699. admin_r := c.Admin_r
  700. type Info struct {
  701. T_name string // 姓名
  702. T_pid int // 公司id
  703. Admin []Account.Admin_ // 专属管理员
  704. CompanyName string
  705. CompanyExpirationTime string
  706. }
  707. var info Info
  708. info.T_name = admin_r.T_name
  709. info.T_pid = admin_r.T_pid
  710. if admin_r.T_pid > 0 {
  711. company, _ := Account.Read_Company_ById(admin_r.T_pid)
  712. AdminList := Account.Read_Admin_List_T_pids(admin_r.T_pid)
  713. var Admin_ []Account.Admin_
  714. for _, v := range AdminList {
  715. Admin_ = append(Admin_, Account.Admin_RToAdmin_(v))
  716. }
  717. info.Admin = Admin_
  718. info.CompanyName = company.T_name
  719. info.CompanyExpirationTime = company.T_expirationTime
  720. }
  721. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: info}
  722. c.ServeJSON()
  723. return
  724. }
  725. // 管理员
  726. func (c *UserController) User_Home() {
  727. // 报警标识
  728. //设备管理-设备报警 callthepolice
  729. //公司管理-设备报警 companyCallthepolice
  730. //T_warning_sign := c.GetString("T_warning_sign")
  731. power, err := Account.Read_Power_ById(c.Admin_r.T_power)
  732. if err != nil {
  733. c.Data["json"] = lib.JSONS{Code: 202, Msg: "获取菜单失败"}
  734. c.ServeJSON()
  735. return
  736. }
  737. ret := Account.Read_Menu_Bind_List(power.Id, power.T_menu, c.T_pid)
  738. var T_warning_sign string
  739. for _, v := range ret.MenuPermission {
  740. if v == Warning.CompanyCallthepolice {
  741. T_warning_sign = Warning.CompanyCallthepolice
  742. break
  743. }
  744. if v == Warning.Callthepolice {
  745. T_warning_sign = Warning.Callthepolice
  746. }
  747. }
  748. // 验证登录
  749. admin_r := c.Admin_r
  750. type NoticeRecord struct {
  751. Sms int // 短信
  752. Phone int // 电话
  753. }
  754. type Info struct {
  755. T_name string // 姓名
  756. T_pids string // 内部用户绑定的公司id
  757. T_pid int // 公司id
  758. T_Days int // 服务天数
  759. Admin []Account.Admin_ // 专属管理员
  760. WarningSign string // 报警标识
  761. WarningNum int64 // 报警数量
  762. UntreatedWarningNum int64 // 未处理报警数量
  763. NewsNum int64 // 消息数量
  764. WorkOrderNum int64 // 工单数量
  765. WarningRate float32 // 设备报警率
  766. UntreatedWorkOrderNum int64 // 未处理工单数量
  767. Balance float32 // 余额
  768. NoticeRecord NoticeRecord // 通知记录
  769. CompanyKey string
  770. CompanyName string
  771. CompanyExpirationTime string
  772. }
  773. var info Info
  774. info.T_name = admin_r.T_name
  775. info.T_pid = admin_r.T_pid
  776. var Company_r Account.Company
  777. if c.T_pid > 0 {
  778. Company_r, err = Account.Read_Company_ById(c.T_pid)
  779. if err != nil {
  780. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  781. c.ServeJSON()
  782. return
  783. }
  784. info.CompanyKey = Company_r.T_key
  785. info.CompanyName = Company_r.T_name
  786. info.CompanyExpirationTime = Company_r.T_expirationTime
  787. }
  788. if admin_r.T_pid > 0 {
  789. info.WarningSign = T_warning_sign
  790. bindSN, err := Account.Read_UserDevice_List(c.Admin_r)
  791. if err != nil {
  792. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  793. c.ServeJSON()
  794. return
  795. }
  796. company, _ := Account.Read_Company_ById(admin_r.T_pid)
  797. info.T_Days = lib.GetDiffDays(time.Now(), company.CreateTime)
  798. AdminList := Account.Read_Admin_List_T_pids(admin_r.T_pid)
  799. var Admin_ []Account.Admin_
  800. for _, v := range AdminList {
  801. Admin_ = append(Admin_, Account.Admin_RToAdmin_(v))
  802. }
  803. info.Admin = Admin_
  804. T_pids := []int{}
  805. // 拥有公司管理-设备报警权限 统计公司及其所有子公司的今日报警数量、未处理报警数量、我的消息数量
  806. if T_warning_sign == Warning.CompanyCallthepolice {
  807. T_pids = Account.ReadCompanyIds_T_path(Company_r.T_path)
  808. info.WarningNum = Warning.Read_Warning_ALL_T_State_Count(0, T_pids, 1, bindSN, power.T_warning, true)
  809. info.UntreatedWarningNum = Warning.Read_Warning_ALL_T_State_Count(0, T_pids, 3, bindSN, power.T_warning, false)
  810. info.NewsNum = Warning.Read_Warning_ALL_T_State_Count(0, T_pids, 1, bindSN, "T1003|T1002|", false)
  811. }
  812. // 拥有设备管理-设备报警权限 统计本公司今日报警数量、未处理报警数量、我的消息数量
  813. if T_warning_sign == Warning.Callthepolice {
  814. info.WarningNum = Warning.Read_Warning_ALL_T_State_Count(admin_r.T_pid, T_pids, 1, bindSN, power.T_warning, true)
  815. info.UntreatedWarningNum = Warning.Read_Warning_ALL_T_State_Count(admin_r.T_pid, T_pids, 3, bindSN, power.T_warning, false)
  816. info.NewsNum = Warning.Read_Warning_ALL_T_State_Count(admin_r.T_pid, T_pids, 1, bindSN, "T1003|T1002|", false)
  817. }
  818. info.Balance = company.T_money
  819. info.NoticeRecord.Sms = Warning.Get_WarningSandNum_CurrentMonth(admin_r.T_pid, 1)
  820. info.NoticeRecord.Phone = Warning.Get_WarningSandNum_CurrentMonth(admin_r.T_pid, 2)
  821. }
  822. if admin_r.T_pid == 0 {
  823. if len(admin_r.T_pids) > 0 && admin_r.T_pids != "*" {
  824. info.T_pids = admin_r.T_pids
  825. info.WarningRate = Warning.Read_WarningRate_Yesterday(admin_r.T_uuid)
  826. }
  827. info.WorkOrderNum, info.UntreatedWorkOrderNum = NatsServer.Read_WorkOrderT_State_Count(admin_r.T_pids)
  828. }
  829. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: info}
  830. c.ServeJSON()
  831. return
  832. }
  833. // 内部用户管理
  834. func (c *UserController) Admin_List() {
  835. var r_jsons lib.R_JSONS
  836. page, _ := c.GetInt("page")
  837. if page < 1 {
  838. page = 1
  839. }
  840. page_z, _ := c.GetInt("page_z")
  841. if page_z < 1 {
  842. page_z = conf.Page_size
  843. }
  844. T_name := c.GetString("T_name")
  845. if c.Admin_r.T_pid > 0 {
  846. c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权查看!"}
  847. c.ServeJSON()
  848. return
  849. }
  850. T_bind_company, _ := c.GetInt("T_bind_company") // 管理员绑定公司 0-全部 1-绑定公司
  851. Account.Read_Power_All_Map()
  852. userList, num := Account.Read_Admin_List(0, T_name, page, page_z)
  853. r_jsons.Data, r_jsons.Num = userList, num
  854. // 过滤已绑定公司列表
  855. if T_bind_company == 1 {
  856. var adminList []Account.Admin_R
  857. for _, v := range userList {
  858. if len(v.T_pids) == 0 || v.T_pids == "*" {
  859. continue
  860. }
  861. adminList = append(adminList, v)
  862. }
  863. r_jsons.Data = adminList
  864. }
  865. r_jsons.Page = page
  866. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  867. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  868. c.ServeJSON()
  869. return
  870. }
  871. func (c *UserController) Admin_Get() {
  872. T_uuid := c.GetString("T_uuid")
  873. if len(T_uuid) < 8 {
  874. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  875. c.ServeJSON()
  876. return
  877. }
  878. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  879. if err != nil {
  880. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  881. c.ServeJSON()
  882. return
  883. }
  884. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Account.AdminToAdmin_R(admin_r)}
  885. c.ServeJSON()
  886. return
  887. }
  888. func (c *UserController) Admin_Add() {
  889. T_power, _ := c.GetInt("T_power")
  890. T_name := c.GetString("T_name")
  891. T_user := c.GetString("T_user")
  892. T_pass := c.GetString("T_pass")
  893. T_phone := c.GetString("T_phone")
  894. T_mail := c.GetString("T_mail")
  895. T_wx := c.GetString("T_wx")
  896. var_ := Account.Admin{
  897. T_uuid: uuid.NewV4().String(),
  898. T_pid: 0,
  899. T_name: T_name,
  900. T_user: T_user,
  901. T_phone: T_phone,
  902. T_mail: T_mail,
  903. T_wx: T_wx,
  904. T_pass: T_pass,
  905. T_power: T_power,
  906. T_State: 1,
  907. }
  908. if len(T_pass) < 8 {
  909. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  910. c.ServeJSON()
  911. return
  912. }
  913. _, err := Account.Read_Admin_T_user(T_user)
  914. if err == nil {
  915. c.Data["json"] = lib.JSONS{Code: 302, Msg: "账户重复!"}
  916. c.ServeJSON()
  917. return
  918. }
  919. _, err = Account.Add_Admin(var_)
  920. if err != nil {
  921. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  922. c.ServeJSON()
  923. return
  924. }
  925. var_.T_pass = "******"
  926. System.Add_UserLogs_T(c.Admin_r.T_uuid, "内部用户管理", "添加", var_)
  927. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  928. c.ServeJSON()
  929. return
  930. }
  931. func (c *UserController) Admin_Edit() {
  932. T_uuid := c.GetString("T_uuid")
  933. if len(T_uuid) < 8 {
  934. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  935. c.ServeJSON()
  936. return
  937. }
  938. r, err := Account.Read_Admin_ByUuid(T_uuid)
  939. if err != nil {
  940. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  941. c.ServeJSON()
  942. return
  943. }
  944. T_power, T_power_err := c.GetInt("T_power")
  945. T_user := c.GetString("T_user")
  946. T_name := c.GetString("T_name")
  947. T_pass := c.GetString("T_pass")
  948. T_phone := c.GetString("T_phone")
  949. T_mail := c.GetString("T_mail")
  950. T_wx := c.GetString("T_wx")
  951. if T_power_err == nil {
  952. r.T_power = T_power
  953. }
  954. if len(T_pass) < 8 && len(T_pass) > 0 {
  955. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  956. c.ServeJSON()
  957. return
  958. }
  959. if len(T_user) > 0 {
  960. var admin Account.Admin
  961. admin, err = Account.Read_Admin_T_user(T_user)
  962. if err == nil && admin.T_uuid != T_uuid {
  963. c.Data["json"] = lib.JSONS{Code: 302, Msg: "用户名重复!"}
  964. c.ServeJSON()
  965. return
  966. }
  967. r.T_user = T_user
  968. }
  969. if len(T_name) > 0 {
  970. r.T_name = T_name
  971. }
  972. if len(T_pass) >= 8 {
  973. r.T_pass = T_pass
  974. }
  975. if len(T_phone) > 0 {
  976. r.T_phone = T_phone
  977. }
  978. if len(T_mail) > 0 {
  979. r.T_mail = T_mail
  980. }
  981. if len(T_wx) > 0 {
  982. r.T_wx = T_wx
  983. }
  984. is := Account.Update_Admin(r, "T_user", "T_power", "T_name", "T_pass", "T_phone", "T_mail", "T_wx")
  985. if !is {
  986. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  987. c.ServeJSON()
  988. return
  989. }
  990. if len(T_name) > 0 {
  991. if is = Company.Update_CompanyNotice_Bind_By_T_uuid(T_uuid, "内管-"+T_name); !is {
  992. logs.Info("修改内部用户 => 修改内部用户关联报警通知失败", T_uuid, T_name)
  993. }
  994. }
  995. r.T_pass = "********"
  996. System.Add_UserLogs_T(c.Admin_r.T_uuid, "内部用户管理", "修改", r)
  997. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  998. c.ServeJSON()
  999. return
  1000. }
  1001. func (c *UserController) Admin_Del() {
  1002. T_uuid := c.GetString("T_uuid")
  1003. if len(T_uuid) <= 0 {
  1004. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1005. c.ServeJSON()
  1006. return
  1007. }
  1008. admin_r_lod, err := Account.Read_Admin_ByUuid(T_uuid)
  1009. if err != nil {
  1010. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1011. c.ServeJSON()
  1012. return
  1013. }
  1014. if admin_r_lod.Id == 1 {
  1015. c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权删除!"}
  1016. c.ServeJSON()
  1017. return
  1018. }
  1019. if is := Account.Delete_Admin(admin_r_lod); !is {
  1020. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  1021. c.ServeJSON()
  1022. return
  1023. }
  1024. if is := Company.Delete_CompanyNotice_Bind_By_T_uuid(T_uuid); !is {
  1025. logs.Info("删除内部用户 => 删除内部用户关联报警通知失败", T_uuid)
  1026. }
  1027. System.Add_UserLogs_T(c.Admin_r.T_uuid, "内部用户管理", "删除", T_uuid)
  1028. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1029. c.ServeJSON()
  1030. return
  1031. }
  1032. // 报警通知的用户列表
  1033. func (c *UserController) User_Notice_List() {
  1034. T_name := c.GetString("T_name")
  1035. type R_JSONS struct {
  1036. //必须的大写开头
  1037. AdminList []Account.Admin_R
  1038. UserList []Account.Admin_R
  1039. }
  1040. var AdminList, UserList []Account.Admin_R
  1041. var r_jsons R_JSONS
  1042. // 操作pid
  1043. company_r, err := Account.Read_Company_ById(c.T_pid)
  1044. if err != nil {
  1045. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1046. c.ServeJSON()
  1047. return
  1048. }
  1049. T_pids := []int{}
  1050. for _, v := range strings.Split(strings.Trim(company_r.T_path, "/"), "/") {
  1051. pid, _ := strconv.Atoi(v)
  1052. T_pids = append(T_pids, pid)
  1053. }
  1054. // 绑定公司id的内部用户列表
  1055. AdminList = Account.Read_Admin_List_T_pids(c.T_pid)
  1056. // 绑定公司id的公司用户列表
  1057. //r_jsons.UserList = Account.Read_Admin_List_T_pid(c.T_pid)
  1058. // 绑定上级公司用户列表
  1059. UserList = Account.Read_Parent_Admin_List(T_pids)
  1060. if len(T_name) > 0 {
  1061. for _, v := range AdminList {
  1062. if strings.Contains(v.T_name, T_name) {
  1063. r_jsons.AdminList = append(r_jsons.AdminList, v)
  1064. }
  1065. }
  1066. for _, v := range UserList {
  1067. if strings.Contains(v.T_name, T_name) {
  1068. r_jsons.UserList = append(r_jsons.UserList, v)
  1069. }
  1070. }
  1071. } else {
  1072. r_jsons.AdminList = AdminList
  1073. r_jsons.UserList = UserList
  1074. }
  1075. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1076. c.ServeJSON()
  1077. return
  1078. }
  1079. // 管理员绑定公司
  1080. func (c *UserController) AdminCompanyBind_List() {
  1081. var r_jsons lib.R_JSONS
  1082. T_uuid := c.GetString("T_uuid")
  1083. if len(T_uuid) < 8 {
  1084. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1085. c.ServeJSON()
  1086. return
  1087. }
  1088. r, err := Account.Read_Admin_ByUuid(T_uuid)
  1089. if err != nil {
  1090. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1091. c.ServeJSON()
  1092. return
  1093. }
  1094. r_jsons.Data = Account.Read_Company_List_ByT_pids(r.T_pids)
  1095. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1096. c.ServeJSON()
  1097. return
  1098. }
  1099. func (c *UserController) AdminCompanyUnBind_List() {
  1100. var r_jsons lib.R_JSONS
  1101. T_name := c.GetString("T_name")
  1102. T_uuid := c.GetString("T_uuid")
  1103. if len(T_uuid) < 8 {
  1104. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1105. c.ServeJSON()
  1106. return
  1107. }
  1108. r, err := Account.Read_Admin_ByUuid(T_uuid)
  1109. if err != nil {
  1110. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1111. c.ServeJSON()
  1112. return
  1113. }
  1114. r_jsons.Data = Account.Read_UnBind_Company_List_ByT_pids(r.T_pids, T_name)
  1115. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1116. c.ServeJSON()
  1117. return
  1118. }
  1119. func (c *UserController) AdminCompanyBind_Add() {
  1120. T_uuid := c.GetString("T_uuid")
  1121. if len(T_uuid) < 8 {
  1122. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1123. c.ServeJSON()
  1124. return
  1125. }
  1126. T_pid, _ := c.GetInt("T_pid")
  1127. if T_pid == 0 {
  1128. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1129. c.ServeJSON()
  1130. return
  1131. }
  1132. r, err := Account.Read_Admin_ByUuid(T_uuid)
  1133. if err != nil {
  1134. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1135. c.ServeJSON()
  1136. return
  1137. }
  1138. if r.T_pids == "*" {
  1139. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1140. c.ServeJSON()
  1141. return
  1142. }
  1143. Company_r, err := Account.Read_Company_ById(T_pid)
  1144. if err != nil {
  1145. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1146. c.ServeJSON()
  1147. return
  1148. }
  1149. T_pids := Account.ReadCompanyIds_T_path(Company_r.T_path)
  1150. if err = Account.Add_Company_bind(r, T_pids); err != nil {
  1151. c.Data["json"] = lib.JSONS{Code: 202, Msg: "公司绑定失败"}
  1152. c.ServeJSON()
  1153. return
  1154. }
  1155. System.Add_UserLogs(c.Admin_r.T_uuid, "内部用户管理", "公司绑定添加", T_uuid+"-"+strconv.Itoa(T_pid))
  1156. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1157. c.ServeJSON()
  1158. return
  1159. }
  1160. func (c *UserController) AdminCompanyBind_Del() {
  1161. T_uuid := c.GetString("T_uuid")
  1162. if len(T_uuid) < 8 {
  1163. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1164. c.ServeJSON()
  1165. return
  1166. }
  1167. T_pid, _ := c.GetInt("T_pid")
  1168. if T_pid == 0 {
  1169. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1170. c.ServeJSON()
  1171. return
  1172. }
  1173. r, err := Account.Read_Admin_ByUuid(T_uuid)
  1174. Company_r, err := Account.Read_Company_ById(T_pid)
  1175. if err != nil {
  1176. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1177. c.ServeJSON()
  1178. return
  1179. }
  1180. T_pids := Account.ReadCompanyIds_T_path(Company_r.T_path)
  1181. if len(T_pids) == 0 {
  1182. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1183. c.ServeJSON()
  1184. return
  1185. }
  1186. if err = Account.Delete_Company_bind(r, T_pids); err != nil {
  1187. c.Data["json"] = lib.JSONS{Code: 202, Msg: "公司绑定失败"}
  1188. c.ServeJSON()
  1189. return
  1190. }
  1191. if is := Company.Delete_CompanyNotice_Bind_By_T_uuid_T_pid(T_uuid, T_pids); !is {
  1192. logs.Info("删除内部用户公司绑定 => 删除内部用户绑定的公司关联报警通知失败", T_uuid)
  1193. }
  1194. System.Add_UserLogs(c.Admin_r.T_uuid, "内部用户管理", "公司绑定删除", T_uuid+"-"+strconv.Itoa(T_pid))
  1195. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1196. c.ServeJSON()
  1197. return
  1198. }
  1199. // 权限管理
  1200. func (c *UserController) Power_List() {
  1201. var r_jsons lib.R_JSONS
  1202. page, _ := c.GetInt("page")
  1203. if page < 1 {
  1204. page = 1
  1205. }
  1206. page_z, _ := c.GetInt("page_z")
  1207. if page_z < 1 {
  1208. page_z = conf.Page_size
  1209. }
  1210. Name := c.GetString("T_name")
  1211. r_jsons.Data, r_jsons.Num = Account.Read_Power_List(Name, page, page_z)
  1212. r_jsons.Page = page
  1213. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1214. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1215. c.ServeJSON()
  1216. return
  1217. }
  1218. // 添加用户 权限选择列表
  1219. func (c *UserController) Power_List_All() {
  1220. r, err := Account.Read_Power_ById(c.Admin_r.T_power)
  1221. if err != nil {
  1222. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1223. c.ServeJSON()
  1224. return
  1225. }
  1226. var r_jsons lib.R_JSONS
  1227. r_jsons.Data = Account.Read_Power_List_ALL_User(r.T_select)
  1228. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1229. c.ServeJSON()
  1230. return
  1231. }
  1232. func (c *UserController) Power_Get() {
  1233. type Data struct {
  1234. Power Account.Power_
  1235. Menu []Account.Menu
  1236. Menu_checked []int
  1237. Select []Account.Power_R
  1238. Warning []Warning.WarningType_R
  1239. }
  1240. var data Data
  1241. id, id_err := c.GetInt("T_id")
  1242. if id_err != nil || id == 0 {
  1243. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1244. c.ServeJSON()
  1245. return
  1246. }
  1247. power, err := Account.Read_Power_ById(id)
  1248. if err != nil {
  1249. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1250. c.ServeJSON()
  1251. return
  1252. }
  1253. data.Power = Account.PowerToPower_(power)
  1254. data.Menu, data.Menu_checked = Account.Read_Menu_List_All()
  1255. if err != nil {
  1256. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_menu Err!"}
  1257. c.ServeJSON()
  1258. return
  1259. }
  1260. if power.T_menu != "*" {
  1261. data.Menu_checked = lib.SplitStringToIntIds(power.T_menu, "M")
  1262. }
  1263. if err != nil {
  1264. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_menu Err!"}
  1265. c.ServeJSON()
  1266. return
  1267. }
  1268. data.Select = Account.Read_Power_List_ALL_T_select(power.T_select)
  1269. if err != nil {
  1270. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_select Err!"}
  1271. c.ServeJSON()
  1272. return
  1273. }
  1274. data.Warning = Warning.Read_WarningType_All_Power_T_Warning(power.T_warning)
  1275. if err != nil {
  1276. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_warning Err!"}
  1277. c.ServeJSON()
  1278. return
  1279. }
  1280. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: data}
  1281. c.ServeJSON()
  1282. return
  1283. }
  1284. func (c *UserController) Power_Add() {
  1285. T_name := c.GetString("T_name")
  1286. T_select := c.GetString("T_select")
  1287. T_warning := c.GetString("T_warning")
  1288. T_menu := c.GetString("T_menu")
  1289. var_ := Account.Power{
  1290. T_name: T_name,
  1291. T_select: T_select,
  1292. T_warning: T_warning,
  1293. T_menu: T_menu,
  1294. T_State: 1,
  1295. }
  1296. _, err := Account.Add_Power(var_)
  1297. if err != nil {
  1298. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  1299. c.ServeJSON()
  1300. return
  1301. }
  1302. System.Add_UserLogs_T(c.Admin_r.T_uuid, "权限管理", "添加", var_)
  1303. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1304. c.ServeJSON()
  1305. return
  1306. }
  1307. func (c *UserController) Power_Edit() {
  1308. Id, Id_err := c.GetInt("T_id")
  1309. if Id_err != nil || Id == 0 {
  1310. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1311. c.ServeJSON()
  1312. return
  1313. }
  1314. if Id == 1 {
  1315. c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权修改!"}
  1316. c.ServeJSON()
  1317. return
  1318. }
  1319. r, err := Account.Read_Power_ById(Id)
  1320. if err != nil {
  1321. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1322. c.ServeJSON()
  1323. return
  1324. }
  1325. T_name := c.GetString("T_name")
  1326. T_select := c.GetString("T_select")
  1327. T_warning := c.GetString("T_warning")
  1328. T_menu := c.GetString("T_menu")
  1329. if len(T_name) > 0 {
  1330. r.T_name = T_name
  1331. }
  1332. if len(T_select) > 0 {
  1333. r.T_select = T_select
  1334. }
  1335. if len(T_warning) > 0 {
  1336. r.T_warning = T_warning
  1337. }
  1338. if len(T_menu) > 0 {
  1339. r.T_menu = T_menu
  1340. }
  1341. is := Account.Update_Power(r, "T_name", "T_select", "T_warning", "T_menu")
  1342. if !is {
  1343. c.Data["json"] = lib.JSONS{Code: 302, Msg: "修改失败!"}
  1344. c.ServeJSON()
  1345. return
  1346. }
  1347. System.Add_UserLogs_T(c.Admin_r.T_uuid, "权限管理", "修改", r)
  1348. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1349. c.ServeJSON()
  1350. return
  1351. }
  1352. func (c *UserController) Power_Del() {
  1353. id, id_err := c.GetInt("T_id")
  1354. if id_err != nil || id == 0 {
  1355. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1356. c.ServeJSON()
  1357. return
  1358. }
  1359. r, err := Account.Read_Power_ById(id)
  1360. if err != nil {
  1361. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1362. c.ServeJSON()
  1363. return
  1364. }
  1365. if cnt := Account.Read_Admin_Num_ByT_power(id); cnt > 0 {
  1366. c.Data["json"] = lib.JSONS{Code: 202, Msg: "有关联用户,禁止删除!"}
  1367. c.ServeJSON()
  1368. return
  1369. }
  1370. is := Account.Delete_Power(r)
  1371. if !is {
  1372. c.Data["json"] = lib.JSONS{Code: 302, Msg: "删除失败!"}
  1373. c.ServeJSON()
  1374. return
  1375. }
  1376. System.Add_UserLogs(c.Admin_r.T_uuid, "权限管理", "删除", strconv.Itoa(id))
  1377. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1378. c.ServeJSON()
  1379. return
  1380. }
  1381. // 菜单列表
  1382. func (c *UserController) User_Menu_List() {
  1383. type R_JSONS struct {
  1384. //必须的大写开头
  1385. Data interface{}
  1386. Permission interface{}
  1387. }
  1388. var r_jsons R_JSONS
  1389. power, err := Account.Read_Power_ById(c.Admin_r.T_power)
  1390. if err != nil {
  1391. c.Data["json"] = lib.JSONS{Code: 202, Msg: "获取菜单失败"}
  1392. c.ServeJSON()
  1393. return
  1394. }
  1395. //logs.Info("登录用户 菜单 pid 为:", c.T_pid)
  1396. ret := Account.Read_Menu_Bind_List(power.Id, power.T_menu, c.T_pid)
  1397. r_jsons.Data = ret.Menu
  1398. r_jsons.Permission = ret.Permission
  1399. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1400. c.ServeJSON()
  1401. return
  1402. }
  1403. func (c *UserController) GetUserMenuList() {
  1404. type R_JSONS struct {
  1405. //必须的大写开头
  1406. Pid int
  1407. Data interface{}
  1408. Permission interface{}
  1409. }
  1410. var r_jsons R_JSONS
  1411. power, err := Account.Read_Power_ById(c.Admin_r.T_power)
  1412. if err != nil {
  1413. c.Data["json"] = lib.JSONS{Code: 202, Msg: "获取菜单失败"}
  1414. c.ServeJSON()
  1415. return
  1416. }
  1417. //logs.Info("登录用户 菜单 pid 为:", c.T_pid)
  1418. ret := Account.Read_Menu_Bind_List(power.Id, power.T_menu, c.T_pid)
  1419. r_jsons.Data = ret.Menu
  1420. //r_jsons.Permission = ret.Permission
  1421. r_jsons.Pid = c.T_pid
  1422. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1423. c.ServeJSON()
  1424. return
  1425. }
  1426. // 权限菜单列表
  1427. func (c *UserController) Menu_List_All() {
  1428. var r_jsons lib.R_JSONS
  1429. r_jsons.Data, _ = Account.Read_Menu_List_All()
  1430. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1431. c.ServeJSON()
  1432. return
  1433. }
  1434. func (c *UserController) Menu_Excel() {
  1435. filename := fmt.Sprintf("冷链3.0菜单")
  1436. f := excelize.NewFile()
  1437. Style1, _ := f.NewStyle(
  1438. &excelize.Style{
  1439. Font: &excelize.Font{Bold: true, Size: 16, Family: "宋体"},
  1440. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center"},
  1441. })
  1442. Style2, _ := f.NewStyle(
  1443. &excelize.Style{
  1444. Font: &excelize.Font{Bold: true, Size: 14, Family: "宋体"},
  1445. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1446. Border: []excelize.Border{
  1447. {Type: "left", Color: "000000", Style: 1},
  1448. {Type: "top", Color: "000000", Style: 1},
  1449. {Type: "bottom", Color: "000000", Style: 1},
  1450. {Type: "right", Color: "000000", Style: 1},
  1451. },
  1452. })
  1453. f.MergeCell("Sheet1", "A1", "G1")
  1454. f.SetRowStyle("Sheet1", 1, 1, Style1)
  1455. f.SetCellValue("Sheet1", "A1", "Menu")
  1456. f.SetRowHeight("Sheet1", 1, 30)
  1457. f.MergeCell("Sheet1", "H1", "M1")
  1458. f.SetRowStyle("Sheet1", 1, 1, Style1)
  1459. f.SetCellValue("Sheet1", "H1", "API")
  1460. f.SetRowHeight("Sheet1", 1, 30)
  1461. f.SetCellStyle("Sheet1", "A2", "G2", Style2)
  1462. f.SetRowHeight("Sheet1", 2, 25)
  1463. // 这里设置表头
  1464. f.SetCellValue("Sheet1", "A2", "ID")
  1465. f.SetCellValue("Sheet1", "B2", "t_mid")
  1466. f.SetCellValue("Sheet1", "C2", "t_name")
  1467. f.SetCellValue("Sheet1", "D2", "t_permission")
  1468. f.SetCellValue("Sheet1", "E2", "t_sort")
  1469. f.SetCellValue("Sheet1", "F2", "t_pid")
  1470. f.SetCellValue("Sheet1", "G2", "t_icon")
  1471. f.SetCellValue("Sheet1", "H2", "ID")
  1472. f.SetCellValue("Sheet1", "I2", "t__menu__id")
  1473. f.SetCellValue("Sheet1", "J2", "t_name")
  1474. f.SetCellValue("Sheet1", "K2", "t_uri")
  1475. f.SetCellValue("Sheet1", "L2", "t_method")
  1476. f.SetCellValue("Sheet1", "M2", "t_enable")
  1477. // 设置列宽
  1478. f.SetColWidth("Sheet1", "A", "M", 15)
  1479. line := 2
  1480. menu := Account.Read_Menu_All()
  1481. for _, m := range menu {
  1482. Menu_Call(f, m, line)
  1483. }
  1484. Style11, _ := f.NewStyle(
  1485. &excelize.Style{
  1486. Font: &excelize.Font{Size: 10, Family: "宋体"},
  1487. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1488. Border: []excelize.Border{
  1489. {Type: "top", Color: "000000", Style: 1},
  1490. },
  1491. })
  1492. Style22, _ := f.NewStyle(
  1493. &excelize.Style{
  1494. Font: &excelize.Font{Size: 10, Family: "宋体"},
  1495. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1496. Border: []excelize.Border{
  1497. {Type: "left", Color: "000000", Style: 1},
  1498. },
  1499. })
  1500. Style33, _ := f.NewStyle(
  1501. &excelize.Style{
  1502. Font: &excelize.Font{Size: 10, Family: "宋体"},
  1503. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1504. Border: []excelize.Border{
  1505. {Type: "right", Color: "000000", Style: 1},
  1506. },
  1507. })
  1508. Style44, _ := f.NewStyle(
  1509. &excelize.Style{
  1510. Font: &excelize.Font{Size: 10, Family: "宋体"},
  1511. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1512. Border: []excelize.Border{
  1513. {Type: "bottom", Color: "000000", Style: 1},
  1514. },
  1515. })
  1516. //// 循环写入数据
  1517. for _, v := range menu {
  1518. line1 := line
  1519. line = Menu_Call(f, v, line)
  1520. f.SetCellStyle("Sheet1", fmt.Sprintf("A%d", line1), fmt.Sprintf("M%d", line1), Style11)
  1521. f.SetCellStyle("Sheet1", fmt.Sprintf("A%d", line), fmt.Sprintf("A%d", line), Style22)
  1522. f.SetCellStyle("Sheet1", fmt.Sprintf("M%d", line), fmt.Sprintf("M%d", line), Style33)
  1523. f.SetCellStyle("Sheet1", fmt.Sprintf("A%d", line), fmt.Sprintf("M%d", line), Style44)
  1524. }
  1525. timeStr := filename + fmt.Sprintf("(%s)", lib.GetRandstring(8, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 0))
  1526. // 保存文件
  1527. if err := f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
  1528. logs.Error(err)
  1529. }
  1530. var url string
  1531. ////// 上传 OSS
  1532. //url, is := NatsServer.Qiniu_UploadFile(lib.GetCurrentDirectory()+"/ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx")
  1533. //if !is {
  1534. // c.Data["json"] = lib.JSONS{Code: 202, Msg: "oss!"}
  1535. // c.ServeJSON()
  1536. // return
  1537. //}
  1538. ////删除目录
  1539. //err = os.Remove("ofile/" + timeStr + ".xlsx")
  1540. //if err != nil {
  1541. // logs.Error(err)
  1542. //}
  1543. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: url}
  1544. c.ServeJSON()
  1545. return
  1546. }
  1547. func Menu_Call(f *excelize.File, v Account.Menu, line int) int {
  1548. line++
  1549. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), v.Id)
  1550. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_mid)
  1551. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), v.T_name)
  1552. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), v.T_permission)
  1553. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_sort)
  1554. f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), v.T_pid)
  1555. f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), v.T_icon)
  1556. apiList := Account.Read_API_List_ByMenuId(v.Id)
  1557. for _, api := range apiList {
  1558. f.SetCellValue("Sheet1", fmt.Sprintf("H%d", line), api.Id)
  1559. f.SetCellValue("Sheet1", fmt.Sprintf("I%d", line), api.T_Menu_Id)
  1560. f.SetCellValue("Sheet1", fmt.Sprintf("J%d", line), api.T_name)
  1561. f.SetCellValue("Sheet1", fmt.Sprintf("K%d", line), api.T_uri)
  1562. f.SetCellValue("Sheet1", fmt.Sprintf("L%d", line), api.T_method)
  1563. f.SetCellValue("Sheet1", fmt.Sprintf("M%d", line), api.T_enable)
  1564. line++
  1565. }
  1566. return line
  1567. }
  1568. // 流量池
  1569. func (c *UserController) Flow_Pool() {
  1570. var r_jsons lib.R_JSONS
  1571. r_jsons.Data, _ = lib.Yidong_group_data_margin()
  1572. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1573. c.ServeJSON()
  1574. return
  1575. }
  1576. // 账单下载
  1577. func (c *UserController) CompanyBill_Excel() {
  1578. T_month := c.GetString("T_month")
  1579. _, err := time.Parse("2006-01", T_month)
  1580. if err != nil {
  1581. c.Data["json"] = lib.JSONS{Code: 202, Msg: "日期格式错误!"}
  1582. c.ServeJSON()
  1583. return
  1584. }
  1585. year, month := strings.Split(T_month, "-")[0], strings.Split(T_month, "-")[1]
  1586. company, _ := Account.Read_Company_ById(c.Admin_r.T_pid)
  1587. if err != nil {
  1588. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1589. c.ServeJSON()
  1590. return
  1591. }
  1592. filename := fmt.Sprintf("%s%s年%s月账单", company.T_name, year, month)
  1593. f := excelize.NewFile()
  1594. Style1, _ := f.NewStyle(
  1595. &excelize.Style{
  1596. Font: &excelize.Font{Bold: true, Size: 16, Family: "宋体"},
  1597. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center"},
  1598. })
  1599. Style2, _ := f.NewStyle(
  1600. &excelize.Style{
  1601. Font: &excelize.Font{Bold: true, Size: 14, Family: "宋体"},
  1602. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1603. Border: []excelize.Border{
  1604. {Type: "left", Color: "000000", Style: 1},
  1605. {Type: "top", Color: "000000", Style: 1},
  1606. {Type: "bottom", Color: "000000", Style: 1},
  1607. {Type: "right", Color: "000000", Style: 1},
  1608. },
  1609. })
  1610. f.MergeCell("Sheet1", "A1", "G1")
  1611. f.SetRowStyle("Sheet1", 1, 1, Style1)
  1612. f.SetCellValue("Sheet1", "A1", filename)
  1613. f.SetRowHeight("Sheet1", 1, 30)
  1614. f.SetCellStyle("Sheet1", "A2", "G2", Style2)
  1615. f.SetRowHeight("Sheet1", 2, 25)
  1616. // 这里设置表头
  1617. f.SetCellValue("Sheet1", "A2", "编号")
  1618. f.SetCellValue("Sheet1", "B2", "项目")
  1619. f.SetCellValue("Sheet1", "C2", "说明")
  1620. f.SetCellValue("Sheet1", "D2", "扣费/充值")
  1621. f.SetCellValue("Sheet1", "E2", "金额(元)")
  1622. f.SetCellValue("Sheet1", "F2", "余额(元)")
  1623. f.SetCellValue("Sheet1", "G2", "时间")
  1624. // 设置列宽
  1625. f.SetColWidth("Sheet1", "A", "A", 10)
  1626. f.SetColWidth("Sheet1", "B", "B", 50)
  1627. f.SetColWidth("Sheet1", "C", "C", 15)
  1628. f.SetColWidth("Sheet1", "D", "D", 12)
  1629. f.SetColWidth("Sheet1", "E", "E", 15)
  1630. f.SetColWidth("Sheet1", "F", "F", 15)
  1631. f.SetColWidth("Sheet1", "G", "G", 20)
  1632. line := 2
  1633. CompanyBill_List, err := Company.Read_CompanyBill_List(c.Admin_r.T_pid, T_month)
  1634. if err != nil {
  1635. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1636. c.ServeJSON()
  1637. return
  1638. }
  1639. // 循环写入数据
  1640. for i, v := range CompanyBill_List {
  1641. line++
  1642. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), i+1)
  1643. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_project)
  1644. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), v.T_bill)
  1645. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), v.T_type)
  1646. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_charging)
  1647. f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), v.T_balance)
  1648. f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), v.CreateTime.Format("2006-01-02"))
  1649. }
  1650. Style4, _ := f.NewStyle(
  1651. &excelize.Style{
  1652. Font: &excelize.Font{Size: 12, Family: "宋体"},
  1653. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1654. Border: []excelize.Border{
  1655. {Type: "left", Color: "000000", Style: 1},
  1656. {Type: "top", Color: "000000", Style: 1},
  1657. {Type: "bottom", Color: "000000", Style: 1},
  1658. {Type: "right", Color: "000000", Style: 1},
  1659. },
  1660. })
  1661. f.SetCellStyle("Sheet1", "A2", fmt.Sprintf("G%d", line), Style4)
  1662. timeStr := filename + fmt.Sprintf("(%s)", lib.GetRandstring(8, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 0))
  1663. // 保存文件
  1664. if err = f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
  1665. logs.Error(err)
  1666. }
  1667. var url string
  1668. //// 上传 OSS
  1669. url, is := NatsServer.Qiniu_UploadFile(lib.GetCurrentDirectory()+"/ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx")
  1670. if !is {
  1671. c.Data["json"] = lib.JSONS{Code: 202, Msg: "oss!"}
  1672. c.ServeJSON()
  1673. return
  1674. }
  1675. //删除目录
  1676. err = os.Remove("ofile/" + timeStr + ".xlsx")
  1677. if err != nil {
  1678. logs.Error(err)
  1679. }
  1680. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: url}
  1681. c.ServeJSON()
  1682. return
  1683. }
  1684. // 获取微信支付二维码
  1685. func (c *UserController) WxPay_QRCode() {
  1686. if c.Admin_r.T_pid == 0 {
  1687. c.Data["json"] = lib.JSONS{Code: 202, Msg: "非公司用户不能充值"}
  1688. c.ServeJSON()
  1689. return
  1690. }
  1691. Total, _ := c.GetFloat("Total")
  1692. Title := "冷链3.0-" + c.Admin_r.T_user
  1693. res, err := lib.PayTransactionNative(Title, Total)
  1694. if err != nil {
  1695. c.Data["json"] = lib.JSONS{Code: 202, Msg: err.Error()}
  1696. c.ServeJSON()
  1697. return
  1698. }
  1699. if res.Code != 200 {
  1700. c.Data["json"] = lib.JSONS{Code: 202, Msg: res.Message}
  1701. c.ServeJSON()
  1702. return
  1703. }
  1704. var_ := Company.CompanyPayOrder{
  1705. T_pid: c.Admin_r.T_pid,
  1706. T_type: "微信",
  1707. T_title: Title,
  1708. T_total: Total,
  1709. T_order_no: res.OrderNo,
  1710. T_remark: c.Admin_r.T_uuid,
  1711. }
  1712. _, err = Company.Add_CompanyPayOrder(var_)
  1713. if err != nil {
  1714. c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加订单失败!"}
  1715. c.ServeJSON()
  1716. return
  1717. }
  1718. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: res}
  1719. c.ServeJSON()
  1720. return
  1721. }
  1722. // 微信支付回调
  1723. func (c *UserController) WxPay_Notify() {
  1724. type RequestBody struct {
  1725. TradeNo string
  1726. Status string
  1727. }
  1728. type JSON struct {
  1729. Code int
  1730. Message string
  1731. }
  1732. buf := make([]byte, 1024)
  1733. n, _ := c.Ctx.Request.Body.Read(buf)
  1734. logs.Info("Body================ ", string(buf[0:n]))
  1735. //解密
  1736. adc_str, _ := lib.AesDeCrypt(buf[0:n], []byte(conf.Weixin_PwdKey))
  1737. //adc_str, _ := lib.AesDeCrypt(buf[0:n], []byte(conf.Weixin_PwdKey))
  1738. var body RequestBody
  1739. logs.Info("data================ ", string(adc_str))
  1740. err := json.Unmarshal(adc_str, &body)
  1741. if err != nil {
  1742. c.Data["json"] = JSON{Code: 202, Message: "json.Unmarshal is err:" + err.Error()}
  1743. c.ServeJSON()
  1744. }
  1745. payOrder, err := Company.Get_CompanyPayOrder_ByT_order_no(body.TradeNo)
  1746. if err != nil {
  1747. c.Data["json"] = JSON{Code: 202, Message: "查询失败!"}
  1748. c.ServeJSON()
  1749. return
  1750. }
  1751. //交易状态
  1752. //SUCCESS:支付成功
  1753. //REFUND:转入退款
  1754. //NOTPAY:未支付
  1755. //CLOSED:已关闭
  1756. //REVOKED:已撤销(付款码支付)
  1757. //USERPAYING:用户支付中(付款码支付)
  1758. //PAYERROR:支付失败(其他原因,如银行返回失败)
  1759. payOrder.T_status = body.Status
  1760. err = Company.Update_CompanyPayOrder(payOrder, "T_status")
  1761. if err != nil {
  1762. c.Data["json"] = JSON{Code: 202, Message: "更新状态失败!"}
  1763. c.ServeJSON()
  1764. return
  1765. }
  1766. // 添加充值记录
  1767. // 余额加上充值金额
  1768. if body.Status == "SUCCESS" {
  1769. Company_r, err := Account.Read_Company_ById(payOrder.T_pid)
  1770. if err != nil {
  1771. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1772. c.ServeJSON()
  1773. return
  1774. }
  1775. T_money64, _ := decimal.NewFromFloat(float64(Company_r.T_money) + payOrder.T_total).Round(2).Float64()
  1776. Company_r.T_money = float32(T_money64)
  1777. is := Account.Update_Company(Company_r, "T_money")
  1778. if !is {
  1779. c.Data["json"] = lib.JSONS{Code: 202, Msg: "充值失败!"}
  1780. c.ServeJSON()
  1781. return
  1782. }
  1783. }
  1784. c.Data["json"] = JSON{Code: 200, Message: "成功"}
  1785. c.ServeJSON()
  1786. return
  1787. }
  1788. // 获取微信支付订单状态
  1789. func (c *UserController) WxPay_GetOrderState() {
  1790. OrderNo := c.GetString("OrderNo")
  1791. payOrder, err := Company.Get_CompanyPayOrder_ByT_order_no(OrderNo)
  1792. if err != nil {
  1793. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1794. c.ServeJSON()
  1795. return
  1796. }
  1797. c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功", Data: payOrder}
  1798. c.ServeJSON()
  1799. return
  1800. }
  1801. // 设备分类绑定
  1802. func (c *UserController) UserDeviceBind_List() {
  1803. var r_jsons lib.R_JSONS
  1804. page, _ := c.GetInt("page")
  1805. if page < 1 {
  1806. page = 1
  1807. }
  1808. page_z, _ := c.GetInt("page_z")
  1809. if page_z < 1 {
  1810. page_z = conf.Page_size
  1811. }
  1812. T_name := c.GetString("T_name")
  1813. T_uuid := c.GetString("T_uuid")
  1814. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1815. if err != nil {
  1816. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1817. c.ServeJSON()
  1818. return
  1819. }
  1820. bindSN, err := Account.Read_UserDevice_List(admin_r)
  1821. if err != nil {
  1822. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1823. c.ServeJSON()
  1824. return
  1825. }
  1826. if len(bindSN) == 0 {
  1827. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1828. c.ServeJSON()
  1829. return
  1830. }
  1831. r_jsons.Data, r_jsons.Num = Device.Read_Device_List(&c.Admin_r, bindSN, c.T_pid, T_name, "", "", -1, page, page_z)
  1832. r_jsons.Page = page
  1833. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1834. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1835. c.ServeJSON()
  1836. return
  1837. }
  1838. func (c *UserController) UserDeviceUnbind_List() {
  1839. var r_jsons lib.R_JSONS
  1840. page, _ := c.GetInt("page")
  1841. if page < 1 {
  1842. page = 1
  1843. }
  1844. page_z, _ := c.GetInt("page_z")
  1845. if page_z < 1 {
  1846. page_z = conf.Page_size
  1847. }
  1848. T_name := c.GetString("T_name")
  1849. T_uuid := c.GetString("T_uuid")
  1850. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1851. if err != nil {
  1852. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1853. c.ServeJSON()
  1854. return
  1855. }
  1856. bindSN, err := Account.Read_UserDevice_List(admin_r)
  1857. if err != nil {
  1858. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1859. c.ServeJSON()
  1860. return
  1861. }
  1862. r_jsons.Data, r_jsons.Num = Device.Read_User_Unbind_Device_List(&c.Admin_r, bindSN, c.T_pid, T_name, page, page_z)
  1863. r_jsons.Page = page
  1864. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1865. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1866. c.ServeJSON()
  1867. return
  1868. }
  1869. func (c *UserController) UserDeviceBind_Add() {
  1870. T_sn := c.GetString("T_sn")
  1871. T_uuid := c.GetString("T_uuid")
  1872. T_oneHey, _ := c.GetInt("T_oneKey") // 一键绑定
  1873. if T_oneHey == 1 {
  1874. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1875. if err != nil {
  1876. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1877. c.ServeJSON()
  1878. return
  1879. }
  1880. bindSN, err := Account.Read_UserDevice_List(admin_r)
  1881. if err != nil {
  1882. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1883. c.ServeJSON()
  1884. return
  1885. }
  1886. Unbind_Device_List, _ := Device.Read_User_Unbind_Device_List(&c.Admin_r, bindSN, c.T_pid, "", 0, 9999)
  1887. var UserDeviceList []Account.UserDevice
  1888. for _, r := range Unbind_Device_List {
  1889. UserDeviceList = append(UserDeviceList, Account.UserDevice{T_sn: r.T_sn, T_uuid: T_uuid})
  1890. }
  1891. if _, err = Account.Add_UserDevice_Multi(T_uuid, UserDeviceList); err != nil {
  1892. c.Data["json"] = lib.JSONS{Code: 200, Msg: "绑定失败"}
  1893. c.ServeJSON()
  1894. return
  1895. }
  1896. System.Add_UserLogs(c.Admin_r.T_uuid, "用户管理", "一键绑定主机操作", T_uuid+"-"+T_sn)
  1897. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1898. c.ServeJSON()
  1899. return
  1900. }
  1901. if len(T_uuid) == 0 || len(T_sn) == 0 {
  1902. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id T_class_id Err!"}
  1903. c.ServeJSON()
  1904. return
  1905. }
  1906. if len(T_uuid) < 8 {
  1907. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1908. c.ServeJSON()
  1909. return
  1910. }
  1911. device, err := Device.Read_Device_ByT_sn(T_sn)
  1912. if err != nil {
  1913. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1914. c.ServeJSON()
  1915. return
  1916. }
  1917. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1918. if err != nil {
  1919. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1920. c.ServeJSON()
  1921. return
  1922. }
  1923. if admin_r.T_pid != device.T_pid {
  1924. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1925. c.ServeJSON()
  1926. return
  1927. }
  1928. userdievice, err := Account.Read_UserDevice_ByT_uuid_T_sn(T_uuid, T_sn)
  1929. if userdievice.Id > 0 {
  1930. c.Data["json"] = lib.JSONS{Code: 202, Msg: "重复绑定!"}
  1931. c.ServeJSON()
  1932. return
  1933. }
  1934. if _, err = Account.Add_UserDevice(Account.UserDevice{T_sn: T_sn, T_uuid: T_uuid}); err != nil {
  1935. c.Data["json"] = lib.JSONS{Code: 200, Msg: "绑定失败"}
  1936. c.ServeJSON()
  1937. return
  1938. }
  1939. System.Add_UserLogs(c.Admin_r.T_uuid, "用户管理", "绑定主机操作", T_uuid+"-"+T_sn)
  1940. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1941. c.ServeJSON()
  1942. return
  1943. }
  1944. func (c *UserController) UserDeviceBind_Del() {
  1945. T_sn := c.GetString("T_sn")
  1946. T_uuid := c.GetString("T_uuid")
  1947. if len(T_uuid) == 0 || len(T_sn) == 0 {
  1948. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id T_class_id Err!"}
  1949. c.ServeJSON()
  1950. return
  1951. }
  1952. if len(T_uuid) < 8 {
  1953. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1954. c.ServeJSON()
  1955. return
  1956. }
  1957. device, err := Device.Read_Device_ByT_sn(T_sn)
  1958. if err != nil {
  1959. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn Err!"}
  1960. c.ServeJSON()
  1961. return
  1962. }
  1963. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1964. if err != nil {
  1965. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1966. c.ServeJSON()
  1967. return
  1968. }
  1969. if admin_r.T_pid != device.T_pid {
  1970. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1971. c.ServeJSON()
  1972. return
  1973. }
  1974. userdievice, err := Account.Read_UserDevice_ByT_uuid_T_sn(T_uuid, T_sn)
  1975. if err != nil {
  1976. if err.Error() == orm.ErrNoRows.Error() {
  1977. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1978. c.ServeJSON()
  1979. return
  1980. }
  1981. c.Data["json"] = lib.JSONS{Code: 202, Msg: "解绑失败!"}
  1982. c.ServeJSON()
  1983. return
  1984. }
  1985. if err = Account.Delete_UserDevice(Account.UserDevice{Id: userdievice.Id, T_sn: T_sn, T_uuid: T_uuid}); err != nil {
  1986. c.Data["json"] = lib.JSONS{Code: 200, Msg: "删除失败"}
  1987. c.ServeJSON()
  1988. return
  1989. }
  1990. System.Add_UserLogs(c.Admin_r.T_uuid, "用户管理", "解绑主机操作", T_uuid+"-"+T_sn)
  1991. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1992. c.ServeJSON()
  1993. return
  1994. }