說在前面: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)
{
/*
* 獲取建立邀請人信息
* 拉取邀請圖片
* */
}
}
複製代碼