diff --git a/app/common/dao/user/IntegralGiveRecordDao.php b/app/common/dao/user/IntegralGiveRecordDao.php new file mode 100644 index 0000000..61d16f0 --- /dev/null +++ b/app/common/dao/user/IntegralGiveRecordDao.php @@ -0,0 +1,45 @@ + +// +---------------------------------------------------------------------- + + +namespace app\common\dao\user; + + +use app\common\dao\BaseDao; +use app\common\model\BaseModel; +use app\common\model\user\IntegralGiveRecord; + +/** + * Common: 商户赠送积分记录 + * Author: wu-hui + * Time: 2023/11/10 10:36 + * Class IntegralGiveRecordDao + * @package app\common\dao\user + */ +class IntegralGiveRecordDao extends BaseDao{ + /** + * Common: 初始化模型 + * Author: wu-hui + * Time: 2023/11/10 10:37 + * @return string + */ + protected function getModel(): string + { + return IntegralGiveRecord::class; + } + + + + + + +} diff --git a/app/common/model/user/IntegralGiveRecord.php b/app/common/model/user/IntegralGiveRecord.php new file mode 100644 index 0000000..994afdc --- /dev/null +++ b/app/common/model/user/IntegralGiveRecord.php @@ -0,0 +1,52 @@ + +// +---------------------------------------------------------------------- + + +namespace app\common\model\user; + + +use app\common\model\BaseModel; + +class IntegralGiveRecord extends BaseModel +{ + + /** + * @return string + * @author xaboy + * @day 2020-03-30 + */ + public static function tablePk(): string + { + return 'record_id'; + } + + /** + * @return string + * @author xaboy + * @day 2020-03-30 + */ + public static function tableName(): string + { + return 'integral_give_record'; + } + + public function operateUser() + { + return $this->hasOne(User::class, 'operate_uid', 'uid'); + } + + public function user() + { + return $this->hasOne(User::class, 'uid', 'uid'); + } + +} diff --git a/app/common/repositories/store/service/StoreServiceRepository.php b/app/common/repositories/store/service/StoreServiceRepository.php index 40a39d1..b4a3a3d 100644 --- a/app/common/repositories/store/service/StoreServiceRepository.php +++ b/app/common/repositories/store/service/StoreServiceRepository.php @@ -89,7 +89,8 @@ class StoreServiceRepository extends BaseRepository $adminRule = [ Elm::switches('customer', '订单管理', 1)->activeValue(1)->inactiveValue(0)->inactiveText('关')->activeText('开')->col(12), Elm::switches('is_goods', '商品管理', 1)->activeValue(1)->inactiveValue(0)->inactiveText('关')->activeText('开')->col(12), - Elm::switches('is_verify', '开启核销', 1)->activeValue(1)->inactiveValue(0)->inactiveText('关')->activeText('开'), + Elm::switches('is_verify', '开启核销', 1)->activeValue(1)->inactiveValue(0)->inactiveText('关')->activeText('开')->col(12), + Elm::switches('is_user', '用户管理', 1)->activeValue(1)->inactiveValue(0)->inactiveText('关')->activeText('开')->col(12), Elm::switches('notify', '订单通知', 1)->activeValue(1)->inactiveValue(0)->inactiveText('关')->activeText('开')->control([ [ 'value' => 1, @@ -99,12 +100,11 @@ class StoreServiceRepository extends BaseRepository ] ]) ]; - } $filed = [ "value" => 1, "rule" => [ - "customer","is_goods","is_verify","notify" + "customer","is_goods","is_verify","notify","is_user" ] ]; $adminRule[] = Elm::number('sort', '排序', 0)->precision(0)->max(99999); diff --git a/app/common/repositories/user/IntegralGiveRecordRepository.php b/app/common/repositories/user/IntegralGiveRecordRepository.php new file mode 100644 index 0000000..c533bb3 --- /dev/null +++ b/app/common/repositories/user/IntegralGiveRecordRepository.php @@ -0,0 +1,52 @@ + +// +---------------------------------------------------------------------- + + +namespace app\common\repositories\user; + +use app\common\dao\user\IntegralGiveRecordDao; +use app\common\repositories\BaseRepository; + + +/** + * Common: ... + * Author: wu-hui + * Time: 2023/11/10 10:37 + * Class IntegralGiveRecordRepository + * @package app\common\repositories\user + */ +class IntegralGiveRecordRepository extends BaseRepository +{ + /** + * @var IntegralGiveRecordDao + */ + protected $dao; + /** + * IntegralRepository constructor. + * @param IntegralGiveRecordDao $dao + */ + public function __construct(IntegralGiveRecordDao $dao) + { + $this->dao = $dao; + } + + + + + + + + + + + +} diff --git a/app/common/repositories/user/UserBillRepository.php b/app/common/repositories/user/UserBillRepository.php index 26609c1..2eff727 100644 --- a/app/common/repositories/user/UserBillRepository.php +++ b/app/common/repositories/user/UserBillRepository.php @@ -53,9 +53,11 @@ class UserBillRepository extends BaseRepository 'integral/sys_dec' => '系统减少积分', 'integral/sys_inc' => '系统增加积分', 'integral/timeout' => '积分过期', + 'integral/mer_give' => '商户赠送', 'mer_integral/deduction' => '积分抵扣', 'mer_integral/refund' => '订单退款', 'mer_integral/lock' => '下单赠送积分', + 'mer_integral/mer_give' => '商户赠送', 'mer_lock_money/order' => '商户佣金冻结', 'now_money/brokerage' => '佣金转入余额', 'now_money/pay_product' => '购买商品', diff --git a/app/common/repositories/user/UserMerchantRepository.php b/app/common/repositories/user/UserMerchantRepository.php index 2f89251..6b0ba1c 100644 --- a/app/common/repositories/user/UserMerchantRepository.php +++ b/app/common/repositories/user/UserMerchantRepository.php @@ -43,10 +43,12 @@ class UserMerchantRepository extends BaseRepository $query = $this->dao->search($where); $count = $query->count(); $make = app()->make(UserLabelRepository::class); + $integralMake = app()->make(IntegralRepository::class); $list = $query->setOption('field', [])->field('A.uid,A.user_merchant_id,B.avatar,B.nickname,B.user_type,A.last_pay_time,A.first_pay_time,A.label_id,A.create_time,A.last_time,A.pay_num,A.pay_price,B.phone,B.is_svip,B.svip_endtime') - ->page($page, $limit)->order('A.user_merchant_id DESC')->select()->each(function ($item) use ($where, $make) { + ->page($page, $limit)->order('A.user_merchant_id DESC')->select()->each(function ($item) use ($where, $make, $integralMake) { $item->label = count($item['label_id']) ? $make->labels($item['label_id'], $where['mer_id']) : []; $item->svip_endtime = date('Y-m-d H:i:s', strtotime("+100 year")); + $item->merchant_integral = $integralMake->getMerIntegral((int)$item->uid,(int)$where['mer_id']); return $item; }); diff --git a/app/controller/api/store/user/UserMerchant.php b/app/controller/api/store/user/UserMerchant.php new file mode 100644 index 0000000..bc583b4 --- /dev/null +++ b/app/controller/api/store/user/UserMerchant.php @@ -0,0 +1,112 @@ +repository = $repository; + } + + + /** + * Common: 列表获取 + * Author: wu-hui + * Time: 2023/11/09 17:04 + * @param $merId + * @return mixed + */ + public function getList($merId){ + $where = $this->request->params(['nickname']); + $where['mer_id'] = $merId; + [$page, $limit] = $this->getPage(); + + return app('json')->success($this->repository->getList($where, $page, $limit)); + } + /** + * Common: 商户赠送积分(客户积分变更) + * Author: wu-hui + * Time: 2023/11/10 11:28 + * @param $merId + * @return mixed + */ + public function integralChange($merId){ + $params = $this->request->params(['uid','pm','number','voucher_image']); + $params['number'] = abs($params['number']); + // 变更操作 + try { + Db::transaction(function () use ($merId, $params) { + // 变更记录 + $giveRecord = app()->make(IntegralGiveRecordRepository::class)->create([ + 'operate_uid' => $this->request->uid(), + 'uid' => $params['uid'], + 'mer_id' => $merId, + 'number' => $params['number'], + 'voucher_image' => $params['voucher_image'], + ]); + // 总积分到账 & 记录总平台积分变更日志 + app()->make(UserRepository::class)->incIntegral((int)$params['uid'],$params['number'],'商户赠送积分','mer_give',[ + 'link_id' => $giveRecord->record_id, + 'number' => $params['number'], + 'mark' => '商户赠送积分' . $params['number'] + ]); + // 商户积分变更 + app()->make(IntegralRepository::class)->changeIntegral((int)$params['uid'],(int)$merId,$params['number']); + // 记录商户端积分变更日志 + $user = app()->make(UserRepository::class)->get($params['uid']); + app()->make(UserBillRepository::class)->create([ + 'uid' => $params['uid'], + 'link_id' => $giveRecord->record_id, + 'pm' => $params['pm'], + 'title' => '商户赠送积分', + 'category' => 'mer_integral', + 'type' => 'mer_give', + 'number' => $params['number'], + 'balance' => $user->integral, + 'mark' => '商户赠送积分'.$params['number'], + 'mer_id' => $merId, + 'status' => 1 + ]); + }); + + return app('json')->success('操作成功'); + } catch (\Throwable $e) { + return app('json')->fail($e->getMessage()); + } + } + + + + + + +} diff --git a/app/controller/merchant/store/service/StoreService.php b/app/controller/merchant/store/service/StoreService.php index 50579be..2a3065b 100644 --- a/app/controller/merchant/store/service/StoreService.php +++ b/app/controller/merchant/store/service/StoreService.php @@ -110,7 +110,23 @@ class StoreService extends BaseController */ public function checkParams(StoreServiceValidate $validate, $isUpdate = false) { - $data = $this->request->params([['uid', []], 'nickname', 'account', 'pwd', 'confirm_pwd', 'is_open', 'status', 'customer', 'is_verify', 'is_goods', 'notify', 'avatar', 'phone', ['sort', 0]]); + $data = $this->request->params([ + ['uid',[]], + 'nickname', + 'account', + 'pwd', + 'confirm_pwd', + 'is_open', + 'status', + 'customer', + 'is_verify', + 'is_goods', + 'is_user', + 'notify', + 'avatar', + 'phone', + ['sort',0] + ]); if ($isUpdate) { $validate->update(); } diff --git a/route/api.php b/route/api.php index 52f0a00..979b13e 100644 --- a/route/api.php +++ b/route/api.php @@ -56,6 +56,16 @@ Route::group('api/', function () { Route::post('mark/:merId/:uid', 'api.store.service.Service/mark'); }); + // 客户管理 + Route::group('custom', function () { + Route::get('list/:merId', 'api.store.user.UserMerchant/getList'); + Route::post('integral_change/:merId', 'api.store.user.UserMerchant/integralChange'); + }); + + + + + //订单 Route::group('order', function () { Route::post('check', '/checkOrder');