123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- namespace app\common\model\lottery;
- use think\Model;
- use app\common\Enum\LotteryEnum;
- /**
- * 抽奖记录模型
- */
- class LotteryDrawRecord extends Model
- {
- // 表名
- protected $table = 'shop_lottery_draw_record';
-
- // 开启自动写入时间戳字段
- protected $autoWriteTimestamp = 'int';
- // 定义时间戳字段名
- protected $createTime = 'createtime';
- protected $updateTime = false;
- protected $deleteTime = false;
- // 追加属性
- protected $append = [
- 'trigger_type_text',
- 'win_info_data',
- 'status_text'
- ];
- /**
- * 关联活动
- */
- public function activity()
- {
- return $this->belongsTo('LotteryActivity', 'activity_id');
- }
- /**
- * 关联用户
- */
- public function user()
- {
- return $this->belongsTo('app\common\model\User', 'user_id');
- }
- /**
- * 关联奖品
- */
- public function prize()
- {
- return $this->belongsTo('LotteryPrize', 'prize_id');
- }
- /**
- * 关联中奖记录
- */
- public function winRecord()
- {
- return $this->hasOne('LotteryWinRecord', 'draw_record_id');
- }
- /**
- * 关联订单
- */
- public function order()
- {
- return $this->belongsTo('app\common\model\Order', 'trigger_order_id');
- }
- /**
- * 获取触发类型文本
- */
- public function getTriggerTypeTextAttr($value, $data)
- {
- $types = LotteryEnum::getTriggerTypeMap();
- return isset($types[$data['trigger_type']]) ? $types[$data['trigger_type']] : '未知';
- }
- /**
- * 获取中奖信息数据
- */
- public function getWinInfoDataAttr($value, $data)
- {
- return !empty($data['win_info']) ? json_decode($data['win_info'], true) : [];
- }
- /**
- * 设置中奖信息
- */
- public function setWinInfoAttr($value)
- {
- return is_array($value) ? json_encode($value) : $value;
- }
- /**
- * 获取状态文本
- */
- public function getStatusTextAttr($value, $data)
- {
- return LotteryEnum::getDrawStatusText($data['status']);
- }
- }
|