diff --git a/app/common/dao/store/coupon/StoreCouponUserDao.php b/app/common/dao/store/coupon/StoreCouponUserDao.php index d7e54dd1..de328e1c 100644 --- a/app/common/dao/store/coupon/StoreCouponUserDao.php +++ b/app/common/dao/store/coupon/StoreCouponUserDao.php @@ -55,6 +55,8 @@ class StoreCouponUserDao extends BaseDao public $couponUsed; /** @var float $profitRate 商品毛利率 */ public $profitRate; + public $updateOrigin = false; //是否更新优惠券初始金额 + public $insertDetail = true; //是否写入明细 const RATE_ARRAY = [ ['profit_rate' => 10, 'use_rate' => 0.1], @@ -182,14 +184,19 @@ class StoreCouponUserDao extends BaseDao throw new ValidateException('优惠券不存在'); } $storeCouponUser->coupon_price = bcadd($storeCouponUser->coupon_price, $amount, 2); + if ($this->updateOrigin) { + $storeCouponUser->origin_price = bcadd($storeCouponUser->origin_price, $amount, 2); + } if ($storeCouponUser->status != 0 && $storeCouponUser->coupon_price > 0) { $storeCouponUser->status = 0; } if (!$storeCouponUser->save()) { throw new ValidateException('优惠券余额更新出错'); } - $coupon = ['coupon_id' => $storeCouponUser['coupon_id'], 'coupon_price' => $amount]; - StoreCouponDetail::income($order, $storeCouponUser['coupon_user_id'], $coupon, $mark, StoreCouponDetail::STATUS_VALID, StoreCouponDetail::SEND_FINISHED); + if ($this->insertDetail) { + $coupon = ['coupon_id' => $storeCouponUser['coupon_id'], 'coupon_price' => $amount]; + StoreCouponDetail::income($order, $storeCouponUser['coupon_user_id'], $coupon, $mark, StoreCouponDetail::STATUS_VALID, StoreCouponDetail::SEND_FINISHED); + } } /** diff --git a/app/controller/api/server/Store.php b/app/controller/api/server/Store.php index 3f9358a3..fcbf825a 100644 --- a/app/controller/api/server/Store.php +++ b/app/controller/api/server/Store.php @@ -2,6 +2,7 @@ namespace app\controller\api\server; +use app\common\dao\store\coupon\StoreCouponUserDao; use app\common\model\store\coupon\StoreCoupon; use app\common\model\store\coupon\StoreCouponDetail; use app\common\model\store\coupon\StoreCouponUser; @@ -12,6 +13,7 @@ use app\controller\api\Common; use crmeb\basic\BaseController; use think\App; use think\db\Query; +use think\facade\Db; class Store extends BaseController { @@ -203,4 +205,38 @@ class Store extends BaseController return app('json')->success($result); } + /** + * 领取补贴 + * @param $id + * @return mixed + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public function receive($id) + { + $userId = $this->request->uid(); + $couponDetail = StoreCouponDetail::where('id', $id)->where('uid', $userId)->find(); + if (empty($couponDetail) || $couponDetail['send_status'] != StoreCouponDetail::SEND_CONFIRM) { + return app('json')->fail('当前状态不支持操作'); + } + Db::startTrans(); + try { + $couponDetail->send_status = StoreCouponDetail::SEND_FINISHED; + if (!$couponDetail->save()) { + throw new \Exception('优惠券详情保存出错'); + } + /** @var StoreCouponUserDao $couponDao */ + $couponDao = app()->make(StoreCouponUserDao::class); + $couponDao->updateOrigin = true; + $couponDao->insertDetail = false; + $couponDao->increase($couponDetail['coupon_user_id'], $couponDetail['amount'], []); + Db::commit(); + return app('json')->success('领取成功'); + } catch (\Exception $e) { + Db::rollback(); + return app('json')->fail('领取出错,请稍后重试'); + } + } + } diff --git a/route/admin/subsidy.php b/route/admin/subsidy.php index e4c51dc0..3c2d12f5 100644 --- a/route/admin/subsidy.php +++ b/route/admin/subsidy.php @@ -18,6 +18,11 @@ Route::group(function () { '_auth' => false, '_form' => 'userSubsidyStatus', ]); + Route::post('update', '/update')->name('userSubsidyUpdate')->option([ + '_alias' => '修改补贴金额', + '_auth' => false, + '_form' => 'userSubsidyUpdate', + ]); })->prefix('admin.system.financial.Subsidy')->option([ '_path' => '/cms/userSubsidy', '_auth' => true, diff --git a/route/api.php b/route/api.php index 5c7d8403..8dcc3508 100644 --- a/route/api.php +++ b/route/api.php @@ -315,6 +315,7 @@ Route::group('api/', function () { Route::get('attr/list', 'StoreProductAttrTemplate/getlist'); Route::get('subsidy', 'Store/subsidy'); Route::get('subsidyRecord', 'Store/subsidyRecord'); + Route::get('subsidyReceive', 'Store/receive'); })->prefix('api.server.')->middleware(\app\common\middleware\MerchantServerMiddleware::class, 1); //管理员订单