舞蹈培训小程序 开发记录·积分设置(一)

说在前面: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)
      {
          /*
           * 获取建立邀请人信息
           * 拉取邀请图片
           * */
      }

    }

复制代码
相关文章
相关标签/搜索