|
|
@@ -7,6 +7,7 @@ use biz\market\classes\XrFlClass;
|
|
|
use biz\shop\classes\ShopClass;
|
|
|
use bizGhs\custom\classes\CustomClass;
|
|
|
use bizHd\hb\classes\HbManageClass;
|
|
|
+use bizHd\order\classes\OrderClass;
|
|
|
use bizHd\recharge\classes\RechargeShbClass;
|
|
|
use common\components\util;
|
|
|
use bizHd\hb\classes\HbClass;
|
|
|
@@ -171,28 +172,64 @@ class HbController extends BaseController
|
|
|
util::fail('不是本门店的红包');
|
|
|
}
|
|
|
|
|
|
- // 仅更新允许字段,且只更新请求中实际传入的字段(避免用 null 覆盖原值)
|
|
|
- $allowFields = array_keys($form->attributes);
|
|
|
- foreach ($allowFields as $field) {
|
|
|
- if ($field === 'id') {
|
|
|
- continue;
|
|
|
+ $connection = Yii::$app->db;
|
|
|
+ $transaction = $connection->beginTransaction();
|
|
|
+
|
|
|
+ try {
|
|
|
+ //当是退回红包时,必须检测对应订单 actPrice 为0
|
|
|
+ if (isset($form->status) && $form->status == 0){
|
|
|
+ if($hb->status == 1){
|
|
|
+ //查询订单数据,校验 actPrice,按情况更新
|
|
|
+ $order = OrderClass::getById($form->orderId, true, 'id, hbId, hbAmount, actPrice');
|
|
|
+ if($order->hbId == $id){
|
|
|
+ if($order->actPrice == 0.00){
|
|
|
+ //更新订单数据
|
|
|
+ $order->hbId = -$order->hbId;
|
|
|
+ $order->save();
|
|
|
+ } else {
|
|
|
+ Yii::error('使用红包的订单 actPrice 不等于0,无法执行红包退回。hbId=' . $id);
|
|
|
+ util::fail('使用红包的订单 actPrice 不等于0,无法执行红包退回');
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ Yii::error("订单中的红包id与当前红包不匹配。hbId={$id}, orderId={$form->orderId}");
|
|
|
+ util::fail('订单中的红包id与当前红包不匹配');
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ Yii::error("当前红包状态不是已使用,不能变更未使用。hbId={$id}");
|
|
|
+ util::fail("当前红包状态不是已使用,不能变更未使用");
|
|
|
+ }
|
|
|
}
|
|
|
- if (array_key_exists($field, $rawPost)) {
|
|
|
- $hb->$field = $form->$field;
|
|
|
+
|
|
|
+ // 仅更新允许字段,且只更新请求中实际传入的字段(避免用 null 覆盖原值)
|
|
|
+ $allowFields = array_keys($form->attributes);
|
|
|
+ foreach ($allowFields as $field) {
|
|
|
+ if ($field === 'id') {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (array_key_exists($field, $rawPost)) {
|
|
|
+ $hb->$field = $form->$field;
|
|
|
+ }
|
|
|
}
|
|
|
+ // 当操作作废时,status改为-1,同时将endTime改为当前时间
|
|
|
+ if (isset($form->status) && $form->status == -1 && $hb->status != -1) {
|
|
|
+ $hb->endTime = time();
|
|
|
+ //记录作废人
|
|
|
+ $updateData = [
|
|
|
+ 'cancelStaffId' => $this->shopAdminId,
|
|
|
+ 'cancelStaffName' => $this->shopAdminName,
|
|
|
+ 'cancelTime' => date('Y-m-d H:i:s'),
|
|
|
+ ];
|
|
|
+ HbManageClass::updateByCondition(['hbId' => $id], $updateData);
|
|
|
+ }
|
|
|
+ $hb->save();
|
|
|
+ $transaction->commit();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ $transaction->rollBack();
|
|
|
+ $msg = $e->getMessage();
|
|
|
+ Yii::error('actionUpdateHb', $msg);
|
|
|
+ util::fail($msg);
|
|
|
}
|
|
|
- // 当操作作废时,status改为-1,同时将endTime改为当前时间
|
|
|
- if ($hb->status == -1) {
|
|
|
- $hb->endTime = time();
|
|
|
- //记录作废人
|
|
|
- $updateData = [
|
|
|
- 'cancelStaffId' => $this->shopAdminId,
|
|
|
- 'cancelStaffName' => $this->shopAdminName,
|
|
|
- 'cancelTime' => date('Y-m-d H:i:s'),
|
|
|
- ];
|
|
|
- HbManageClass::updateByCondition(['hbId' => $id], $updateData);
|
|
|
- }
|
|
|
- $hb->save();
|
|
|
+
|
|
|
util::success($hb->attributes);
|
|
|
}
|
|
|
|