123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>service: Go Coverage Report</title>
- <style>
- body {
- background: black;
- color: rgb(80, 80, 80);
- }
- body, pre, #legend span {
- font-family: Menlo, monospace;
- font-weight: bold;
- }
- #topbar {
- background: black;
- position: fixed;
- top: 0; left: 0; right: 0;
- height: 42px;
- border-bottom: 1px solid rgb(80, 80, 80);
- }
- #content {
- margin-top: 50px;
- }
- #nav, #legend {
- float: left;
- margin-left: 10px;
- }
- #legend {
- margin-top: 12px;
- }
- #nav {
- margin-top: 10px;
- }
- #legend span {
- margin: 0 5px;
- }
- .cov0 { color: rgb(192, 0, 0) }
- .cov1 { color: rgb(128, 128, 128) }
- .cov2 { color: rgb(116, 140, 131) }
- .cov3 { color: rgb(104, 152, 134) }
- .cov4 { color: rgb(92, 164, 137) }
- .cov5 { color: rgb(80, 176, 140) }
- .cov6 { color: rgb(68, 188, 143) }
- .cov7 { color: rgb(56, 200, 146) }
- .cov8 { color: rgb(44, 212, 149) }
- .cov9 { color: rgb(32, 224, 152) }
- .cov10 { color: rgb(20, 236, 155) }
- </style>
- </head>
- <body>
- <div id="topbar">
- <div id="nav">
- <select id="files">
-
- <option value="file0">bp.jydev.jianyu360.cn/BaseService/entManageApplication/service/service.go (28.9%)</option>
-
- </select>
- </div>
- <div id="legend">
- <span>not tracked</span>
-
- <span class="cov0">not covered</span>
- <span class="cov8">covered</span>
-
- </div>
- </div>
- <div id="content">
-
- <pre class="file" id="file0" style="display: none">package service
- import (
- "encoding/json"
- "fmt"
- "log"
- "strconv"
- "strings"
- "time"
- "context"
- . "bp.jydev.jianyu360.cn/BaseService/entManageApplication/entity"
- "bp.jydev.jianyu360.cn/BaseService/entManageApplication/rpc/entmanageapplication"
- "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
- // "github.com/zeromicro/go-zero/core/logx"
- "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/redis"
- )
- func AddUsePerson(this *entmanageapplication.AddUsePersonReq) *entmanageapplication.AddUsePersonResp <span class="cov8" title="1">{
- timeStr, ok, id, msg, code := time.Now().Format("2006-01-02 15:04:05"), false, int64(0), "", int64(0)
- if this.EntUserId == "" </span><span class="cov0" title="0">{
- return &entmanageapplication.AddUsePersonResp{
- ErrorCode: -1,
- ErrorMsg: "添加失败",
- Data: &entmanageapplication.AddUsePerson{Status: int64(-1)},
- }
- }</span>
- <span class="cov8" title="1">UserArr := strings.Split(this.EntUserId, ",")
- sourceData := JyMysql.FindOne(EntnicheWaitEmpower, map[string]interface{}{"id": this.WaitEmpowerId}, "", "")
- if sourceData != nil && len(*sourceData) > 0 </span><span class="cov8" title="1">{
- empower_count := common.IntAll((*sourceData)["empower_count"])
- use_count := common.IntAll((*sourceData)["use_count"])
- if empower_count-use_count < len(UserArr) </span><span class="cov0" title="0">{
- msg = "购买数量不足"
- code = int64(-1)
- }</span> else<span class="cov8" title="1"> {
- for _, v := range UserArr </span><span class="cov8" title="1">{
- //过滤空值2023-01-04
- if v == "" </span><span class="cov0" title="0">{
- continue</span>
- }
- //
- <span class="cov8" title="1">entUserId, _ := strconv.Atoi(v)
- data := JyMysql.FindOne(EntnichePower, map[string]interface{}{"ent_user_id": entUserId}, "", "")
- if data != nil && len(*data) > 0 </span><span class="cov0" title="0">{
- dataStatus := common.IntAll((*data)["status"])
- wait_empower_id := common.Int64All((*data)["wait_empower_id"])
- if dataStatus == -1 </span><span class="cov0" title="0">{
- ok = JyMysql.Update(EntnichePower, map[string]interface{}{"ent_user_id": entUserId}, map[string]interface{}{"wait_empower_id": this.WaitEmpowerId, "status": 1, "update_time": timeStr})
- }</span> else<span class="cov0" title="0"> {
- resdata := JyMysql.FindOne(EntnicheWaitEmpower, map[string]interface{}{"id": wait_empower_id}, "", "")
- end_time := common.ObjToString((*resdata)["end_time"])
- res, _ := time.ParseInLocation("2006-01-02 15:04:05", end_time, time.Local)
- if res.Unix() > time.Now().Unix() </span><span class="cov0" title="0">{
- msg = "人员已经拥有权限,请先删除原有权限"
- code = int64(-1)
- break</span>
- } else<span class="cov0" title="0"> {
- ok = JyMysql.Update(EntnichePower, map[string]interface{}{"ent_user_id": entUserId}, map[string]interface{}{"wait_empower_id": this.WaitEmpowerId, "status": 1, "update_time": timeStr})
- }</span>
- }
- } else<span class="cov8" title="1"> {
- id = JyMysql.Insert(EntnichePower, map[string]interface{}{
- "wait_empower_id": this.WaitEmpowerId,
- "ent_id": this.EntId,
- "ent_user_id": entUserId,
- "status": 1,
- "create_time": timeStr,
- "update_time": timeStr,
- })
- }</span>
- <span class="cov8" title="1">JyMysql.UpdateOrDeleteBySql(`update `+EntnicheWaitEmpower+` set use_count = use_count + 1 where id = ?`, this.WaitEmpowerId)
- addPower(this.WaitEmpowerId, entUserId, this.EntId)</span>
- }
- }
- }
- <span class="cov8" title="1">status := 0
- if ok || id > 0 </span><span class="cov8" title="1">{
- status = 1
- }</span>
- <span class="cov8" title="1">return &entmanageapplication.AddUsePersonResp{
- ErrorCode: code,
- ErrorMsg: msg,
- Data: &entmanageapplication.AddUsePerson{Status: int64(status)},
- }</span>
- }
- func DelUsePerson(this *entmanageapplication.DelUsePersonReq) *entmanageapplication.AddUsePersonResp <span class="cov8" title="1">{
- timeStr := time.Now().Format("2006-01-02 15:04:05")
- ok := JyMysql.Update(EntnichePower, map[string]interface{}{"id": this.EntnichePowerId},
- map[string]interface{}{"status": -1, "update_time": timeStr})
- delPower(this.EntnichePowerId)
- status := 0
- if ok </span><span class="cov8" title="1">{
- status = 1
- }</span>
- <span class="cov8" title="1">return &entmanageapplication.AddUsePersonResp{
- ErrorCode: 0,
- Data: &entmanageapplication.AddUsePerson{Status: int64(status)},
- }</span>
- }
- func UsePersonList(this *entmanageapplication.UsePersonListReq) *entmanageapplication.UsePersonListResp <span class="cov8" title="1">{
- nowTime := time.Now().Format("2006-01-02 15:04:05")
- 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
- INNER JOIN entniche_user c on (a.ent_user_id=c.id and a.ent_id = c.ent_id)
- LEFT JOIN entniche_user_role d on (c.id=d.user_id)
- LEFT JOIN entniche_role e on (d.role_id=e.id)
- LEFT JOIN entniche_department_user f on (a.ent_user_id=f.user_id)
- LEFT JOIN entniche_department g on (g.id=f.dept_id)
- LEFT JOIN entniche_wait_empower h on (h.id=a.wait_empower_id)
- where a.status = 1 and a.ent_id = ? and end_time >= ?
- order by a.update_time desc`, this.EntId, nowTime)
- arr := []*entmanageapplication.UsePersonList{}
- if data != nil && len(*data) > 0 </span><span class="cov8" title="1">{
- for _, v := range *data </span><span class="cov8" title="1">{
- wait_empower_id := common.Int64All(v["wait_empower_id"])
- if wait_empower_id == this.WaitEmpowerId </span><span class="cov0" title="0">{
- obj := &entmanageapplication.UsePersonList{
- EntnichePowerId: common.Int64All(v["id"]),
- Name: common.ObjToString(v["name"]),
- Phone: common.ObjToString(v["phone"]),
- Email: common.ObjToString(v["mail"]),
- Department: common.ObjToString(v["department"]),
- Role: common.ObjToString(v["role"]),
- Status: 1,
- }
- arr = append(arr, obj)
- }</span> else<span class="cov8" title="1"> {
- obj := &entmanageapplication.UsePersonList{
- EntnichePowerId: common.Int64All(v["id"]),
- Name: common.ObjToString(v["name"]),
- Phone: common.ObjToString(v["phone"]),
- Email: common.ObjToString(v["mail"]),
- Department: common.ObjToString(v["department"]),
- Role: common.ObjToString(v["role"]),
- Status: 2,
- }
- arr = append(arr, obj)
- }</span>
- }
- }
- <span class="cov8" title="1">return &entmanageapplication.UsePersonListResp{
- ErrorCode: 0,
- Data: arr,
- }</span>
- }
- func BuyProductList(this *entmanageapplication.BuyProductListReq) *entmanageapplication.BuyProductListResp <span class="cov8" title="1">{
- nowTime := time.Now().Format("2006-01-02 15:04:05")
- data := JyMysql.SelectBySql(`select * from `+EntnicheWaitEmpower+` where ent_id = ? and end_time >= ? order by create_time desc`, this.EntId, nowTime)
- arr := []*entmanageapplication.BuyProductList{}
- if data != nil && len(*data) > 0 </span><span class="cov8" title="1">{
- for _, v := range *data </span><span class="cov8" title="1">{
- product_type := common.ObjToString(v["product_type"])
- if product_type == "VIP订阅" </span><span class="cov8" title="1">{
- product_type = "超级订阅"
- }</span>
- <span class="cov8" title="1">obj := &entmanageapplication.BuyProductList{
- WaitEmpowerId: common.Int64All(v["id"]),
- ProductType: product_type,
- UseCount: common.Int64All(v["use_count"]),
- EmpowerCount: common.Int64All(v["empower_count"]),
- ProvinceCount: common.Int64All(v["province_count"]),
- EndTime: common.ObjToString(v["end_time"]),
- }
- arr = append(arr, obj)</span>
- }
- }
- <span class="cov8" title="1">return &entmanageapplication.BuyProductListResp{
- ErrorCode: 0,
- Data: arr,
- }</span>
- }
- func addPower(waitEmpowerId int64, entUserId int, entId int64) <span class="cov8" title="1">{
- data := JyMysql.FindOne(EntnicheOrder, map[string]interface{}{"wait_empower_id": waitEmpowerId}, "", "")
- if data != nil && len(*data) > 0 </span><span class="cov8" title="1">{
- orderId := common.Int64All((*data)["order_id"])
- orderData := JyMysql.FindOne(Order, map[string]interface{}{"id": orderId}, "", "")
- if orderData != nil && len(*orderData) > 0 </span><span class="cov8" title="1">{
- productType := common.ObjToString((*orderData)["product_type"])
- posititonId := getPositionId(entUserId)
- if productType == "VIP订阅" </span><span class="cov8" title="1">{
- log.Println("开通超级订阅", posititonId)
- setRule(1, int64(entUserId), entId, *orderData, posititonId)
- }</span> else<span class="cov0" title="0"> if productType == "大会员" </span><span class="cov0" title="0">{
- log.Println("开通大会员", posititonId)
- setRule(2, int64(entUserId), entId, *orderData, posititonId)
- }</span>
- }
- }
- }
- func openPowerBig(orderData map[string]interface{}, userId string) bool <span class="cov0" title="0">{
- filterMap := common.ObjToMap(orderData["filter"])
- startTime := common.ObjToString(orderData["vip_starttime"])
- endTime := common.ObjToString(orderData["vip_endtime"])
- tmp := "2006-01-02 15:04:05"
- startdate, _ := time.ParseInLocation(tmp, startTime, time.Local)
- enddate, _ := time.ParseInLocation(tmp, endTime, time.Local)
- level := common.IntAll((*filterMap)["level"])
- comboId := common.IntAll((*filterMap)["comboId"])
- payCycle := common.IntAll((*filterMap)["cycle"])
- serversId := common.ObjToString((*filterMap)["serversId"])
- serverMap := GetServerPid()
- dataType := 1
- if startdate.Unix() > time.Now().Unix() </span><span class="cov0" title="0">{
- dataType = 2
- }</span>
- <span class="cov0" title="0">sets := map[string]interface{}{
- "i_member_status": common.If(dataType == 1, level, -level),
- "i_member_starttime": startdate.Unix(),
- "i_member_endtime": enddate.Unix(),
- "i_mainaccount": 1,
- "o_member_jy.i_wxpush": 1,
- }
- set := map[string]interface{}{
- "$set": sets,
- }
- ok := Mgo.UpdateById("user", userId, set)
- if !ok </span><span class="cov0" title="0">{
- log.Println("大会员创建订单user表大会员状态更新失败")
- }</span>
- <span class="cov0" title="0">if comboId != 0 </span><span class="cov0" title="0">{
- datas := JyMysql.FindOne("bigmember_combo", map[string]interface{}{"id": comboId}, "", "")
- if datas == nil || len(*datas) == 0 </span><span class="cov0" title="0">{
- log.Println("未找到此套餐")
- return false
- }</span>
- <span class="cov0" title="0">s_servers := common.ObjToString((*datas)["s_servers"])
- for _, s := range strings.Split(s_servers, ",") </span><span class="cov0" title="0">{
- serverId, _ := strconv.Atoi(s)
- mainId := serverId
- if serverMap[serverId] != 0 </span><span class="cov0" title="0">{
- serverId = serverMap[serverId]
- }</span>
- <span class="cov0" title="0">serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
- frequency := 0
- if serverData != nil && len(*serverData) > 0 </span><span class="cov0" title="0">{
- if serverId == 11 || serverId == 15 </span><span class="cov0" title="0">{
- if serverId == 15 </span><span class="cov0" title="0">{
- if payCycle >= 12 </span><span class="cov0" title="0">{
- frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
- }</span> else<span class="cov0" title="0"> {
- frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
- }</span>
- } else<span class="cov0" title="0"> {
- frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
- }</span>
- } else<span class="cov0" title="0"> {
- frequency = common.IntAll((*serverData)["s_count_month"])
- }</span>
- }
- <span class="cov0" title="0">sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
- serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
- if serverDatas != nil && len(*serverDatas) > 0 </span><span class="cov0" title="0">{
- i_status := common.If(dataType == 1, 0, 1)
- // sql := ""
- // if serverId == 17 || serverId == 18 {
- sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
- // } else {
- // sql = "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
- // }
- status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
- if status1 < 0 </span><span class="cov0" title="0">{
- log.Println("新建服务-更新服务表出错", userId)
- return false
- }</span>
- } else<span class="cov0" title="0"> {
- insert := map[string]interface{}{
- "s_smainid": mainId,
- "s_userid": userId,
- "s_serviceid": serverId,
- "i_frequency": frequency,
- "l_starttime": startdate.Format(tmp),
- "l_endtime": enddate.Format(tmp),
- "i_status": common.If(dataType == 1, 0, 1),
- "l_createtime": time.Now().Format(tmp),
- "l_updatetime": time.Now().Format(tmp),
- }
- order_id := JyMysql.Insert(BigServiceUser, insert)
- if order_id > 0 </span><span class="cov0" title="0">{
- log.Println("用户服务表插入成功", userId)
- }</span> else<span class="cov0" title="0"> {
- log.Println("用户服务表插入失败", userId)
- return false
- }</span>
- }
- }
- } else<span class="cov0" title="0"> {
- for _, s := range strings.Split(serversId, ",") </span><span class="cov0" title="0">{
- serverId, _ := strconv.Atoi(s)
- mainId := serverId
- if serverMap[serverId] != 0 </span><span class="cov0" title="0">{
- serverId = serverMap[serverId]
- }</span>
- <span class="cov0" title="0">serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
- frequency := 0
- if serverData != nil && len(*serverData) > 0 </span><span class="cov0" title="0">{
- if serverId == 11 || serverId == 15 </span><span class="cov0" title="0">{
- if serverId == 15 </span><span class="cov0" title="0">{
- if payCycle >= 12 </span><span class="cov0" title="0">{
- frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
- }</span> else<span class="cov0" title="0"> {
- frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
- }</span>
- } else<span class="cov0" title="0"> {
- frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
- }</span>
- } else<span class="cov0" title="0"> {
- frequency = common.IntAll((*serverData)["s_count_month"])
- }</span>
- }
- <span class="cov0" title="0">sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
- serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
- if serverDatas != nil && len(*serverDatas) > 0 </span><span class="cov0" title="0">{
- i_status := common.If(dataType == 1, 0, 1)
- sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
- status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
- if status1 < 0 </span><span class="cov0" title="0">{
- log.Println("新建服务-更新服务表出错")
- return false
- }</span>
- } else<span class="cov0" title="0"> {
- insert := map[string]interface{}{
- "s_userid": userId,
- "s_smainid": mainId,
- "s_serviceid": serverId,
- "i_frequency": frequency,
- "l_starttime": startdate.Format(tmp),
- "l_endtime": enddate.Format(tmp),
- "i_status": common.If(dataType == 1, 0, 1),
- "l_createtime": time.Now().Format(tmp),
- "l_updatetime": time.Now().Format(tmp),
- }
- order_id := JyMysql.Insert(BigServiceUser, insert)
- if order_id > 0 </span><span class="cov0" title="0">{
- log.Println("用户服务表插入成功", userId)
- }</span> else<span class="cov0" title="0"> {
- log.Println("用户服务表插入失败")
- return false
- }</span>
- }
- }
- }
- <span class="cov0" title="0">RedisDel(userId)
- return true</span>
- }
- func GetServerPid() map[int]int <span class="cov0" title="0">{
- pidMap := map[int]int{}
- datas := JyMysql.Find("bigmember_service", map[string]interface{}{"i_status": 0}, "id,i_pid", "", 0, 0)
- if datas != nil && len(*datas) > 0 </span><span class="cov0" title="0">{
- for _, v := range *datas </span><span class="cov0" title="0">{
- if v["i_pid"] != nil </span><span class="cov0" title="0">{
- pidMap[common.IntAll(v["id"])] = common.IntAll(v["i_pid"])
- }</span>
- }
- }
- <span class="cov0" title="0">return pidMap</span>
- }
- func RedisDel(userId string) <span class="cov0" title="0">{
- redis.Del(NewOther, "pl_indexMessage_"+userId)
- cacheKey := fmt.Sprintf(PowerCacheKey, userId)
- baseInfoCacheKey := fmt.Sprintf(IsGetUserBaseInfoRedisKey, userId)
- redisMenuKeyPC := fmt.Sprintf(RedisMenuKeyPC, userId)
- redisMenuKeyWX := fmt.Sprintf(RedisMenuKeyWX, userId)
- redisMenuKeyAPP := fmt.Sprintf(RedisMenuKeyAPP, userId)
- userPowerRedisKey := fmt.Sprintf(UserPowerRedisKey, time.Now().Day(), userId)
- redis.Del(NewOther, cacheKey)
- redis.Del(NewOther, baseInfoCacheKey)
- redis.Del(NewOther, redisMenuKeyPC)
- redis.Del(NewOther, redisMenuKeyWX)
- redis.Del(NewOther, redisMenuKeyAPP)
- redis.Del(NewOther, userPowerRedisKey)
- }</span>
- func openPowerVip(orderData map[string]interface{}, userId string) bool <span class="cov0" title="0">{
- vms := VipSimpleMsg{}
- json.Unmarshal([]byte(common.ObjToString(orderData["filter"])), &vms)
- startTime := common.ObjToString(orderData["vip_starttime"])
- endTime := common.ObjToString(orderData["vip_endtime"])
- Date_Full_Layout := "2006-01-02 15:04:05"
- user_phone := common.ObjToString(orderData["user_phone"])
- startdate, _ := time.ParseInLocation(Date_Full_Layout, startTime, time.Local)
- enddate, _ := time.ParseInLocation(Date_Full_Layout, endTime, time.Local)
- dataType := 1
- if startdate.Unix() > time.Now().Unix() </span><span class="cov0" title="0">{
- dataType = 2
- }</span>
- //为用户开通超级订阅权限
- //是否开通超级订阅 -1 试用到期 -2 正式到期 1 试用 2 开通
- <span class="cov0" title="0">isTrial := false
- if dataType == 2 </span><span class="cov0" title="0">{
- isTrial = true
- }</span>
- <span class="cov0" title="0">isOk := StartSubVip(user_phone, *vms.Area, *vms.NewBuyset, startdate, enddate, isTrial, userId)
- return isOk</span>
- }
- func StartSubVip(phone string, area map[string]interface{}, newBuyset SubvipBuySet, startTime, endTime time.Time, isTrial bool, userId string) bool <span class="cov0" title="0">{
- set := map[string]interface{}{
- "o_vipjy.i_trial": -1, //已激活试用
- "o_vipjy.o_area": area, //设置地区
- "o_vipjy.o_buyset": newBuyset, //购买内容 城市、省份、行业数量
- "l_vip_starttime": startTime.Unix(), //开始时间
- "l_vip_endtime": endTime.Unix(), //结束时间
- "i_vip_status": common.If(isTrial, -2, 2), //1试用 2正式 -2 试用到期
- "i_vip_expire_tip": 0, //消息提示初始化
- "o_vipjy.a_buyerclass": []interface{}{}, //设置行业
- }
- isOk := Mgo.UpdateById("user", userId, map[string]interface{}{
- "$set": set,
- })
- go func() </span><span class="cov0" title="0">{
- MergeKws(userId)
- RedisDel(userId)
- }</span>()
- <span class="cov0" title="0">if isOk </span><span class="cov0" title="0">{
- return true
- }</span>
- <span class="cov0" title="0">return true</span>
- }
- // 初始化vip订阅关键词
- func MergeKws(userId string) <span class="cov0" title="0">{
- if userId == "" </span><span class="cov0" title="0">{ //11-11 取消此操作
- return
- }</span>
- <span class="cov0" title="0">data, ok := Mgo.FindById("user", userId, `{"o_jy":1,"o_vipjy":1}`)
- var o_vipjy map[string]interface{}
- if ok && data != nil && len(*data) > 0 </span><span class="cov0" title="0">{
- o_vipjy, _ = (*data)["o_vipjy"].(map[string]interface{})
- a_items, _ := o_vipjy["a_items"].([]interface{})
- if a_items == nil </span><span class="cov0" title="0">{ //首次
- Mgo.UpdateById("user", userId, map[string]interface{}{
- "$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()},
- })
- }</span>
- }
- }
- func delPower(id int64) <span class="cov8" title="1">{
- data := JyMysql.FindOne(EntnichePower, map[string]interface{}{"id": id}, "", "")
- if data != nil && len(*data) > 0 </span><span class="cov8" title="1">{
- waitEmpowerId := common.Int64All((*data)["wait_empower_id"])
- // entUserId := common.IntAll((*data)["ent_user_id"])
- JyMysql.UpdateOrDeleteBySql(`update `+EntnicheWaitEmpower+` set use_count = use_count - 1 where id = ? and use_count > 0`, waitEmpowerId)
- eOData := JyMysql.FindOne(EntnicheOrder, map[string]interface{}{"wait_empower_id": waitEmpowerId}, "", "")
- if eOData != nil && len(*eOData) > 0 </span><span class="cov8" title="1">{
- orderId := common.Int64All((*eOData)["order_id"])
- orderData := JyMysql.FindOne(Order, map[string]interface{}{"id": orderId}, "", "")
- if orderData != nil && len(*orderData) > 0 </span><span class="cov8" title="1">{
- productType := common.ObjToString((*orderData)["product_type"])
- //userId := getUserId(entUserId)
- //TODO 删除
- if productType == "VIP订阅" </span>{<span class="cov0" title="0">
- //Mgo.UpdateById("user", userId, map[string]interface{}{"$unset": map[string]interface{}{"i_vip_status": 1, "l_vip_starttime": 1, "l_vip_endtime": 1}})
- }</span> else<span class="cov8" title="1"> if productType == "大会员" </span>{<span class="cov8" title="1">
- //Mgo.UpdateById("user", userId, map[string]interface{}{"$unset": map[string]interface{}{"i_member_status": 1, "i_member_starttime": 1, "i_member_endtime": 1}})
- //JyMysql.Update(BigServiceUser, map[string]interface{}{"s_userid": userId}, map[string]interface{}{"i_status": -1})
- }</span>
- // RedisDel(userId)
- }
- }
- }
- }
- //获取用户信息
- //return 职位id
- func getPositionId(entUserId int) int64 <span class="cov8" title="1">{
- ctx, _ := context.WithTimeout(context.Background(), 2*time.Second)
- res, _ := UserCenterRpc.IdentityByEntUserId(ctx, &usercenter.IdentityReq{
- Id: int64(entUserId),
- })
- log.Println(res)
- return res.PositionId
- }</span>
- //订阅设置
- //types:1超级订阅 2大会员
- func setRule(types int64, entUserId, entId int64, orderData map[string]interface{}, posititonId int64) bool <span class="cov8" title="1">{
- //订阅设置
- query := map[string]interface{}{
- "i_entid": entId,
- "i_userid": entUserId,
- }
- //orderData相关权益
- set := map[string]interface{}{}
- setEntUser := map[string]interface{}{}
- //超级订阅
- if types == 1 </span><span class="cov8" title="1">{
- set, setEntUser = vipSetMap(orderData)
- }</span> else<span class="cov0" title="0"> if types == 2 </span><span class="cov0" title="0">{
- set, setEntUser = memberSetMap(posititonId, orderData)
- }</span>
- <span class="cov8" title="1">ok1 := Mgo.Update("entniche_rule", query, map[string]interface{}{
- "$set": set,
- }, true, false)
- ok2 := Mgo.Update("ent_user", query, map[string]interface{}{
- "$set": setEntUser,
- }, true, false)
- go func() </span>{<span class="cov8" title="1">
- // MergeKws(userId)
- // RedisDel(userId)
- }</span>()
- <span class="cov8" title="1">return ok1 && ok2</span>
- }
- //
- func vipSetMap(orderData map[string]interface{}) (set map[string]interface{}, setEntUser map[string]interface{}) <span class="cov8" title="1">{
- set, setEntUser = map[string]interface{}{}, map[string]interface{}{}
- startTime := common.ObjToString(orderData["vip_starttime"])
- endTime := common.ObjToString(orderData["vip_endtime"])
- Date_Full_Layout := "2006-01-02 15:04:05"
- startdate, _ := time.ParseInLocation(Date_Full_Layout, startTime, time.Local)
- enddate, _ := time.ParseInLocation(Date_Full_Layout, endTime, time.Local)
- dataType := 1
- if startdate.Unix() > time.Now().Unix() </span><span class="cov0" title="0">{
- dataType = 2
- }</span>
- //为用户开通超级订阅权限
- //是否开通超级订阅 -1 试用到期 -2 正式到期 1 试用 2 开通
- <span class="cov8" title="1">isTrial := false
- if dataType == 2 </span><span class="cov0" title="0">{
- isTrial = true
- }</span>
- <span class="cov8" title="1">setEntUser["l_createtime"] = time.Now().Unix()
- setEntUser["l_vip_starttime"] = startdate.Unix()
- setEntUser["l_vip_endtime"] = enddate.Unix()
- setEntUser["i_vip_status"] = common.If(isTrial, -2, 2) //1试用 2正式 -2 试用到期
- vms := VipSimpleMsg{}
- json.Unmarshal([]byte(common.ObjToString(orderData["filter"])), &vms)
- set = map[string]interface{}{
- "o_entniche": map[string]interface{}{
- "i_trial": -1, //已激活试用
- "o_area": *vms.Area, //设置地区
- "o_buyset": *vms.NewBuyset, //购买内容 城市、省份、行业数量
- "a_buyerclass": []interface{}{}, //设置行业
- },
- "i_vip_expire_tip": 0, //消息提示初始化
- "i_type": 1,
- }
- return</span>
- }
- func memberSetMap(userId int64, orderData map[string]interface{}) (set map[string]interface{}, setEntUser map[string]interface{}) <span class="cov0" title="0">{
- set, setEntUser = map[string]interface{}{}, map[string]interface{}{}
- filterMap := common.ObjToMap(orderData["filter"])
- level := common.IntAll((*filterMap)["level"])
- comboId := common.IntAll((*filterMap)["comboId"])
- payCycle := common.IntAll((*filterMap)["cycle"])
- serversId := common.ObjToString((*filterMap)["serversId"])
- startTime := common.ObjToString(orderData["vip_starttime"])
- endTime := common.ObjToString(orderData["vip_endtime"])
- tmp := "2006-01-02 15:04:05"
- startdate, _ := time.ParseInLocation(tmp, startTime, time.Local)
- enddate, _ := time.ParseInLocation(tmp, endTime, time.Local)
- serverMap := GetServerPid()
- dataType := 1
- if startdate.Unix() > time.Now().Unix() </span><span class="cov0" title="0">{
- dataType = 2
- }</span>
- <span class="cov0" title="0">set = map[string]interface{}{
- "o_member_jy": map[string]interface{}{
- "i_wxpush": 1,
- },
- }
- setEntUser = map[string]interface{}{
- "i_member_status": common.If(dataType == 1, level, -level),
- "i_member_starttime": startdate.Unix(),
- "i_member_endtime": enddate.Unix(),
- "i_mainaccount": 1,
- "l_createtime": time.Now().Unix(),
- }
- if comboId != 0 </span><span class="cov0" title="0">{
- datas := JyMysql.FindOne("bigmember_combo", map[string]interface{}{"id": comboId}, "", "")
- if datas == nil || len(*datas) == 0 </span><span class="cov0" title="0">{
- log.Println("未找到此套餐")
- return
- }</span>
- <span class="cov0" title="0">s_servers := common.ObjToString((*datas)["s_servers"])
- for _, s := range strings.Split(s_servers, ",") </span><span class="cov0" title="0">{
- serverId, _ := strconv.Atoi(s)
- mainId := serverId
- if serverMap[serverId] != 0 </span><span class="cov0" title="0">{
- serverId = serverMap[serverId]
- }</span>
- <span class="cov0" title="0">serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
- frequency := 0
- if serverData != nil && len(*serverData) > 0 </span><span class="cov0" title="0">{
- if serverId == 11 || serverId == 15 </span><span class="cov0" title="0">{
- if serverId == 15 </span><span class="cov0" title="0">{
- if payCycle >= 12 </span><span class="cov0" title="0">{
- frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
- }</span> else<span class="cov0" title="0"> {
- frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
- }</span>
- } else<span class="cov0" title="0"> {
- frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
- }</span>
- } else<span class="cov0" title="0"> {
- frequency = common.IntAll((*serverData)["s_count_month"])
- }</span>
- }
- <span class="cov0" title="0">sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
- serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
- if serverDatas != nil && len(*serverDatas) > 0 </span><span class="cov0" title="0">{
- i_status := common.If(dataType == 1, 0, 1)
- sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
- status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
- if status1 < 0 </span><span class="cov0" title="0">{
- log.Println("新建服务-更新服务表出错", userId)
- return
- }</span>
- } else<span class="cov0" title="0"> {
- insert := map[string]interface{}{
- "s_smainid": mainId,
- "s_userid": userId,
- "s_serviceid": serverId,
- "i_frequency": frequency,
- "l_starttime": startdate.Format(tmp),
- "l_endtime": enddate.Format(tmp),
- "i_status": common.If(dataType == 1, 0, 1),
- "l_createtime": time.Now().Format(tmp),
- "l_updatetime": time.Now().Format(tmp),
- }
- order_id := JyMysql.Insert(BigServiceUser, insert)
- if order_id > 0 </span><span class="cov0" title="0">{
- log.Println("用户服务表插入成功", userId)
- }</span> else<span class="cov0" title="0"> {
- log.Println("用户服务表插入失败", userId)
- return
- }</span>
- }
- }
- } else<span class="cov0" title="0"> {
- for _, s := range strings.Split(serversId, ",") </span><span class="cov0" title="0">{
- serverId, _ := strconv.Atoi(s)
- mainId := serverId
- if serverMap[serverId] != 0 </span><span class="cov0" title="0">{
- serverId = serverMap[serverId]
- }</span>
- <span class="cov0" title="0">serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
- frequency := 0
- if serverData != nil && len(*serverData) > 0 </span><span class="cov0" title="0">{
- if serverId == 11 || serverId == 15 </span><span class="cov0" title="0">{
- if serverId == 15 </span><span class="cov0" title="0">{
- if payCycle >= 12 </span><span class="cov0" title="0">{
- frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
- }</span> else<span class="cov0" title="0"> {
- frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
- }</span>
- } else<span class="cov0" title="0"> {
- frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
- }</span>
- } else<span class="cov0" title="0"> {
- frequency = common.IntAll((*serverData)["s_count_month"])
- }</span>
- }
- <span class="cov0" title="0">sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
- serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
- if serverDatas != nil && len(*serverDatas) > 0 </span><span class="cov0" title="0">{
- i_status := common.If(dataType == 1, 0, 1)
- sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
- status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
- if status1 < 0 </span><span class="cov0" title="0">{
- log.Println("新建服务-更新服务表出错")
- return
- }</span>
- } else<span class="cov0" title="0"> {
- insert := map[string]interface{}{
- "s_userid": userId,
- "s_smainid": mainId,
- "s_serviceid": serverId,
- "i_frequency": frequency,
- "l_starttime": startdate.Format(tmp),
- "l_endtime": enddate.Format(tmp),
- "i_status": common.If(dataType == 1, 0, 1),
- "l_createtime": time.Now().Format(tmp),
- "l_updatetime": time.Now().Format(tmp),
- }
- order_id := JyMysql.Insert(BigServiceUser, insert)
- if order_id > 0 </span><span class="cov0" title="0">{
- log.Println("用户服务表插入成功", userId)
- }</span> else<span class="cov0" title="0"> {
- log.Println("用户服务表插入失败")
- return
- }</span>
- }
- }
- }
- <span class="cov0" title="0">return</span>
- }
- </pre>
-
- </div>
- </body>
- <script>
- (function() {
- var files = document.getElementById('files');
- var visible;
- files.addEventListener('change', onChange, false);
- function select(part) {
- if (visible)
- visible.style.display = 'none';
- visible = document.getElementById(part);
- if (!visible)
- return;
- files.value = part;
- visible.style.display = 'block';
- location.hash = part;
- }
- function onChange() {
- select(files.value);
- window.scrollTo(0, 0);
- }
- if (location.hash != "") {
- select(location.hash.substr(1));
- }
- if (!visible) {
- select("file0");
- }
- })();
- </script>
- </html>
|