LocalDeliveryLog.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. /**
  3. * 厦门云联储网络科技有限公司
  4. * https://www.baokuaiyun.com
  5. * Copyright (c) 2023 爆块云 All rights reserved.
  6. */
  7. namespace app\models;
  8. use Yii;
  9. use yii\behaviors\TimestampBehavior;
  10. use app\modules\admin\models\wechat_mp\CardForm;
  11. use app\utils\IotCloudHelper;
  12. /**
  13. * This is the model class for table "{{%local_delivery_log}}".
  14. *
  15. * @property integer $id
  16. * @property integer $store_id
  17. * @property integer $order_id
  18. * @property integer $saas_user_id
  19. * @property integer $amount
  20. * @property string $desc
  21. * @property integer $before
  22. * @property integer $after
  23. * @property string $operator
  24. * @property integer $operator_id
  25. * @property integer $log_type
  26. * @property integer $type
  27. * @property integer $operator_type
  28. * @property integer $created_at
  29. */
  30. class LocalDeliveryLog extends \yii\db\ActiveRecord
  31. {
  32. /**
  33. * 收入类型
  34. */
  35. const LOG_TYPE_INCOME = 1;
  36. /**
  37. * 支出类型
  38. */
  39. const LOG_TYPE_EXPEND = 2;
  40. public static $type_budget = [
  41. self::LOG_TYPE_INCOME,
  42. self::LOG_TYPE_EXPEND
  43. ];
  44. /**
  45. * 充值订单
  46. */
  47. const TYPE_RECHARGE_ORDER = 0;
  48. /**
  49. * 商城订单
  50. */
  51. const TYPE_PLATFORM_ORDER = 1;
  52. /**
  53. * 秒杀订单
  54. */
  55. const TYPE_MS_ORDER = 2;
  56. /**
  57. * 拼团订单
  58. */
  59. const TYPE_PT_ORDER = 3;
  60. /**
  61. * 预约订单
  62. */
  63. const TYPE_YY_ORDER = 8;
  64. /**
  65. * 预约订单
  66. */
  67. const TYPE_SCRATCH_ORDER = 9;
  68. /**
  69. * 大转盘
  70. */
  71. const TYPE_POND_ORDER = 10;
  72. /**
  73. * 供货商订单
  74. */
  75. const TYPE_SUPPLIER_ORDER = 11;
  76. /**
  77. * 会员购买订单
  78. */
  79. const TYPE_LEVEL_ORDER = 12;
  80. /**
  81. * 当面付
  82. */
  83. const TYPE_SCAN_CODE_PAY = 13;
  84. /**
  85. * 微信
  86. */
  87. const TYPE_WECHAT = 3;
  88. /**
  89. * 支付宝
  90. */
  91. const TYPE_ALIPAY = 4;
  92. /**
  93. * 后台改动
  94. */
  95. const TYPE_OPERATOR_BACK = 2;
  96. /**
  97. * 前台变化
  98. */
  99. const TYPE_OPERATOR_NORMAL = 1;
  100. /**
  101. * @inheritdoc
  102. */
  103. public static function tableName()
  104. {
  105. return '{{%local_delivery_log}}';
  106. }
  107. /**
  108. * @inheritdoc
  109. */
  110. public function rules()
  111. {
  112. return [
  113. [[
  114. 'saas_user_id', 'type', 'amount', 'desc', 'before', 'after',
  115. 'operator_type', 'log_type', 'type'
  116. ], 'required'],
  117. [[
  118. 'saas_user_id', 'type', 'created_at', 'order_id', 'operator_type', 'log_type', 'operator_id','store_id'
  119. ], 'integer'],
  120. [['amount', 'before', 'after'], 'number'],
  121. [['desc', 'operator'], 'string'],
  122. ];
  123. }
  124. /**
  125. * @inheritdoc
  126. */
  127. public function attributeLabels()
  128. {
  129. return [
  130. 'id' => 'ID',
  131. 'saas_user_id' => 'SaasUser ID',
  132. 'log_type' => '类型:1=收入,2=支出',
  133. 'type' => '类型:1=佣金收入;2=佣金提现;',
  134. 'amount' => '变动数',
  135. 'desc' => '变动说明',
  136. 'before' => '变动前',
  137. 'after' => '变动后',
  138. 'operator' => '操作者',
  139. 'operator_id' => '操作者id',
  140. 'operator_type' => '1:前台,2:后台',
  141. 'created_at' => '添加时间',
  142. 'order_id' => '订单ID',
  143. 'store_id' => '所属商城'
  144. ];
  145. }
  146. /**
  147. * 仅适用客户端使用
  148. * @param $saas_user_id
  149. * @param $amount
  150. * @param $type
  151. * @param $log_type
  152. * @param int $order_id
  153. * @param string $desc
  154. * @return bool
  155. */
  156. public static function saveLog($saas_user_id, $amount, $type, $log_type, $order_id = 0, $desc = "",$is_reject = 0)
  157. {
  158. $form = new self();
  159. $courier = LocalDeliveryCourier::findOne(['saas_user_id' => $saas_user_id, 'state' => 2, 'is_delete' => 0]);
  160. $order = Order::findOne($order_id);
  161. $form->store_id = $order_id > 0 ? $order->store_id : 0;
  162. $form->saas_user_id = $saas_user_id;
  163. $form->amount = $amount;
  164. $form->type = $type;
  165. $form->before = $courier->money;
  166. if ($log_type == LocalDeliveryLog::LOG_TYPE_INCOME) {
  167. $form->after = $courier->money + $amount;
  168. } else {
  169. $form->after = $courier->money - $amount;
  170. }
  171. $form->desc = $desc;
  172. $form->order_id = $order_id;
  173. $form->operator = '';
  174. $form->operator_id = 0;
  175. $form->log_type = $log_type;
  176. $form->operator_type = LocalDeliveryLog::TYPE_OPERATOR_NORMAL;
  177. $form->created_at = time();
  178. if ($form->save()) {
  179. if ($log_type == LocalDeliveryLog::LOG_TYPE_INCOME) {
  180. if($is_reject == 0) {
  181. $courier->total_money += $amount;
  182. }
  183. $courier->money += $amount;
  184. } else {
  185. $courier->money -= $amount;
  186. }
  187. return $courier->save();
  188. } else {
  189. return false;
  190. }
  191. }
  192. }