作者 yangfu

fix

... ... @@ -14,6 +14,8 @@ RUN go mod download
COPY . .
RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -installsuffix cgo -o opp main.go
#EXPOSE 8080
#CMD ["./opp"]
FROM alpine:latest
... ... @@ -21,7 +23,7 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk add --no-cache tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& rm -rf /var/cache/apk/* /tmp/* /var/tmp/* $HOME/.cache ## 清除缓存
# && rm -rf /var/cache/apk/* /tmp/* /var/tmp/* $HOME/.cache ## 清除缓存
WORKDIR /root/
COPY --from=builder /go/src/opp .
EXPOSE 8080
... ...
... ... @@ -12,8 +12,8 @@ aliyun_logs_access ="${aliyun_logs_access||app.log}"
#redis相关配置
redis_add = "${REDIS_HOST||192.168.0.247}"
redis_add_port = "${REDIS_PORT||30379}"
redis_add = "${REDIS_HOST||127.0.0.1}"
redis_add_port = "${REDIS_PORT||6379}"
redis_auth = ""
#sms相关配置
... ...
... ... @@ -72,7 +72,7 @@ func (this *ChanceController) Comments() {
return
}
header := controllers.GetRequestHeader(this.Ctx)
request.SourceType = protocol.SourceType_Chance
request.SourceType = protocol.SourceTypeChance
msg = protocol.NewReturnResponse(chance.Comments(header, request))
}
... ... @@ -156,7 +156,7 @@ func (this *ChanceController) SympathyAction() {
msg = m
return
}
if !(request.SourceType == protocol.SourceType_Chance || request.SourceType == protocol.SourceType_Comment) {
if !(request.SourceType == protocol.SourceTypeChance || request.SourceType == protocol.SourceTypeComment) {
msg = protocol.BadRequestParam(2)
return
}
... ... @@ -224,7 +224,7 @@ func (this *ChanceController) ChanceSubmit() {
return
}
header := controllers.GetRequestHeader(this.Ctx)
if request.Id>0{
if request.Id > 0 {
msg = protocol.NewReturnResponse(chance.ChanceUpdate(header, request))
return
}
... ...
... ... @@ -2,7 +2,7 @@
export PATH=/root/local/bin:$PATH
kubectl -n mmm-suplus-dev get pods | grep -q opp
if [ "$?" == "1" ];then
kubectl create -f /tmp/dev/opp/opp.yaml --record
kubectl create -f /tmp/dev/mmm-go-opp/opp.yaml --record
kubectl -n mmm-suplus-dev get svc | grep -q opp
if [ "$?" == "0" ];then
echo "opp service install success!"
... ... @@ -16,7 +16,7 @@ if [ "$?" == "1" ];then
echo "opp deployment install fail!"
fi
else
kubectl delete -f /tmp/dev/opp/opp.yaml
kubectl delete -f /tmp/dev/mmm-go-opp/opp.yaml
kubectl -n mmm-suplus-dev get svc | grep -q opp
while [ "$?" == "0" ]
do
... ... @@ -27,7 +27,7 @@ else
do
kubectl -n mmm-suplus-dev get pods | grep -q opp
done
kubectl create -f /tmp/dev/opp/opp.yaml --record
kubectl create -f /tmp/dev/mmm-go-opp/opp.yaml --record
kubectl -n mmm-suplus-dev get svc | grep -q opp
if [ "$?" == "0" ];then
echo "opp service update success!"
... ...
... ... @@ -7,9 +7,9 @@ metadata:
k8s-app: opp
spec:
ports:
- name: "http"
port: 80
targetPort: 8080
- name: "http"
port: 80
targetPort: 8080
selector:
k8s-app: opp
---
... ... @@ -43,67 +43,60 @@ spec:
- cn-hangzhou.i-bp1euf5u1ph9kbhtndhb
- cn-hangzhou.i-bp1hyp5oips9cdwxxgxy
containers:
- name: opp
image: 192.168.0.243:5000/mmm/opp:dev
imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /opt/logs
name: accesslogs
- mountPath: /var/www/opp/file
name: mmmjihuitest-pvc
env:
- name: ENTERPRISE_SERVICE_HOST
valueFrom:
configMapKeyRef:
name: suplus-config
key: service.enterprise
- name: MYSQL_HOST
valueFrom:
configMapKeyRef:
name: suplus-config
key: mysql.host
- name: MYSQL_PORT
valueFrom:
configMapKeyRef:
name: suplus-config
key: mysql.port
- name: MYSQL_USER
valueFrom:
configMapKeyRef:
name: suplus-config
key: mysql.user
- name: MYSQL_PASSWORD
valueFrom:
configMapKeyRef:
name: suplus-config
key: mysql.password
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: suplus-config
key: redis.ip
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: suplus-config
key: redis.port
- name: MYSQL_DB_NAME
value: "opportunity_dev"
- name: LOG_LEVEL
value: "debug"
- name: RUN_MODE
value: "test"
- name: aliyun_logs_suplus
value: "stdout"
- name: aliyun_logs_access
value: "/opt/logs/opp_app.log"
- name: aliyun_file_access
value: "/var/www/opp/file"
- name: opp
image: 192.168.0.243:5000/mmm/opp:dev
imagePullPolicy: Always
volumeMounts:
- mountPath: /opt/logs
name: accesslogs
- mountPath: /var/www/opp/file
name: mmmjihuitest-pvc1
ports:
- containerPort: 8080
env:
- name: MYSQL_HOST
valueFrom:
configMapKeyRef:
name: suplus-config
key: mysql.host
- name: MYSQL_PORT
valueFrom:
configMapKeyRef:
name: suplus-config
key: mysql.port
- name: REDIS_HOST
valueFrom:
configMapKeyRef:
name: suplus-config
key: redis.ip
- name: REDIS_PORT
valueFrom:
configMapKeyRef:
name: suplus-config
key: redis.port
- name: MYSQL_USER
valueFrom:
configMapKeyRef:
name: suplus-config
key: mysql.user
- name: MYSQL_PASSWORD
valueFrom:
configMapKeyRef:
name: suplus-config
key: mysql.password
- name: MYSQL_DB_NAME
value: "opportunity_dev"
- name: RUN_MODE
value: "test"
- name: LOG_LEVEL
value: "debug"
- name: aliyun_logs_suplusfile
value: "stdout"
- name: aliyun_logs_access
value: " /opt/logs/app.log"
volumes:
- name: accesslogs
emptyDir: {}
- name: suplusupload-pvc1
- name: accesslogs
emptyDir: {}
- name: mmmjihuitest-pvc1
persistentVolumeClaim:
claimName: suplusupload-pvc
\ No newline at end of file
claimName: mmmjihuitest-pvc
\ No newline at end of file
... ...
... ... @@ -12,7 +12,7 @@ import (
"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/websocket"
"opp/internal/utils"
_ "opp/routers"
"opp/services/im"
"os"
"time"
)
... ... @@ -30,6 +30,7 @@ func init() {
//})
redisSource := fmt.Sprintf("%v:%v", beego.AppConfig.String("redis_add"), beego.AppConfig.String("redis_add_port"))
err := redis.InitWithDb(100, redisSource, beego.AppConfig.String("redis_auth"), "0")
log.Info(fmt.Sprintf("init redis:%v", redisSource))
if err != nil {
log.Fatal("connect to redis error address:", beego.AppConfig.String("redis_add_port"), beego.AppConfig.String("redis_auth"), err)
//panic(err)
... ... @@ -41,6 +42,7 @@ func init() {
beego.AppConfig.String("mysql_port"),
beego.AppConfig.String("mysql_db_name"),
)
log.Info(fmt.Sprintf("init mysql:%v", dataSource))
orm.NewBeeormEngine(config.Mysql{
//AliasName: "default",
DataSource: dataSource,
... ... @@ -55,8 +57,19 @@ func init() {
//Password:"ibfduqhfmgypbffe", //授权码
//IsUseSsl:true,
})
im.InitImClient(beego.AppConfig.String("net_im_base_url"), beego.AppConfig.String("net_im_app_key"), beego.AppConfig.String("net_im_app_secret"))
//im.InitImClient(beego.AppConfig.String("net_im_base_url"), beego.AppConfig.String("net_im_app_key"), beego.AppConfig.String("net_im_app_secret"))
websocket.InitWebsocketConnmgrs(10)
log.Info(fmt.Sprintf("env MYSQL_USER:%v", os.Getenv("MYSQL_USER")))
log.Info(fmt.Sprintf("env MYSQL_PASSWORD:%v", os.Getenv("MYSQL_PASSWORD")))
log.Info(fmt.Sprintf("env MYSQL_HOST:%v", os.Getenv("MYSQL_HOST")))
log.Info(fmt.Sprintf("env MYSQL_PORT:%v", os.Getenv("MYSQL_PORT")))
log.Info(fmt.Sprintf("env MYSQL_DB_NAME:%v", os.Getenv("MYSQL_DB_NAME")))
log.Info(fmt.Sprintf("env LOG_LEVEL:%v", os.Getenv("LOG_LEVEL")))
log.Info(fmt.Sprintf("env aliyun_logs_access:%v", os.Getenv("aliyun_logs_access")))
log.Info(fmt.Sprintf("env REDIS_HOST:%v", os.Getenv("REDIS_HOST")))
log.Info(fmt.Sprintf("env REDIS_PORT:%v", os.Getenv("REDIS_PORT")))
log.Info(fmt.Sprintf("env aliyun_file_access:%v", os.Getenv("aliyun_file_access")))
}
func main() {
... ...
package protocol
const (
SourceType_Chance = 1
SourceType_Comment = 2
SourceTypeChance = 1
SourceTypeComment = 2
SourceTypeBulletin = 3
)
/*IComment */
... ...
... ... @@ -3,8 +3,10 @@ package routers
import (
"github.com/astaxie/beego"
"github.com/prometheus/client_golang/prometheus/promhttp"
"net/http"
"opp/controllers"
"opp/controllers/v1"
"opp/services/websocket"
)
var nsV1 *beego.Namespace
... ... @@ -23,6 +25,7 @@ func init() {
)
beego.AddNamespace(nsV1)
beego.SetStaticPath("/file/opp", beego.AppConfig.String("source_path"))
beego.SetStaticPath("/log/opp", beego.AppConfig.String("aliyun_logs_access"))
beego.Handler("/metrics", promhttp.Handler())
//beego.Handler("/upgrage", http.HandlerFunc(websocket.Upgrage))
beego.Handler("/upgrage", http.HandlerFunc(websocket.Upgrage))
}
... ...
... ... @@ -40,7 +40,7 @@ func Favorite(header *protocol.RequestHeader, request *protocol.FavoriteRequest)
Id: f.Id,
}
switch f.SourceType {
case protocol.SourceType_Chance:
case protocol.SourceTypeChance:
chance, err = agg.GetChance(f.SourceId, f.CompanyId)
if err != nil {
log.Error(err)
... ... @@ -49,7 +49,7 @@ func Favorite(header *protocol.RequestHeader, request *protocol.FavoriteRequest)
chance.IsZan = (f.MarkFlag & protocol.MarkFlag_Zan) == protocol.MarkFlag_Zan
chance.IsCollect = (f.MarkFlag & protocol.MarkFlag_Collect) == protocol.MarkFlag_Collect
item.Favorite = chance
case protocol.SourceType_Comment:
case protocol.SourceTypeComment:
}
rsp.Lists[i] = item
}
... ... @@ -71,7 +71,7 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc
log.Error(err)
return
}
if request.SourceType == protocol.SourceType_Chance {
if request.SourceType == protocol.SourceTypeChance {
if chance, err = repository.Chance.GetChanceById(request.Id); err != nil {
log.Error("机会不存在", err)
return
... ... @@ -258,14 +258,14 @@ func ChanceSubmit(header *protocol.RequestHeader, request *protocol.ChanceSubmit
}
//6.文件
{
data :=&models.ChanceData{
Id:idgen.Next(),
ChanceId:chance.Id,
Speechs:common.AssertJson(request.Speechs),
Images:common.AssertJson(request.Pictures),
Videos:common.AssertJson(request.Videos),
CreateAt:time.Now(),
UpdateAt:time.Now(),
data := &models.ChanceData{
Id: idgen.Next(),
ChanceId: chance.Id,
Speechs: common.AssertJson(request.Speechs),
Images: common.AssertJson(request.Pictures),
Videos: common.AssertJson(request.Videos),
CreateAt: time.Now(),
UpdateAt: time.Now(),
}
if _, err = orm.Insert(data); err != nil {
log.Error(err)
... ... @@ -288,16 +288,16 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceSubmit
auditConfig *protocol.AuditConfig
chanceData *models.ChanceData
//auditFlows []*models.AuditFlowProcess
updateMap =make(map[string]interface{})
updateMap = make(map[string]interface{})
)
if chance,err =models.GetChanceById(request.Id);err!=nil{
if chance, err = models.GetChanceById(request.Id); err != nil {
log.Error(err)
return
}
//TODO:非本人 1.需要验证角色权限,是否是审核人
if chance.UserId!=header.Uid{
if chance.UserId != header.Uid {
err = protocol.NewErrWithMessage(1)
log.Error(fmt.Sprintf("user:%v 无权限操作机会 chance:%v",header.Uid,chance.Id))
log.Error(fmt.Sprintf("user:%v 无权限操作机会 chance:%v", header.Uid, chance.Id))
return
}
//TODO:验证机会当前是否在审核中
... ... @@ -315,14 +315,13 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceSubmit
updateMap["SourceContent"] = common.AssertJson(request.FormList)
updateMap["DepartmentId"] = request.RelatedDepartment
if err = utils.UpdateTableByMapWithOrmer(orm,&models.Chance{Id:chance.Id},updateMap); err != nil {
if err = utils.UpdateTableByMapWithOrmer(orm, &models.Chance{Id: chance.Id}, updateMap); err != nil {
log.Error(err)
orm.Rollback()
return
}
}
//4.查询审核配置
//5.生成审核流 删除旧的 生成新的
//if auditFlows, err = GenAuditFlowProcess(header, chance.Id, template.Id, auditConfig); err != nil {
... ... @@ -340,26 +339,26 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceSubmit
//6.更新文件
{
if chanceData,err = models.GetChanceDataByChanceId(chance.Id);err==nil{
if err = utils.UpdateTableByMapWithOrmer(orm,chanceData,map[string]interface{}{
"Speechs":common.AssertJson(request.Speechs),
"Images":common.AssertJson(request.Pictures),
"Videos":common.AssertJson(request.Videos),
"UpdateAt":time.Now(),
});err!=nil{
if chanceData, err = models.GetChanceDataByChanceId(chance.Id); err == nil {
if err = utils.UpdateTableByMapWithOrmer(orm, chanceData, map[string]interface{}{
"Speechs": common.AssertJson(request.Speechs),
"Images": common.AssertJson(request.Pictures),
"Videos": common.AssertJson(request.Videos),
"UpdateAt": time.Now(),
}); err != nil {
log.Error(err)
orm.Rollback()
return
}
}else{
data :=&models.ChanceData{
Id:idgen.Next(),
ChanceId:chance.Id,
Speechs:common.AssertJson(request.Speechs),
Images:common.AssertJson(request.Pictures),
Videos:common.AssertJson(request.Videos),
CreateAt:time.Now(),
UpdateAt:time.Now(),
} else {
data := &models.ChanceData{
Id: idgen.Next(),
ChanceId: chance.Id,
Speechs: common.AssertJson(request.Speechs),
Images: common.AssertJson(request.Pictures),
Videos: common.AssertJson(request.Videos),
CreateAt: time.Now(),
UpdateAt: time.Now(),
}
if _, err = orm.Insert(data); err != nil {
log.Error(err)
... ...
... ... @@ -22,14 +22,14 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest)
updateMap = make(map[string]interface{})
)
switch request.SourceType {
case protocol.SourceType_Chance:
case protocol.SourceTypeChance:
if chance, err = repository.Chance.GetChanceById(request.Id); err != nil {
log.Error(err)
return
}
updateTable = chance
updateMap["CommentTotal"] = chance.CommentTotal + 1
case protocol.SourceType_Comment:
case protocol.SourceTypeComment:
if comment, err = repository.Comment.GetCommentById(request.Id); err != nil {
log.Error(err)
return
... ... @@ -74,7 +74,7 @@ func IComments(header *protocol.RequestHeader, request *protocol.ICommentsReques
baseUserInfo *protocol.BaseUserInfo
total int
)
if comments, total, err = repository.Comment.GetComments(header.UserId, protocol.SourceType_Chance, 0, request.LastId, request.PageSize); err != nil {
if comments, total, err = repository.Comment.GetComments(header.UserId, protocol.SourceTypeChance, 0, request.LastId, request.PageSize); err != nil {
log.Error(err)
return
}
... ... @@ -187,7 +187,7 @@ func CommentDetailsMulti(header *protocol.RequestHeader, request *protocol.Comme
}
rsp.Comment = commentDetailSingle.Comment
}
if commentDetailMulti, err = Comments(header, &protocol.CommentsRequest{LastId: request.LastId, SourceId: request.SourceId, PageSize: request.PageSize, SourceType: protocol.SourceType_Comment}); err != nil {
if commentDetailMulti, err = Comments(header, &protocol.CommentsRequest{LastId: request.LastId, SourceId: request.SourceId, PageSize: request.PageSize, SourceType: protocol.SourceTypeComment}); err != nil {
log.Error(err)
return
}
... ...
... ... @@ -60,8 +60,8 @@ func MsgInteractive(header *protocol.RequestHeader, request *protocol.MsgInterac
SourceType: msg.SourceType,
}
switch msg.SourceType {
case protocol.SourceType_Chance:
case protocol.SourceType_Comment:
case protocol.SourceTypeChance:
case protocol.SourceTypeComment:
}
rsp.Lists[i] = userMsg
}
... ...