|
@@ -0,0 +1,613 @@
|
|
|
+
|
|
|
+<!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 (60.1%)</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"
|
|
|
+
|
|
|
+ "app.yhyue.com/moapp/jybase/mongodb"
|
|
|
+ . "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)
|
|
|
+ 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">{
|
|
|
+ entUserId, _ := strconv.Atoi(v)
|
|
|
+ data := JyMysql.FindOne(EntnichePower, map[string]interface{}{"ent_user_id": entUserId}, "", "")
|
|
|
+ if data != nil && len(*data) > 0 </span><span class="cov8" title="1">{
|
|
|
+ dataStatus := common.IntAll((*data)["status"])
|
|
|
+ if dataStatus == -1 </span><span class="cov8" title="1">{
|
|
|
+ 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"> {
|
|
|
+ msg = "人员已经拥有权限,请先删除原有权限"
|
|
|
+ code = int64(-1)
|
|
|
+ break</span>
|
|
|
+ }
|
|
|
+ } else<span class="cov0" title="0"> {
|
|
|
+ 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)</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">{
|
|
|
+ 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)
|
|
|
+ where a.status = 1 and a.ent_id = ?
|
|
|
+ order by a.update_time desc`, this.EntId)
|
|
|
+ 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">{
|
|
|
+ data := JyMysql.Find(EntnicheWaitEmpower, map[string]interface{}{"ent_id": this.EntId}, "", "create_time desc", 0, 0)
|
|
|
+ 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">{
|
|
|
+ obj := &entmanageapplication.BuyProductList{
|
|
|
+ WaitEmpowerId: common.Int64All(v["id"]),
|
|
|
+ ProductType: common.ObjToString(v["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) <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"])
|
|
|
+ userId := getUserId(entUserId)
|
|
|
+ if productType == "VIP订阅" || productType == "超级订阅" </span><span class="cov0" title="0">{
|
|
|
+ openPowerVip(*orderData, userId)
|
|
|
+ }</span> else<span class="cov8" title="1"> if productType == "大会员" </span><span class="cov8" title="1">{
|
|
|
+ openPowerBig(*orderData, userId)
|
|
|
+ }</span>
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func openPowerBig(orderData map[string]interface{}, userId string) bool <span class="cov8" title="1">{
|
|
|
+ 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)["payCycle"])
|
|
|
+ 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="cov8" title="1">sets := map[string]interface{}{
|
|
|
+ "i_member_status": 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="cov8" title="1">if comboId != 0 </span><span class="cov8" title="1">{
|
|
|
+ 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="cov8" title="1">s_servers := common.ObjToString((*datas)["s_servers"])
|
|
|
+ for _, s := range strings.Split(s_servers, ",") </span><span class="cov8" title="1">{
|
|
|
+ serverId, _ := strconv.Atoi(s)
|
|
|
+ mainId := serverId
|
|
|
+ if serverMap[serverId] != 0 </span><span class="cov0" title="0">{
|
|
|
+ serverId = serverMap[serverId]
|
|
|
+ }</span>
|
|
|
+ <span class="cov8" title="1">serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
|
|
|
+ frequency := 0
|
|
|
+ if serverData != nil && len(*serverData) > 0 </span><span class="cov8" title="1">{
|
|
|
+ if serverId == 11 || serverId == 15 </span><span class="cov8" title="1">{
|
|
|
+ if serverId == 15 </span><span class="cov8" title="1">{
|
|
|
+ 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="cov8" title="1"> {
|
|
|
+ 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="cov8" title="1"> {
|
|
|
+ frequency = common.IntAll((*serverData)["s_count_month"])
|
|
|
+ }</span>
|
|
|
+ }
|
|
|
+ <span class="cov8" title="1">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="cov8" title="1">{
|
|
|
+ i_status := common.If(dataType == 1, 0, 1)
|
|
|
+ sql := ""
|
|
|
+ if serverId == 17 || serverId == 18 </span><span class="cov0" title="0">{
|
|
|
+ sql = "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
|
|
|
+ }</span> else<span class="cov8" title="1"> {
|
|
|
+ sql = "update bigmember_service_user set i_frequency = i_frequency + ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
|
|
|
+ }</span>
|
|
|
+ <span class="cov8" title="1">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 = 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)
|
|
|
+ ClearBigVipUserPower(userId)</span>
|
|
|
+ }
|
|
|
+ <span class="cov8" title="1">return true</span>
|
|
|
+}
|
|
|
+
|
|
|
+func GetServerPid() map[int]int <span class="cov8" title="1">{
|
|
|
+ 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="cov8" title="1">{
|
|
|
+ for _, v := range *datas </span><span class="cov8" title="1">{
|
|
|
+ if v["i_pid"] != nil </span><span class="cov8" title="1">{
|
|
|
+ pidMap[common.IntAll(v["id"])] = common.IntAll(v["i_pid"])
|
|
|
+ }</span>
|
|
|
+ }
|
|
|
+ }
|
|
|
+ <span class="cov8" title="1">return pidMap</span>
|
|
|
+}
|
|
|
+
|
|
|
+func RedisDel(userId string) <span class="cov8" title="1">{
|
|
|
+ redis.Del("newother", BigKey+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)
|
|
|
+ redis.Del(NewOther, "pl_indexMessage_"+userId)
|
|
|
+ ClearBigVipUserPower(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 ClearBigVipUserPower(userId string) <span class="cov8" title="1">{
|
|
|
+ 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 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 = ?`, 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)
|
|
|
+ if productType == "VIP订阅" || productType == "超级订阅" </span><span class="cov0" title="0">{
|
|
|
+ Mgo.UpdateById("user", userId, map[string]interface{}{"$set": map[string]interface{}{"i_vip_status": -2}})
|
|
|
+ ClearBigVipUserPower(userId)
|
|
|
+ }</span> else<span class="cov8" title="1"> if productType == "大会员" </span><span class="cov8" title="1">{
|
|
|
+ Mgo.UpdateById("user", userId, map[string]interface{}{"$set": map[string]interface{}{"i_member_status": -2}})
|
|
|
+ RedisDel(userId)
|
|
|
+ ClearBigVipUserPower(userId)
|
|
|
+ JyMysql.Update(BigServiceUser, map[string]interface{}{"s_userid": userId}, map[string]interface{}{"i_status": -1})
|
|
|
+ }</span>
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func getUserId(entUserId int) string <span class="cov8" title="1">{
|
|
|
+ data := JyMysql.FindOne(EntnicheUser, map[string]interface{}{"id": entUserId}, "", "")
|
|
|
+ userId := ""
|
|
|
+ now := time.Now()
|
|
|
+ if data != nil && len(*data) > 0 </span><span class="cov8" title="1">{
|
|
|
+ phone := common.ObjToString((*data)["phone"])
|
|
|
+ userData, ok := Mgo.FindOne("user", map[string]interface{}{"s_phone": phone})
|
|
|
+ if ok && userData != nil && len(*userData) > 0 </span><span class="cov8" title="1">{
|
|
|
+ userId = mongodb.BsonIdToSId((*userData)["_id"])
|
|
|
+ }</span> else<span class="cov0" title="0"> {
|
|
|
+ userDatas, oks := Mgo.FindOne("user", map[string]interface{}{"s_m_phone": phone})
|
|
|
+ if oks && userDatas != nil && len(*userDatas) > 0 </span><span class="cov0" title="0">{
|
|
|
+ userId = mongodb.BsonIdToSId((*userDatas)["_id"])
|
|
|
+ }</span> else<span class="cov0" title="0"> {
|
|
|
+ ctx, _ := context.WithTimeout(context.Background(), 2*time.Second)
|
|
|
+ res, _ := UserCenterRpc.UserAdd(ctx, &usercenter.UserAddReq{
|
|
|
+ Appid: "10000",
|
|
|
+ Phone: phone,
|
|
|
+ })
|
|
|
+ data := map[string]interface{}{
|
|
|
+ "i_appid": 2,
|
|
|
+ "s_phone": phone,
|
|
|
+ "s_password": "",
|
|
|
+ "l_registedate": now.Unix(),
|
|
|
+ "i_ts_guide": 2,
|
|
|
+ "o_jy": map[string]interface{}{
|
|
|
+ "i_wxpush": 1,
|
|
|
+ "i_apppush": 1,
|
|
|
+ "i_ratemode": 2,
|
|
|
+ "l_modifydate": now.Unix(),
|
|
|
+ },
|
|
|
+ "s_regsource": "qmx_admin",
|
|
|
+ "base_user_id": res.Data.Id,
|
|
|
+ }
|
|
|
+ _id := Mgo.Save("user", data)
|
|
|
+ log.Println("新增用户", _id)
|
|
|
+ if _id != "" </span><span class="cov0" title="0">{
|
|
|
+ userId = _id
|
|
|
+ }</span>
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ <span class="cov8" title="1">return userId</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>
|