Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yoho-activity-platform
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
yyq
7 years ago
Commit
d55297f5ee50f3efd8371629509e7219f96e2cfe
1 parent
186e0ae0
master
...
feature/add-verify
feature/change-admin-static-url
feature/del-privateIps
feature/new-pro-fes
feature/only-for-test
feature/pressure-test
feature/share-link
feature/timezone
feature/yoluck
hotfix/export
hotfix/fix-appSecret
hotfix/republish
release/0823
release/6.7.9
release/6.8.3
release/6.9.5
release/9.14
release/yohood-lottrey
release0906
zero-buy-two
tag1.0
send message
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
95 additions
and
4 deletions
apps/activity/models/zero-buy.js
apps/admin/controllers/activity.js
apps/admin/models/activity.js
apps/activity/models/zero-buy.js
View file @
d55297f
...
...
@@ -4,6 +4,7 @@
* @date: 19/07/2018
*/
const
_
=
require
(
'lodash'
);
const
moment
=
require
(
'moment'
);
const
mysqlCli
=
global
.
yoho
.
utils
.
mysqlCli
;
const
MemoryCache
=
require
(
'../../../utils/memory-cache'
);
...
...
@@ -20,6 +21,14 @@ const PAGE_SIZE = 10;
const
userTimesCache
=
new
MemoryCache
();
const
timeFormat
=
(
time
)
=>
{
if
(
_
.
isNumber
(
time
))
{
time
=
moment
.
unix
(
time
);
}
return
moment
(
time
).
format
(
'YYYY-MM-DD HH:mm:ss'
);
};
function
handelResult
(
result
)
{
return
{
code
:
200
,
...
...
@@ -278,7 +287,9 @@ module.exports = class extends global.yoho.BaseModel {
message
:
'活动已结束或已达人数上限'
};
let
status
=
getActivityStatus
(
_
.
get
(
info
,
'[0][0]'
),
_
.
get
(
info
,
'[1].join_num'
,
0
));
let
productInfo
=
_
.
get
(
info
,
'[0][0]'
);
let
status
=
getActivityStatus
(
productInfo
,
_
.
get
(
info
,
'[1].join_num'
,
0
));
if
(
!
status
||
status
>=
3
)
{
return
errorData
;
...
...
@@ -292,7 +303,12 @@ module.exports = class extends global.yoho.BaseModel {
this
.
sendPrizeCode
(
extra
.
shareUid
,
actPrizeId
,
{
isShareTake
:
true
});
}
return
this
.
sendPrizeCode
(
uid
,
actPrizeId
,
Object
.
assign
(
extra
,
{
isShareTake
:
false
}));
return
this
.
sendPrizeCode
(
uid
,
actPrizeId
,
Object
.
assign
(
extra
,
{
isShareTake
:
false
,
actName
:
productInfo
.
name
,
actStartTime
:
productInfo
.
start_time
,
actEndTime
:
productInfo
.
end_time
}));
}
/**
...
...
@@ -409,6 +425,10 @@ module.exports = class extends global.yoho.BaseModel {
}
if
(
_
.
isNumber
(
insert
))
{
if
(
userJoinTimes
<
1
&&
extra
.
actName
)
{
this
.
sendWechatMessage
(
uid
,
actPrizeId
,
extra
);
}
return
{
code
:
200
,
data
:
{
prizeCode
},
...
...
@@ -418,4 +438,26 @@ module.exports = class extends global.yoho.BaseModel {
return
errorData
;
}
}
/**
* 向用户发送获得抽奖码消息
* @param uid
* @param actPrizeId
* @param extra
* @returns {*}
*/
sendWechatMessage
(
uid
,
actPrizeId
,
extra
=
{})
{
return
this
.
post
({
url
:
'/yoho-message-controller/MessageRest/sendMessage'
,
data
:
{
sendScene
:
'MINI_ACTIVITY_JOIN'
,
params
:
JSON
.
stringify
({
activityTitle
:
extra
.
actName
,
activityTime
:
`
$
{
timeFormat
(
extra
.
actStartTime
)}
-
$
{
timeFormat
(
extra
.
actEndTime
)}
`
,
pageUrl
:
'/page/subPackage/pages/zeroSell/detail?actPrizeId='
+
actPrizeId
}),
uidList
:
[
uid
]
}
});
}
};
...
...
apps/admin/controllers/activity.js
View file @
d55297f
...
...
@@ -37,8 +37,16 @@ const zeroBuy = {
.
then
(
res
.
json
).
catch
(
next
);
},
zeroBuyPublish
(
req
,
res
,
next
)
{
req
.
ctx
(
ActivityModel
).
editZerobuyStatus
(
req
.
body
.
id
,
2
)
.
then
(
res
.
json
).
catch
(
next
);
let
ctx
=
req
.
ctx
(
ActivityModel
);
let
id
=
req
.
body
.
id
;
ctx
.
editZerobuyStatus
(
id
,
2
).
then
(
result
=>
{
if
(
result
.
code
===
200
)
{
ctx
.
sendWechatMessage
(
id
);
}
res
.
json
(
result
);
}).
catch
(
next
);
},
zeroBuyExport
(
req
,
res
,
next
)
{
let
id
=
req
.
query
.
id
;
...
...
apps/admin/models/activity.js
View file @
d55297f
...
...
@@ -716,6 +716,47 @@ class AdminModel extends global.yoho.BaseModel {
};
});
}
/**
* 向参加活动用户发送开奖消息
* @param uid
* @param actPrizeId
* @param extra
* @returns {*}
*/
async
sendWechatMessage
(
id
)
{
let
info
=
await
Promise
.
all
([
mysqlCli
.
query
(
`
select
name
from
$
{
TABLE_ACT_PRIZE_PRODUCT
}
where
id
=
:
id
limit
1
`
,
{
id
}),
mysqlCli
.
query
(
`
select
union_id
from
$
{
TABLE_ACT_PRIZE_PRODUCT_USER
}
where
act_prize_id
=
:
id
`
,
{
id
})
]);
let
productInfo
=
_
.
get
(
info
,
'[0][0]'
);
let
userList
=
[];
_
.
forEach
(
_
.
get
(
info
,
'[1]'
,
[]),
value
=>
{
userList
.
push
(
value
.
union_id
);
});
if
(
!
userList
.
length
)
{
return
Promise
.
resolve
();
}
return
this
.
post
({
url
:
'/yoho-message-controller/MessageRest/sendMessage'
,
data
:
{
sendScene
:
'MINI_WINNING_NOTICE'
,
params
:
JSON
.
stringify
({
activityTitle
:
productInfo
.
name
,
activityTime
:
moment
().
format
(
'YYYY-MM-DD HH:mm'
)
+
':00'
,
pageUrl
:
'/page/subPackage/pages/zeroSell/detail?actPrizeId='
+
id
}),
uidList
:
_
.
uniq
(
userList
)
}
});
}
}
module
.
exports
=
AdminModel
;
...
...
Please
register
or
login
to post a comment