说在前面:php
本记录仅仅是做为一个小小的开发记录,表设计及开发上并不尽善尽美。若是有更好的方式,但愿各位前辈也可以多多指正与讨论。
我会尽量的天天更新开发进度
复制代码
使用架构前端
后端:Yii2vue
部分设置:web
新建/app/services 文件夹,services是业务类,控制器不进行任何操做,中转到业务类中对应操做.
复制代码
后台:element+vue小程序
前端:小程序后端
服务器:LNMPapi
项目记录bash
接口必传数值服务器
@cauth_iden 该值属于不变的惟一标识符,存在于管理后台与小程序中。
传任何参数必带此参数。
@token 小程序登陆后,返回token做为检验状态,存在于小程序中,请求任何接口必传。
复制代码
积分管理架构
因为鼓励学生每日签到,提升使用频率,所以设计中包含了 签到奖励、邀请好友(老带新)注册
成功双方得到积分。
复制代码
积分获取途径
1.在线付费课程 获取积分
2.邀请好友登陆 获取积分
3.每日签到 获取积分
复制代码
积分消耗
1.积分兑换(实物兑换消耗积分)
复制代码
表设计
score_set表 积分设置表
字段 | 类型 | 描述 |
---|---|---|
id | int | |
cauth_iden | varchar | 惟一标识符 |
in_score | int | 积分x100入表 |
in_price | int | 金额x100入表 |
out_score | int | 积分x100入表 |
out_price | int | 金额x100入表 |
sign_in_score | int | 签到积分 |
invite_score | int | 邀请得到积分 |
invite_image | int | 邀请主题图片 |
uid | int | 用户id |
dates | int | 安装时间 |
status | tinyint | 状态 默认为1 |
score_logs 积分使用表
字段 | 类型 | 描述 |
---|---|---|
id | int | |
cauth_iden | varchar | 惟一标识符 |
uid | int | 用户id |
score | int | 0为支出 1为得到 |
types | varchar | 类型 如 签到 邀请 购买 |
dates | int | 安装时间 |
status | tinyint | 状态 默认为1 |
user_score 用户积分记录
字段 | 类型 | 描述 |
---|---|---|
id | int | |
cauth_iden | varchar | 惟一标识符 |
total_score | int | 积分x100入表 总积分 |
uid | int | 用户id |
dates | int | 安装时间 |
status | tinyint | 状态 默认为1 |
后台积分设置
参数说明: uid 用户id token 惟一验证 inScore 得到积分 inPrice 积分金钱比 outPrice 支出金钱比 outScore 支出积分比 signInscore 签到积分 inviteScore 邀请得到积分 cauth_iden 惟一标识
URL:/addons/score/score/scoreset
主要参数
handle: create edit disable delete
handle:create{
uid,token,inPrice,inScore,outPrice,outScore,signInScore,inviteScore,cauth_iden
}
handle:edit
{
id,uid,token,inPrice,inScore,outPrice,outScore,signInScore,inviteScore,cauth_iden
}
handle:disable
{token,id}
handle:delete
{token,id}
成功返回 true
错误返回 message status
复制代码
相关代码 ScoreController
<?php
namespace app\controllers\addons\score;
use app\services\Utils;
use SebastianBergmann\CodeCoverage\Util;
use Yii;
use yii\web\Controller;
use yii\web\Response;
use app\services\Authory;
use app\services\score\Score;
use app\services\General;
class ScoreController extends Controller
{
function actionScoreset()
{
/*
* 积分设置
* */
$request = Yii::$app->request;
$token = $request->post('token');
$handle = $request->post('handle');
$uid = $request->post('uid');
$auth = new Authory($token);
$auth->loggingVerify();
$cauth_iden = $request->post('cauth_iden');
$inPrice = $request->post('inPrice');
$inScore = $request->post('inScore');
$outPrice = $request->post('outPrice');
$outScore = $request->post('outScore');
$inviteScore = $request->post('inviteScore');
$inviteImage = $request->post('inviteImage');
$signInScore = $request->post('signInScore');
$id = $request->post('id');
try{
$inPrice = $inPrice*100;
$inScore = $inScore*100;
$outPrice = $outPrice*100;
$outScore = $outScore*100;
//积分设置
$service = new Score();
$general = new General();
$result = '';
switch ($handle)
{
case 'create':
$result = $service->CreateScoreSet($inScore,$inPrice,$outScore,$outPrice,$uid,$signInScore,$inviteScore,$inviteImage,$cauth_iden);
break;
case 'edit':
$result = $service->EditScoreSet($id,$inScore,$inPrice,$outScore,$outPrice,$uid,$signInScore,$inviteScore,$inviteImage,$cauth_iden);
break;
case 'disable':
$result = $general->disable('score\ScoreSet',$id);
break;
case 'delete':
$result = $general->delete('score\ScoreSet',$id);
break;
default:
$result = ['message'=>'出错了','status'=>41007];
break;
}
Utils::apiDisplay($result);
}catch(\Exception $e)
{
$result = ['message'=>$e->getMessage(),'status'=>$e->getCode()];
Utils::apiDisplay($result);
}
}
}
复制代码
Score.php 业务类,在/services业务文件夹中
<?php
namespace app\services\score;
use app\models\admin\AdminUser;
use app\models\AuthRules;
use app\models\score\ScoreLogs;//积分明细表
use app\models\score\ScoreSet;//积分设置表
use app\models\Users;
use app\models\Cauth;
// use Phalcon\Crypt; //加密类
Class Score{
function CreateScoreSet($inScore,$inPrice,$outScore,$outPrice,$uid,$signInScore,$inviteScore,$inviteImage,$cauth_iden)
{
/*
* 建立积分规则
*写入
* */
$model = new ScoreSet();
$model->uid = $uid;
$model->cauth_iden = $cauth_iden;
$model->in_score = $inScore;
$model->in_price = $inPrice;
$model->out_score = $outScore;
$model->sign_in_score = $signInScore;
$model->invite_score = $inviteScore;
$model->out_price = $outPrice;
$model->invite_image = $inviteImage;
$model->dates = time();
if($model->insert() == false)
throw new \Exception('建立积分规则失败',20010);
return true;
}
function EditScoreSet($id,$inScore,$inPrice,$outScore,$outPrice,$uid,$signInScore,$inviteScore,$inviteImage,$cauth_iden)
{
/*
* 编辑积分
* */
$result = ScoreSet::findOne($id);
if(!$result)
throw new \Exception('不存在该设置',20011);
$result->uid = $uid;
$result->cauth_iden = $cauth_iden;
$result->in_score = $inScore;
$result->in_price = $inPrice;
$result->out_score = $outScore;
$result->out_price = $outPrice;
$result->sign_in_score = $signInScore;
$result->invite_score = $inviteScore;
$model->invite_image = $inviteImage;
$result->dates = time();
if($result->save() == false)
throw new \Exception('编辑积分设置失败',20012);
return true;
}
function createInvite($uid)
{
/*
* 获取建立邀请人信息
* 拉取邀请图片
* */
}
}
复制代码