Browse Source

freature(*): 微信小程序-督办功能、日程功能对接

likai 2 years ago
parent
commit
6692cd63e3

+ 1 - 0
opms_parent/app/model/plat/plat_schedule.go

@@ -15,6 +15,7 @@ import (
 type PlatSchedule internal.PlatSchedule
 
 // Fill with you ideas below.
+
 //AddScheduleSeq 添加日程表
 type AddScheduleSeq struct {
 	SchTitle   string      `json:"schTitle"   v:"required#日程标题不能为空"` //标题

+ 20 - 18
opms_parent/app/service/dingtalk_log/dingtalk_log.go

@@ -8,14 +8,14 @@ import (
 	"github.com/gogf/gf/os/glog"
 )
 
-type taskService struct {
+type logService struct {
 	*service.ContextService
 
 	Dao *dingtalk_log.DingtalkLogDao
 }
 
-func newService(ctx context.Context) (svc *taskService, err error) {
-	svc = new(taskService)
+func newService(ctx context.Context) (svc *logService, err error) {
+	svc = new(logService)
 	if svc.ContextService, err = svc.Init(ctx); err != nil {
 		return nil, err
 	}
@@ -24,20 +24,22 @@ func newService(ctx context.Context) (svc *taskService, err error) {
 }
 
 func Create(ctx context.Context, logType, content string) {
-	srv, err := newService(ctx)
-	if err != nil {
-		glog.Error(err)
-		return
-	}
-	// 构造日志数据
-	var entity model.DingtalkLog
-	entity.Type = logType
-	entity.Content = content
-	service.SetCreatedInfo(&entity, srv.GetCxtUserId(), srv.GetCxtUserName())
+	// 异步写入日志
+	go func(ctx context.Context, logType, content string) {
+		srv, err := newService(ctx)
+		if err != nil {
+			glog.Error(err)
+			return
+		}
+		// 构造日志数据
+		var entity model.DingtalkLog
+		entity.Type = logType
+		entity.Content = content
+		service.SetCreatedInfo(&entity, srv.GetCxtUserId(), srv.GetCxtUserName())
 
-	_, err = srv.Dao.Save(entity)
-	if err != nil {
-		glog.Error(err)
-		return
-	}
+		_, err = srv.Dao.Save(entity)
+		if err != nil {
+			glog.Error(err)
+		}
+	}(ctx, logType, content)
 }

+ 19 - 0
opms_parent/app/service/plat/plat_schedule.go

@@ -7,6 +7,7 @@ import (
 	"database/sql"
 	"fmt"
 	"github.com/gogf/gf/errors/gerror"
+	"github.com/gogf/gf/os/glog"
 	"github.com/gogf/gf/os/gtime"
 	"github.com/gogf/gf/util/gconv"
 	"strings"
@@ -52,6 +53,12 @@ func (s *scheduleService) GetList(req *model.ScheduleSearchReq) (total int, sche
 		Model = Model.Where("plat_schedule.sch_date >= ? AND plat_schedule.sch_date <= ? ", begin, end)
 		where += fmt.Sprintf(" AND plat_schedule.sch_date >= %v AND plat_schedule.sch_date <= %v", begin, end)
 	}
+	if req.BeginTime != "" && req.EndTime != "" {
+		begin := strings.Split(req.BeginTime, " ")[0] + " 00:00:00"
+		end := strings.Split(req.EndTime, " ")[0] + " 23:59:59"
+		Model = Model.Where("plat_schedule.sch_date >= ? AND plat_schedule.sch_date <= ? ", begin, end)
+		where += fmt.Sprintf(" AND plat_schedule.sch_date >= %v AND plat_schedule.sch_date <= %v", begin, end)
+	}
 	total, err = Model.Count()
 	if err != nil {
 		err = myerrors.DbError("获取总行数失败")
@@ -169,6 +176,18 @@ func (s *scheduleService) SaveByDingEvent(msg *message.MixMessage) (err error) {
 		_, err = s.Dao.Delete("ding_schedule_id", msg.CalendarEventId)
 		return err
 	} else {
+		// 校验是否是由本地系统发起的日程,由系统发起的日程,数据不需要回填
+		if msg.ChangeType == "created" {
+			count, err := s.Dao.Where(fmt.Sprintf("ding_schedule_id='%v'", msg.CalendarEventId)).Count()
+			if err != nil {
+				return err
+			}
+			// 类型为新建且本地数据已存在,则为系统发起的日程,数据不需要回填
+			if count > 0 {
+				glog.Info(fmt.Sprintf("钉钉日程Id %v 为系统发起的日程,数据不需要回填", msg.CalendarEventId))
+				return nil
+			}
+		}
 		// 构造请求参数
 		var param calendar.DingGetScheduleParams
 		param.EventId = msg.CalendarEventId