Commit 528d8d20 authored by 任国军's avatar 任国军

add actImage

parent 4fc4087b
Pipeline #26859 passed with stage
in 10 seconds
......@@ -144,6 +144,14 @@ class OptionController extends Controller {
const ret = await service.course.v5.option.getSetting(queryParams);
ctx.success(ret);
}
// 获取礼品列表
async getActImageList() {
const { ctx, service } = this;
const ret = await service.course.v5.option.getActImageList();
ctx.success(ret);
}
}
module.exports = OptionController;
......@@ -141,6 +141,29 @@ class UserController extends Controller {
const ret = await service.course.v5.user.loginByApp();
ctx.success(ret);
}
// 获取用户的礼品列表
async getUserActImageList() {
const { ctx, service } = this;
const ret = await service.course.v5.user.getUserActImageList();
ctx.success(ret);
}
// 更新用户的礼品列表
async addUserActImages() {
const { ctx, service } = this;
const params = ctx.request.body;
if (ctx.isEmpty(params) || ctx.isEmpty(params.ids)) {
ctx.failed('ids is failed');
}
const ret = await service.course.v5.user.addUserActImages(params);
ctx.success(ret);
}
}
module.exports = UserController;
'use strict';
const moment = require('moment');
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseActImage = app.classModel.define('course_act_image', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
},
title: STRING,
selected_image: STRING,
unselected_image: STRING,
sort: INTEGER,
status: INTEGER,
is_deleted: INTEGER,
created_time: {
type: DATE,
allowNull: true,
get() {
const date = this.getDataValue('created_time');
return date ? moment(date).format('YYYY-MM-DD HH:mm:ss') : undefined;
},
},
updated_time: {
type: DATE,
allowNull: true,
get() {
const date = this.getDataValue('updated_time');
return date ? moment(date).format('YYYY-MM-DD HH:mm:ss') : undefined;
},
},
}, {
timestamps: false,
tableName: 'course_act_image',
});
return CourseActImage;
};
'use strict';
const moment = require('moment');
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const CourseUserActImage = app.classModel.define('course_user_act_image', {
id: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
},
user_uuid: STRING,
image_id: INTEGER,
status: INTEGER,
is_deleted: INTEGER,
created_time: {
type: DATE,
allowNull: true,
get() {
const date = this.getDataValue('created_time');
return date ? moment(date).format('YYYY-MM-DD HH:mm:ss') : undefined;
},
},
updated_time: {
type: DATE,
allowNull: true,
get() {
const date = this.getDataValue('updated_time');
return date ? moment(date).format('YYYY-MM-DD HH:mm:ss') : undefined;
},
},
}, {
timestamps: false,
tableName: 'course_user_act_image',
});
return CourseUserActImage;
};
......@@ -17,6 +17,8 @@ module.exports = app => {
router.get('third', '/user/address', auth({ is_force: 1 }), 'course.v5.user.getUserAddress');// 获取用户收货地址
router.get('third', '/user/order/all', auth({ is_force: 1 }), 'course.v5.user.getUserOrderList');// 获取订单列表
router.post('third', '/user/redeem/class', auth({ is_force: 1 }), 'course.v5.user.redeemClass');// 兑换课程
router.post('third', '/user/act/image', auth({is_force: 1}), 'course.v5.user.addUserActImages');// 更新用户礼品列表
router.get('third', '/user/act/image/all', auth({is_force: 1}), 'course.v5.user.getUserActImageList');// 获取用户礼品列表
router.get('third', '/category/all', auth({ is_force: 0 }), 'course.v5.option.getCategoryList');// 获取分类列表
router.get('third', '/banner/all', 'course.v5.option.getBannerList');// 获取banner列表
......@@ -63,4 +65,6 @@ module.exports = app => {
router.get('third', '/home/class/all', auth({ is_force: 0 }), 'course.v5.institution.getHomeClassList');// 获取课程首页
router.post('third', '/order/class/:class_id', auth({ is_force: 1 }), 'course.v5.user.buyClass');// 购买课程
router.get('third', '/act/image/all', auth({is_force: 1}), 'course.v5.option.getActImageList');// 获取礼品列表
};
......@@ -374,6 +374,19 @@ class OptionService extends Service {
const result = ctx.isEmpty(setting) ? '' : setting.value;
return { result };
}
// 获取礼品页
async getActImageList() {
const {ctx} = this;
const giftList = await ctx.classModel.CourseActImage.findAll({where: {status: 1, is_deleted: 0}, attributes:['id', 'selected_image', 'unselected_image']});
const ret = {
list: giftList,
}
return ret;
}
}
module.exports = OptionService;
......@@ -597,6 +597,36 @@ class UserService extends Service {
return ret;
}
// 获取用户的礼品列表
async getUserActImageList() {
const {ctx} = this;
const userImageList = await ctx.classModel.CourseUserActImage.findAll({where: {user_uuid: ctx.userUuid, status: 1, is_deleted: 0}});
const imageList = await ctx.classModel.CourseActImage.findAll({where: {id: {$in: R.pluck('image_id', userImageList)}}, attributes: ['id', 'selected_image', 'unselected_image']});
const ret = {
list: imageList,
}
return ret;
}
// 更新用户的礼品列表
async addUserActImages(input) {
const {ctx} = this;
let ids = input.ids || '';
if (ctx.isEmpty(ids)) {
ctx.failed('ids is empty');
}
ids = ids.split(',');
for (const id of ids) {
await ctx.classModel.CourseUserActImage.findOrCreate({ where: {user_uuid: ctx.userUuid, image_id: id, is_deleted: 0 }, defaults: { user_uuid: ctx.userUuid, image_id: id } });
}
return {result: true};
}
}
module.exports = UserService;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment