coverage.html 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <title>service: Go Coverage Report</title>
  6. <style>
  7. body {
  8. background: black;
  9. color: rgb(80, 80, 80);
  10. }
  11. body, pre, #legend span {
  12. font-family: Menlo, monospace;
  13. font-weight: bold;
  14. }
  15. #topbar {
  16. background: black;
  17. position: fixed;
  18. top: 0; left: 0; right: 0;
  19. height: 42px;
  20. border-bottom: 1px solid rgb(80, 80, 80);
  21. }
  22. #content {
  23. margin-top: 50px;
  24. }
  25. #nav, #legend {
  26. float: left;
  27. margin-left: 10px;
  28. }
  29. #legend {
  30. margin-top: 12px;
  31. }
  32. #nav {
  33. margin-top: 10px;
  34. }
  35. #legend span {
  36. margin: 0 5px;
  37. }
  38. .cov0 { color: rgb(192, 0, 0) }
  39. .cov1 { color: rgb(128, 128, 128) }
  40. .cov2 { color: rgb(116, 140, 131) }
  41. .cov3 { color: rgb(104, 152, 134) }
  42. .cov4 { color: rgb(92, 164, 137) }
  43. .cov5 { color: rgb(80, 176, 140) }
  44. .cov6 { color: rgb(68, 188, 143) }
  45. .cov7 { color: rgb(56, 200, 146) }
  46. .cov8 { color: rgb(44, 212, 149) }
  47. .cov9 { color: rgb(32, 224, 152) }
  48. .cov10 { color: rgb(20, 236, 155) }
  49. </style>
  50. </head>
  51. <body>
  52. <div id="topbar">
  53. <div id="nav">
  54. <select id="files">
  55. <option value="file0">bp.jydev.jianyu360.cn/BaseService/entManageApplication/service/service.go (28.9%)</option>
  56. </select>
  57. </div>
  58. <div id="legend">
  59. <span>not tracked</span>
  60. <span class="cov0">not covered</span>
  61. <span class="cov8">covered</span>
  62. </div>
  63. </div>
  64. <div id="content">
  65. <pre class="file" id="file0" style="display: none">package service
  66. import (
  67. "encoding/json"
  68. "fmt"
  69. "log"
  70. "strconv"
  71. "strings"
  72. "time"
  73. "context"
  74. . "bp.jydev.jianyu360.cn/BaseService/entManageApplication/entity"
  75. "bp.jydev.jianyu360.cn/BaseService/entManageApplication/rpc/entmanageapplication"
  76. "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
  77. // "github.com/zeromicro/go-zero/core/logx"
  78. "app.yhyue.com/moapp/jybase/common"
  79. "app.yhyue.com/moapp/jybase/redis"
  80. )
  81. func AddUsePerson(this *entmanageapplication.AddUsePersonReq) *entmanageapplication.AddUsePersonResp <span class="cov8" title="1">{
  82. timeStr, ok, id, msg, code := time.Now().Format("2006-01-02 15:04:05"), false, int64(0), "", int64(0)
  83. if this.EntUserId == "" </span><span class="cov0" title="0">{
  84. return &amp;entmanageapplication.AddUsePersonResp{
  85. ErrorCode: -1,
  86. ErrorMsg: "添加失败",
  87. Data: &amp;entmanageapplication.AddUsePerson{Status: int64(-1)},
  88. }
  89. }</span>
  90. <span class="cov8" title="1">UserArr := strings.Split(this.EntUserId, ",")
  91. sourceData := JyMysql.FindOne(EntnicheWaitEmpower, map[string]interface{}{"id": this.WaitEmpowerId}, "", "")
  92. if sourceData != nil &amp;&amp; len(*sourceData) &gt; 0 </span><span class="cov8" title="1">{
  93. empower_count := common.IntAll((*sourceData)["empower_count"])
  94. use_count := common.IntAll((*sourceData)["use_count"])
  95. if empower_count-use_count &lt; len(UserArr) </span><span class="cov0" title="0">{
  96. msg = "购买数量不足"
  97. code = int64(-1)
  98. }</span> else<span class="cov8" title="1"> {
  99. for _, v := range UserArr </span><span class="cov8" title="1">{
  100. //过滤空值2023-01-04
  101. if v == "" </span><span class="cov0" title="0">{
  102. continue</span>
  103. }
  104. //
  105. <span class="cov8" title="1">entUserId, _ := strconv.Atoi(v)
  106. data := JyMysql.FindOne(EntnichePower, map[string]interface{}{"ent_user_id": entUserId}, "", "")
  107. if data != nil &amp;&amp; len(*data) &gt; 0 </span><span class="cov0" title="0">{
  108. dataStatus := common.IntAll((*data)["status"])
  109. wait_empower_id := common.Int64All((*data)["wait_empower_id"])
  110. if dataStatus == -1 </span><span class="cov0" title="0">{
  111. ok = JyMysql.Update(EntnichePower, map[string]interface{}{"ent_user_id": entUserId}, map[string]interface{}{"wait_empower_id": this.WaitEmpowerId, "status": 1, "update_time": timeStr})
  112. }</span> else<span class="cov0" title="0"> {
  113. resdata := JyMysql.FindOne(EntnicheWaitEmpower, map[string]interface{}{"id": wait_empower_id}, "", "")
  114. end_time := common.ObjToString((*resdata)["end_time"])
  115. res, _ := time.ParseInLocation("2006-01-02 15:04:05", end_time, time.Local)
  116. if res.Unix() &gt; time.Now().Unix() </span><span class="cov0" title="0">{
  117. msg = "人员已经拥有权限,请先删除原有权限"
  118. code = int64(-1)
  119. break</span>
  120. } else<span class="cov0" title="0"> {
  121. ok = JyMysql.Update(EntnichePower, map[string]interface{}{"ent_user_id": entUserId}, map[string]interface{}{"wait_empower_id": this.WaitEmpowerId, "status": 1, "update_time": timeStr})
  122. }</span>
  123. }
  124. } else<span class="cov8" title="1"> {
  125. id = JyMysql.Insert(EntnichePower, map[string]interface{}{
  126. "wait_empower_id": this.WaitEmpowerId,
  127. "ent_id": this.EntId,
  128. "ent_user_id": entUserId,
  129. "status": 1,
  130. "create_time": timeStr,
  131. "update_time": timeStr,
  132. })
  133. }</span>
  134. <span class="cov8" title="1">JyMysql.UpdateOrDeleteBySql(`update `+EntnicheWaitEmpower+` set use_count = use_count + 1 where id = ?`, this.WaitEmpowerId)
  135. addPower(this.WaitEmpowerId, entUserId, this.EntId)</span>
  136. }
  137. }
  138. }
  139. <span class="cov8" title="1">status := 0
  140. if ok || id &gt; 0 </span><span class="cov8" title="1">{
  141. status = 1
  142. }</span>
  143. <span class="cov8" title="1">return &amp;entmanageapplication.AddUsePersonResp{
  144. ErrorCode: code,
  145. ErrorMsg: msg,
  146. Data: &amp;entmanageapplication.AddUsePerson{Status: int64(status)},
  147. }</span>
  148. }
  149. func DelUsePerson(this *entmanageapplication.DelUsePersonReq) *entmanageapplication.AddUsePersonResp <span class="cov8" title="1">{
  150. timeStr := time.Now().Format("2006-01-02 15:04:05")
  151. ok := JyMysql.Update(EntnichePower, map[string]interface{}{"id": this.EntnichePowerId},
  152. map[string]interface{}{"status": -1, "update_time": timeStr})
  153. delPower(this.EntnichePowerId)
  154. status := 0
  155. if ok </span><span class="cov8" title="1">{
  156. status = 1
  157. }</span>
  158. <span class="cov8" title="1">return &amp;entmanageapplication.AddUsePersonResp{
  159. ErrorCode: 0,
  160. Data: &amp;entmanageapplication.AddUsePerson{Status: int64(status)},
  161. }</span>
  162. }
  163. func UsePersonList(this *entmanageapplication.UsePersonListReq) *entmanageapplication.UsePersonListResp <span class="cov8" title="1">{
  164. nowTime := time.Now().Format("2006-01-02 15:04:05")
  165. data := JyMysql.SelectBySql(`select a.id,a.wait_empower_id,c.name,c.phone,c.mail,g.name as department,e.name as role from entniche_power a
  166. INNER JOIN entniche_user c on (a.ent_user_id=c.id and a.ent_id = c.ent_id)
  167. LEFT JOIN entniche_user_role d on (c.id=d.user_id)
  168. LEFT JOIN entniche_role e on (d.role_id=e.id)
  169. LEFT JOIN entniche_department_user f on (a.ent_user_id=f.user_id)
  170. LEFT JOIN entniche_department g on (g.id=f.dept_id)
  171. LEFT JOIN entniche_wait_empower h on (h.id=a.wait_empower_id)
  172. where a.status = 1 and a.ent_id = ? and end_time &gt;= ?
  173. order by a.update_time desc`, this.EntId, nowTime)
  174. arr := []*entmanageapplication.UsePersonList{}
  175. if data != nil &amp;&amp; len(*data) &gt; 0 </span><span class="cov8" title="1">{
  176. for _, v := range *data </span><span class="cov8" title="1">{
  177. wait_empower_id := common.Int64All(v["wait_empower_id"])
  178. if wait_empower_id == this.WaitEmpowerId </span><span class="cov0" title="0">{
  179. obj := &amp;entmanageapplication.UsePersonList{
  180. EntnichePowerId: common.Int64All(v["id"]),
  181. Name: common.ObjToString(v["name"]),
  182. Phone: common.ObjToString(v["phone"]),
  183. Email: common.ObjToString(v["mail"]),
  184. Department: common.ObjToString(v["department"]),
  185. Role: common.ObjToString(v["role"]),
  186. Status: 1,
  187. }
  188. arr = append(arr, obj)
  189. }</span> else<span class="cov8" title="1"> {
  190. obj := &amp;entmanageapplication.UsePersonList{
  191. EntnichePowerId: common.Int64All(v["id"]),
  192. Name: common.ObjToString(v["name"]),
  193. Phone: common.ObjToString(v["phone"]),
  194. Email: common.ObjToString(v["mail"]),
  195. Department: common.ObjToString(v["department"]),
  196. Role: common.ObjToString(v["role"]),
  197. Status: 2,
  198. }
  199. arr = append(arr, obj)
  200. }</span>
  201. }
  202. }
  203. <span class="cov8" title="1">return &amp;entmanageapplication.UsePersonListResp{
  204. ErrorCode: 0,
  205. Data: arr,
  206. }</span>
  207. }
  208. func BuyProductList(this *entmanageapplication.BuyProductListReq) *entmanageapplication.BuyProductListResp <span class="cov8" title="1">{
  209. nowTime := time.Now().Format("2006-01-02 15:04:05")
  210. data := JyMysql.SelectBySql(`select * from `+EntnicheWaitEmpower+` where ent_id = ? and end_time &gt;= ? order by create_time desc`, this.EntId, nowTime)
  211. arr := []*entmanageapplication.BuyProductList{}
  212. if data != nil &amp;&amp; len(*data) &gt; 0 </span><span class="cov8" title="1">{
  213. for _, v := range *data </span><span class="cov8" title="1">{
  214. product_type := common.ObjToString(v["product_type"])
  215. if product_type == "VIP订阅" </span><span class="cov8" title="1">{
  216. product_type = "超级订阅"
  217. }</span>
  218. <span class="cov8" title="1">obj := &amp;entmanageapplication.BuyProductList{
  219. WaitEmpowerId: common.Int64All(v["id"]),
  220. ProductType: product_type,
  221. UseCount: common.Int64All(v["use_count"]),
  222. EmpowerCount: common.Int64All(v["empower_count"]),
  223. ProvinceCount: common.Int64All(v["province_count"]),
  224. EndTime: common.ObjToString(v["end_time"]),
  225. }
  226. arr = append(arr, obj)</span>
  227. }
  228. }
  229. <span class="cov8" title="1">return &amp;entmanageapplication.BuyProductListResp{
  230. ErrorCode: 0,
  231. Data: arr,
  232. }</span>
  233. }
  234. func addPower(waitEmpowerId int64, entUserId int, entId int64) <span class="cov8" title="1">{
  235. data := JyMysql.FindOne(EntnicheOrder, map[string]interface{}{"wait_empower_id": waitEmpowerId}, "", "")
  236. if data != nil &amp;&amp; len(*data) &gt; 0 </span><span class="cov8" title="1">{
  237. orderId := common.Int64All((*data)["order_id"])
  238. orderData := JyMysql.FindOne(Order, map[string]interface{}{"id": orderId}, "", "")
  239. if orderData != nil &amp;&amp; len(*orderData) &gt; 0 </span><span class="cov8" title="1">{
  240. productType := common.ObjToString((*orderData)["product_type"])
  241. posititonId := getPositionId(entUserId)
  242. if productType == "VIP订阅" </span><span class="cov8" title="1">{
  243. log.Println("开通超级订阅", posititonId)
  244. setRule(1, int64(entUserId), entId, *orderData, posititonId)
  245. }</span> else<span class="cov0" title="0"> if productType == "大会员" </span><span class="cov0" title="0">{
  246. log.Println("开通大会员", posititonId)
  247. setRule(2, int64(entUserId), entId, *orderData, posititonId)
  248. }</span>
  249. }
  250. }
  251. }
  252. func openPowerBig(orderData map[string]interface{}, userId string) bool <span class="cov0" title="0">{
  253. filterMap := common.ObjToMap(orderData["filter"])
  254. startTime := common.ObjToString(orderData["vip_starttime"])
  255. endTime := common.ObjToString(orderData["vip_endtime"])
  256. tmp := "2006-01-02 15:04:05"
  257. startdate, _ := time.ParseInLocation(tmp, startTime, time.Local)
  258. enddate, _ := time.ParseInLocation(tmp, endTime, time.Local)
  259. level := common.IntAll((*filterMap)["level"])
  260. comboId := common.IntAll((*filterMap)["comboId"])
  261. payCycle := common.IntAll((*filterMap)["cycle"])
  262. serversId := common.ObjToString((*filterMap)["serversId"])
  263. serverMap := GetServerPid()
  264. dataType := 1
  265. if startdate.Unix() &gt; time.Now().Unix() </span><span class="cov0" title="0">{
  266. dataType = 2
  267. }</span>
  268. <span class="cov0" title="0">sets := map[string]interface{}{
  269. "i_member_status": common.If(dataType == 1, level, -level),
  270. "i_member_starttime": startdate.Unix(),
  271. "i_member_endtime": enddate.Unix(),
  272. "i_mainaccount": 1,
  273. "o_member_jy.i_wxpush": 1,
  274. }
  275. set := map[string]interface{}{
  276. "$set": sets,
  277. }
  278. ok := Mgo.UpdateById("user", userId, set)
  279. if !ok </span><span class="cov0" title="0">{
  280. log.Println("大会员创建订单user表大会员状态更新失败")
  281. }</span>
  282. <span class="cov0" title="0">if comboId != 0 </span><span class="cov0" title="0">{
  283. datas := JyMysql.FindOne("bigmember_combo", map[string]interface{}{"id": comboId}, "", "")
  284. if datas == nil || len(*datas) == 0 </span><span class="cov0" title="0">{
  285. log.Println("未找到此套餐")
  286. return false
  287. }</span>
  288. <span class="cov0" title="0">s_servers := common.ObjToString((*datas)["s_servers"])
  289. for _, s := range strings.Split(s_servers, ",") </span><span class="cov0" title="0">{
  290. serverId, _ := strconv.Atoi(s)
  291. mainId := serverId
  292. if serverMap[serverId] != 0 </span><span class="cov0" title="0">{
  293. serverId = serverMap[serverId]
  294. }</span>
  295. <span class="cov0" title="0">serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
  296. frequency := 0
  297. if serverData != nil &amp;&amp; len(*serverData) &gt; 0 </span><span class="cov0" title="0">{
  298. if serverId == 11 || serverId == 15 </span><span class="cov0" title="0">{
  299. if serverId == 15 </span><span class="cov0" title="0">{
  300. if payCycle &gt;= 12 </span><span class="cov0" title="0">{
  301. frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
  302. }</span> else<span class="cov0" title="0"> {
  303. frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
  304. }</span>
  305. } else<span class="cov0" title="0"> {
  306. frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
  307. }</span>
  308. } else<span class="cov0" title="0"> {
  309. frequency = common.IntAll((*serverData)["s_count_month"])
  310. }</span>
  311. }
  312. <span class="cov0" title="0">sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
  313. serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
  314. if serverDatas != nil &amp;&amp; len(*serverDatas) &gt; 0 </span><span class="cov0" title="0">{
  315. i_status := common.If(dataType == 1, 0, 1)
  316. // sql := ""
  317. // if serverId == 17 || serverId == 18 {
  318. sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
  319. // } else {
  320. // sql = "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
  321. // }
  322. status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
  323. if status1 &lt; 0 </span><span class="cov0" title="0">{
  324. log.Println("新建服务-更新服务表出错", userId)
  325. return false
  326. }</span>
  327. } else<span class="cov0" title="0"> {
  328. insert := map[string]interface{}{
  329. "s_smainid": mainId,
  330. "s_userid": userId,
  331. "s_serviceid": serverId,
  332. "i_frequency": frequency,
  333. "l_starttime": startdate.Format(tmp),
  334. "l_endtime": enddate.Format(tmp),
  335. "i_status": common.If(dataType == 1, 0, 1),
  336. "l_createtime": time.Now().Format(tmp),
  337. "l_updatetime": time.Now().Format(tmp),
  338. }
  339. order_id := JyMysql.Insert(BigServiceUser, insert)
  340. if order_id &gt; 0 </span><span class="cov0" title="0">{
  341. log.Println("用户服务表插入成功", userId)
  342. }</span> else<span class="cov0" title="0"> {
  343. log.Println("用户服务表插入失败", userId)
  344. return false
  345. }</span>
  346. }
  347. }
  348. } else<span class="cov0" title="0"> {
  349. for _, s := range strings.Split(serversId, ",") </span><span class="cov0" title="0">{
  350. serverId, _ := strconv.Atoi(s)
  351. mainId := serverId
  352. if serverMap[serverId] != 0 </span><span class="cov0" title="0">{
  353. serverId = serverMap[serverId]
  354. }</span>
  355. <span class="cov0" title="0">serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
  356. frequency := 0
  357. if serverData != nil &amp;&amp; len(*serverData) &gt; 0 </span><span class="cov0" title="0">{
  358. if serverId == 11 || serverId == 15 </span><span class="cov0" title="0">{
  359. if serverId == 15 </span><span class="cov0" title="0">{
  360. if payCycle &gt;= 12 </span><span class="cov0" title="0">{
  361. frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
  362. }</span> else<span class="cov0" title="0"> {
  363. frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
  364. }</span>
  365. } else<span class="cov0" title="0"> {
  366. frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
  367. }</span>
  368. } else<span class="cov0" title="0"> {
  369. frequency = common.IntAll((*serverData)["s_count_month"])
  370. }</span>
  371. }
  372. <span class="cov0" title="0">sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
  373. serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
  374. if serverDatas != nil &amp;&amp; len(*serverDatas) &gt; 0 </span><span class="cov0" title="0">{
  375. i_status := common.If(dataType == 1, 0, 1)
  376. sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
  377. status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
  378. if status1 &lt; 0 </span><span class="cov0" title="0">{
  379. log.Println("新建服务-更新服务表出错")
  380. return false
  381. }</span>
  382. } else<span class="cov0" title="0"> {
  383. insert := map[string]interface{}{
  384. "s_userid": userId,
  385. "s_smainid": mainId,
  386. "s_serviceid": serverId,
  387. "i_frequency": frequency,
  388. "l_starttime": startdate.Format(tmp),
  389. "l_endtime": enddate.Format(tmp),
  390. "i_status": common.If(dataType == 1, 0, 1),
  391. "l_createtime": time.Now().Format(tmp),
  392. "l_updatetime": time.Now().Format(tmp),
  393. }
  394. order_id := JyMysql.Insert(BigServiceUser, insert)
  395. if order_id &gt; 0 </span><span class="cov0" title="0">{
  396. log.Println("用户服务表插入成功", userId)
  397. }</span> else<span class="cov0" title="0"> {
  398. log.Println("用户服务表插入失败")
  399. return false
  400. }</span>
  401. }
  402. }
  403. }
  404. <span class="cov0" title="0">RedisDel(userId)
  405. return true</span>
  406. }
  407. func GetServerPid() map[int]int <span class="cov0" title="0">{
  408. pidMap := map[int]int{}
  409. datas := JyMysql.Find("bigmember_service", map[string]interface{}{"i_status": 0}, "id,i_pid", "", 0, 0)
  410. if datas != nil &amp;&amp; len(*datas) &gt; 0 </span><span class="cov0" title="0">{
  411. for _, v := range *datas </span><span class="cov0" title="0">{
  412. if v["i_pid"] != nil </span><span class="cov0" title="0">{
  413. pidMap[common.IntAll(v["id"])] = common.IntAll(v["i_pid"])
  414. }</span>
  415. }
  416. }
  417. <span class="cov0" title="0">return pidMap</span>
  418. }
  419. func RedisDel(userId string) <span class="cov0" title="0">{
  420. redis.Del(NewOther, "pl_indexMessage_"+userId)
  421. cacheKey := fmt.Sprintf(PowerCacheKey, userId)
  422. baseInfoCacheKey := fmt.Sprintf(IsGetUserBaseInfoRedisKey, userId)
  423. redisMenuKeyPC := fmt.Sprintf(RedisMenuKeyPC, userId)
  424. redisMenuKeyWX := fmt.Sprintf(RedisMenuKeyWX, userId)
  425. redisMenuKeyAPP := fmt.Sprintf(RedisMenuKeyAPP, userId)
  426. userPowerRedisKey := fmt.Sprintf(UserPowerRedisKey, time.Now().Day(), userId)
  427. redis.Del(NewOther, cacheKey)
  428. redis.Del(NewOther, baseInfoCacheKey)
  429. redis.Del(NewOther, redisMenuKeyPC)
  430. redis.Del(NewOther, redisMenuKeyWX)
  431. redis.Del(NewOther, redisMenuKeyAPP)
  432. redis.Del(NewOther, userPowerRedisKey)
  433. }</span>
  434. func openPowerVip(orderData map[string]interface{}, userId string) bool <span class="cov0" title="0">{
  435. vms := VipSimpleMsg{}
  436. json.Unmarshal([]byte(common.ObjToString(orderData["filter"])), &amp;vms)
  437. startTime := common.ObjToString(orderData["vip_starttime"])
  438. endTime := common.ObjToString(orderData["vip_endtime"])
  439. Date_Full_Layout := "2006-01-02 15:04:05"
  440. user_phone := common.ObjToString(orderData["user_phone"])
  441. startdate, _ := time.ParseInLocation(Date_Full_Layout, startTime, time.Local)
  442. enddate, _ := time.ParseInLocation(Date_Full_Layout, endTime, time.Local)
  443. dataType := 1
  444. if startdate.Unix() &gt; time.Now().Unix() </span><span class="cov0" title="0">{
  445. dataType = 2
  446. }</span>
  447. //为用户开通超级订阅权限
  448. //是否开通超级订阅 -1 试用到期 -2 正式到期 1 试用 2 开通
  449. <span class="cov0" title="0">isTrial := false
  450. if dataType == 2 </span><span class="cov0" title="0">{
  451. isTrial = true
  452. }</span>
  453. <span class="cov0" title="0">isOk := StartSubVip(user_phone, *vms.Area, *vms.NewBuyset, startdate, enddate, isTrial, userId)
  454. return isOk</span>
  455. }
  456. func StartSubVip(phone string, area map[string]interface{}, newBuyset SubvipBuySet, startTime, endTime time.Time, isTrial bool, userId string) bool <span class="cov0" title="0">{
  457. set := map[string]interface{}{
  458. "o_vipjy.i_trial": -1, //已激活试用
  459. "o_vipjy.o_area": area, //设置地区
  460. "o_vipjy.o_buyset": newBuyset, //购买内容 城市、省份、行业数量
  461. "l_vip_starttime": startTime.Unix(), //开始时间
  462. "l_vip_endtime": endTime.Unix(), //结束时间
  463. "i_vip_status": common.If(isTrial, -2, 2), //1试用 2正式 -2 试用到期
  464. "i_vip_expire_tip": 0, //消息提示初始化
  465. "o_vipjy.a_buyerclass": []interface{}{}, //设置行业
  466. }
  467. isOk := Mgo.UpdateById("user", userId, map[string]interface{}{
  468. "$set": set,
  469. })
  470. go func() </span><span class="cov0" title="0">{
  471. MergeKws(userId)
  472. RedisDel(userId)
  473. }</span>()
  474. <span class="cov0" title="0">if isOk </span><span class="cov0" title="0">{
  475. return true
  476. }</span>
  477. <span class="cov0" title="0">return true</span>
  478. }
  479. // 初始化vip订阅关键词
  480. func MergeKws(userId string) <span class="cov0" title="0">{
  481. if userId == "" </span><span class="cov0" title="0">{ //11-11 取消此操作
  482. return
  483. }</span>
  484. <span class="cov0" title="0">data, ok := Mgo.FindById("user", userId, `{"o_jy":1,"o_vipjy":1}`)
  485. var o_vipjy map[string]interface{}
  486. if ok &amp;&amp; data != nil &amp;&amp; len(*data) &gt; 0 </span><span class="cov0" title="0">{
  487. o_vipjy, _ = (*data)["o_vipjy"].(map[string]interface{})
  488. a_items, _ := o_vipjy["a_items"].([]interface{})
  489. if a_items == nil </span><span class="cov0" title="0">{ //首次
  490. Mgo.UpdateById("user", userId, map[string]interface{}{
  491. "$set": map[string]interface{}{"o_vipjy.i_matchway": 1, "o_vipjy.i_ratemode": 1, "o_vipjy.i_wxpush": 1, "o_vipjy.i_apppush": 1, "o_vipjy.i_projectmatch": 0, "o_vipjy.a_infotype": []string{}, "o_vipjy.a_items": []string{}, "o_vipjy.l_modifydate": time.Now().Unix()},
  492. })
  493. }</span>
  494. }
  495. }
  496. func delPower(id int64) <span class="cov8" title="1">{
  497. data := JyMysql.FindOne(EntnichePower, map[string]interface{}{"id": id}, "", "")
  498. if data != nil &amp;&amp; len(*data) &gt; 0 </span><span class="cov8" title="1">{
  499. waitEmpowerId := common.Int64All((*data)["wait_empower_id"])
  500. // entUserId := common.IntAll((*data)["ent_user_id"])
  501. JyMysql.UpdateOrDeleteBySql(`update `+EntnicheWaitEmpower+` set use_count = use_count - 1 where id = ? and use_count &gt; 0`, waitEmpowerId)
  502. eOData := JyMysql.FindOne(EntnicheOrder, map[string]interface{}{"wait_empower_id": waitEmpowerId}, "", "")
  503. if eOData != nil &amp;&amp; len(*eOData) &gt; 0 </span><span class="cov8" title="1">{
  504. orderId := common.Int64All((*eOData)["order_id"])
  505. orderData := JyMysql.FindOne(Order, map[string]interface{}{"id": orderId}, "", "")
  506. if orderData != nil &amp;&amp; len(*orderData) &gt; 0 </span><span class="cov8" title="1">{
  507. productType := common.ObjToString((*orderData)["product_type"])
  508. //userId := getUserId(entUserId)
  509. //TODO 删除
  510. if productType == "VIP订阅" </span>{<span class="cov0" title="0">
  511. //Mgo.UpdateById("user", userId, map[string]interface{}{"$unset": map[string]interface{}{"i_vip_status": 1, "l_vip_starttime": 1, "l_vip_endtime": 1}})
  512. }</span> else<span class="cov8" title="1"> if productType == "大会员" </span>{<span class="cov8" title="1">
  513. //Mgo.UpdateById("user", userId, map[string]interface{}{"$unset": map[string]interface{}{"i_member_status": 1, "i_member_starttime": 1, "i_member_endtime": 1}})
  514. //JyMysql.Update(BigServiceUser, map[string]interface{}{"s_userid": userId}, map[string]interface{}{"i_status": -1})
  515. }</span>
  516. // RedisDel(userId)
  517. }
  518. }
  519. }
  520. }
  521. //获取用户信息
  522. //return 职位id
  523. func getPositionId(entUserId int) int64 <span class="cov8" title="1">{
  524. ctx, _ := context.WithTimeout(context.Background(), 2*time.Second)
  525. res, _ := UserCenterRpc.IdentityByEntUserId(ctx, &amp;usercenter.IdentityReq{
  526. Id: int64(entUserId),
  527. })
  528. log.Println(res)
  529. return res.PositionId
  530. }</span>
  531. //订阅设置
  532. //types:1超级订阅 2大会员
  533. func setRule(types int64, entUserId, entId int64, orderData map[string]interface{}, posititonId int64) bool <span class="cov8" title="1">{
  534. //订阅设置
  535. query := map[string]interface{}{
  536. "i_entid": entId,
  537. "i_userid": entUserId,
  538. }
  539. //orderData相关权益
  540. set := map[string]interface{}{}
  541. setEntUser := map[string]interface{}{}
  542. //超级订阅
  543. if types == 1 </span><span class="cov8" title="1">{
  544. set, setEntUser = vipSetMap(orderData)
  545. }</span> else<span class="cov0" title="0"> if types == 2 </span><span class="cov0" title="0">{
  546. set, setEntUser = memberSetMap(posititonId, orderData)
  547. }</span>
  548. <span class="cov8" title="1">ok1 := Mgo.Update("entniche_rule", query, map[string]interface{}{
  549. "$set": set,
  550. }, true, false)
  551. ok2 := Mgo.Update("ent_user", query, map[string]interface{}{
  552. "$set": setEntUser,
  553. }, true, false)
  554. go func() </span>{<span class="cov8" title="1">
  555. // MergeKws(userId)
  556. // RedisDel(userId)
  557. }</span>()
  558. <span class="cov8" title="1">return ok1 &amp;&amp; ok2</span>
  559. }
  560. //
  561. func vipSetMap(orderData map[string]interface{}) (set map[string]interface{}, setEntUser map[string]interface{}) <span class="cov8" title="1">{
  562. set, setEntUser = map[string]interface{}{}, map[string]interface{}{}
  563. startTime := common.ObjToString(orderData["vip_starttime"])
  564. endTime := common.ObjToString(orderData["vip_endtime"])
  565. Date_Full_Layout := "2006-01-02 15:04:05"
  566. startdate, _ := time.ParseInLocation(Date_Full_Layout, startTime, time.Local)
  567. enddate, _ := time.ParseInLocation(Date_Full_Layout, endTime, time.Local)
  568. dataType := 1
  569. if startdate.Unix() &gt; time.Now().Unix() </span><span class="cov0" title="0">{
  570. dataType = 2
  571. }</span>
  572. //为用户开通超级订阅权限
  573. //是否开通超级订阅 -1 试用到期 -2 正式到期 1 试用 2 开通
  574. <span class="cov8" title="1">isTrial := false
  575. if dataType == 2 </span><span class="cov0" title="0">{
  576. isTrial = true
  577. }</span>
  578. <span class="cov8" title="1">setEntUser["l_createtime"] = time.Now().Unix()
  579. setEntUser["l_vip_starttime"] = startdate.Unix()
  580. setEntUser["l_vip_endtime"] = enddate.Unix()
  581. setEntUser["i_vip_status"] = common.If(isTrial, -2, 2) //1试用 2正式 -2 试用到期
  582. vms := VipSimpleMsg{}
  583. json.Unmarshal([]byte(common.ObjToString(orderData["filter"])), &amp;vms)
  584. set = map[string]interface{}{
  585. "o_entniche": map[string]interface{}{
  586. "i_trial": -1, //已激活试用
  587. "o_area": *vms.Area, //设置地区
  588. "o_buyset": *vms.NewBuyset, //购买内容 城市、省份、行业数量
  589. "a_buyerclass": []interface{}{}, //设置行业
  590. },
  591. "i_vip_expire_tip": 0, //消息提示初始化
  592. "i_type": 1,
  593. }
  594. return</span>
  595. }
  596. func memberSetMap(userId int64, orderData map[string]interface{}) (set map[string]interface{}, setEntUser map[string]interface{}) <span class="cov0" title="0">{
  597. set, setEntUser = map[string]interface{}{}, map[string]interface{}{}
  598. filterMap := common.ObjToMap(orderData["filter"])
  599. level := common.IntAll((*filterMap)["level"])
  600. comboId := common.IntAll((*filterMap)["comboId"])
  601. payCycle := common.IntAll((*filterMap)["cycle"])
  602. serversId := common.ObjToString((*filterMap)["serversId"])
  603. startTime := common.ObjToString(orderData["vip_starttime"])
  604. endTime := common.ObjToString(orderData["vip_endtime"])
  605. tmp := "2006-01-02 15:04:05"
  606. startdate, _ := time.ParseInLocation(tmp, startTime, time.Local)
  607. enddate, _ := time.ParseInLocation(tmp, endTime, time.Local)
  608. serverMap := GetServerPid()
  609. dataType := 1
  610. if startdate.Unix() &gt; time.Now().Unix() </span><span class="cov0" title="0">{
  611. dataType = 2
  612. }</span>
  613. <span class="cov0" title="0">set = map[string]interface{}{
  614. "o_member_jy": map[string]interface{}{
  615. "i_wxpush": 1,
  616. },
  617. }
  618. setEntUser = map[string]interface{}{
  619. "i_member_status": common.If(dataType == 1, level, -level),
  620. "i_member_starttime": startdate.Unix(),
  621. "i_member_endtime": enddate.Unix(),
  622. "i_mainaccount": 1,
  623. "l_createtime": time.Now().Unix(),
  624. }
  625. if comboId != 0 </span><span class="cov0" title="0">{
  626. datas := JyMysql.FindOne("bigmember_combo", map[string]interface{}{"id": comboId}, "", "")
  627. if datas == nil || len(*datas) == 0 </span><span class="cov0" title="0">{
  628. log.Println("未找到此套餐")
  629. return
  630. }</span>
  631. <span class="cov0" title="0">s_servers := common.ObjToString((*datas)["s_servers"])
  632. for _, s := range strings.Split(s_servers, ",") </span><span class="cov0" title="0">{
  633. serverId, _ := strconv.Atoi(s)
  634. mainId := serverId
  635. if serverMap[serverId] != 0 </span><span class="cov0" title="0">{
  636. serverId = serverMap[serverId]
  637. }</span>
  638. <span class="cov0" title="0">serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
  639. frequency := 0
  640. if serverData != nil &amp;&amp; len(*serverData) &gt; 0 </span><span class="cov0" title="0">{
  641. if serverId == 11 || serverId == 15 </span><span class="cov0" title="0">{
  642. if serverId == 15 </span><span class="cov0" title="0">{
  643. if payCycle &gt;= 12 </span><span class="cov0" title="0">{
  644. frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
  645. }</span> else<span class="cov0" title="0"> {
  646. frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
  647. }</span>
  648. } else<span class="cov0" title="0"> {
  649. frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
  650. }</span>
  651. } else<span class="cov0" title="0"> {
  652. frequency = common.IntAll((*serverData)["s_count_month"])
  653. }</span>
  654. }
  655. <span class="cov0" title="0">sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
  656. serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
  657. if serverDatas != nil &amp;&amp; len(*serverDatas) &gt; 0 </span><span class="cov0" title="0">{
  658. i_status := common.If(dataType == 1, 0, 1)
  659. sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
  660. status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
  661. if status1 &lt; 0 </span><span class="cov0" title="0">{
  662. log.Println("新建服务-更新服务表出错", userId)
  663. return
  664. }</span>
  665. } else<span class="cov0" title="0"> {
  666. insert := map[string]interface{}{
  667. "s_smainid": mainId,
  668. "s_userid": userId,
  669. "s_serviceid": serverId,
  670. "i_frequency": frequency,
  671. "l_starttime": startdate.Format(tmp),
  672. "l_endtime": enddate.Format(tmp),
  673. "i_status": common.If(dataType == 1, 0, 1),
  674. "l_createtime": time.Now().Format(tmp),
  675. "l_updatetime": time.Now().Format(tmp),
  676. }
  677. order_id := JyMysql.Insert(BigServiceUser, insert)
  678. if order_id &gt; 0 </span><span class="cov0" title="0">{
  679. log.Println("用户服务表插入成功", userId)
  680. }</span> else<span class="cov0" title="0"> {
  681. log.Println("用户服务表插入失败", userId)
  682. return
  683. }</span>
  684. }
  685. }
  686. } else<span class="cov0" title="0"> {
  687. for _, s := range strings.Split(serversId, ",") </span><span class="cov0" title="0">{
  688. serverId, _ := strconv.Atoi(s)
  689. mainId := serverId
  690. if serverMap[serverId] != 0 </span><span class="cov0" title="0">{
  691. serverId = serverMap[serverId]
  692. }</span>
  693. <span class="cov0" title="0">serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
  694. frequency := 0
  695. if serverData != nil &amp;&amp; len(*serverData) &gt; 0 </span><span class="cov0" title="0">{
  696. if serverId == 11 || serverId == 15 </span><span class="cov0" title="0">{
  697. if serverId == 15 </span><span class="cov0" title="0">{
  698. if payCycle &gt;= 12 </span><span class="cov0" title="0">{
  699. frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
  700. }</span> else<span class="cov0" title="0"> {
  701. frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
  702. }</span>
  703. } else<span class="cov0" title="0"> {
  704. frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
  705. }</span>
  706. } else<span class="cov0" title="0"> {
  707. frequency = common.IntAll((*serverData)["s_count_month"])
  708. }</span>
  709. }
  710. <span class="cov0" title="0">sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
  711. serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
  712. if serverDatas != nil &amp;&amp; len(*serverDatas) &gt; 0 </span><span class="cov0" title="0">{
  713. i_status := common.If(dataType == 1, 0, 1)
  714. sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
  715. status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
  716. if status1 &lt; 0 </span><span class="cov0" title="0">{
  717. log.Println("新建服务-更新服务表出错")
  718. return
  719. }</span>
  720. } else<span class="cov0" title="0"> {
  721. insert := map[string]interface{}{
  722. "s_userid": userId,
  723. "s_smainid": mainId,
  724. "s_serviceid": serverId,
  725. "i_frequency": frequency,
  726. "l_starttime": startdate.Format(tmp),
  727. "l_endtime": enddate.Format(tmp),
  728. "i_status": common.If(dataType == 1, 0, 1),
  729. "l_createtime": time.Now().Format(tmp),
  730. "l_updatetime": time.Now().Format(tmp),
  731. }
  732. order_id := JyMysql.Insert(BigServiceUser, insert)
  733. if order_id &gt; 0 </span><span class="cov0" title="0">{
  734. log.Println("用户服务表插入成功", userId)
  735. }</span> else<span class="cov0" title="0"> {
  736. log.Println("用户服务表插入失败")
  737. return
  738. }</span>
  739. }
  740. }
  741. }
  742. <span class="cov0" title="0">return</span>
  743. }
  744. </pre>
  745. </div>
  746. </body>
  747. <script>
  748. (function() {
  749. var files = document.getElementById('files');
  750. var visible;
  751. files.addEventListener('change', onChange, false);
  752. function select(part) {
  753. if (visible)
  754. visible.style.display = 'none';
  755. visible = document.getElementById(part);
  756. if (!visible)
  757. return;
  758. files.value = part;
  759. visible.style.display = 'block';
  760. location.hash = part;
  761. }
  762. function onChange() {
  763. select(files.value);
  764. window.scrollTo(0, 0);
  765. }
  766. if (location.hash != "") {
  767. select(location.hash.substr(1));
  768. }
  769. if (!visible) {
  770. select("file0");
  771. }
  772. })();
  773. </script>
  774. </html>