UserLog.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * ----------------------------------------------------------------------------
  4. * 行到水穷处,坐看云起时
  5. * 开发软件,找贵阳云起信息科技,官网地址:https://www.56q7.com/
  6. * ----------------------------------------------------------------------------
  7. * Author: 老成
  8. * email:85556713@qq.com
  9. */
  10. declare(strict_types=1);
  11. namespace app\common\model;
  12. use think\Model;
  13. class UserLog Extends Model
  14. {
  15. // 自动写入时间戳字段
  16. protected $autoWriteTimestamp = true;
  17. // 定义时间戳字段名
  18. protected $createTime = 'createtime';
  19. protected $updateTime = false;
  20. protected $type = [
  21. 'createtime' => 'timestamp:Y-m-d H:i',
  22. ];
  23. const TYPE=[
  24. 'balance'=>'余额',
  25. 'score'=>'积分'
  26. ];
  27. public static function addBalanceLog($user_id,$change_type,$change,$order_no,$remark)
  28. {
  29. self::addLog($user_id,'balance',$change_type,$change,$order_no,$remark);
  30. }
  31. public static function addScoreLog($user_id,$change_type,$change,$order_no,$remark)
  32. {
  33. self::addLog($user_id,'score',$change_type,$change,$order_no,$remark);
  34. }
  35. private static function addLog($user_id,$module,$change_type,$change,$order_no,$remark)
  36. {
  37. $user=User::find($user_id);
  38. if(!$user){
  39. throw new \Exception('会员不存在!'.$user_id);
  40. }
  41. $before=(string)$user->$module;
  42. $after='';
  43. $scale=0;
  44. if($module=='balance'){
  45. $scale=2;
  46. }
  47. switch ($change_type){
  48. case 'add':
  49. $after=bcadd($before,(string)$change,$scale);
  50. break;
  51. case 'minus':
  52. $after=bcsub($before,(string)$change,$scale);
  53. break;
  54. case 'last':
  55. $after=$change;
  56. break;
  57. }
  58. $type_txt=self::TYPE[$module];
  59. if($after<0){
  60. throw new \Exception($type_txt.'不能小于0');
  61. }
  62. $log=new self();
  63. $log->order_no=$order_no;
  64. $log->user_id=$user_id;
  65. $log['type']=$module;
  66. $log->before=$before;
  67. $log->change=$change;
  68. $log->after=$after;
  69. $log->remark=$remark;
  70. $log->save();
  71. $user->$module=$after;
  72. $user->save();
  73. }
  74. }