舞蹈培訓小程序 開發記錄·積分設置(一)

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

    }

複製代碼
相關文章
相關標籤/搜索