123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- <?php
- namespace app\allwin\controller\home;
- use app\common\controller\Official;
- use app\allwin\model\AllwinConfig;
- use app\allwin\model\Bank;
- use app\allwin\model\BankBill;
- use app\allwin\model\MchId;
- use app\allwin\model\AllwinStore;
- use app\allwin\model\StoreBill;
- use app\allwin\model\StoreStats;
- use app\allwin\model\AllwinUser;
- use app\allwin\model\Worker;
- use app\allwin\model\WorkerStoreOrder;
- use app\common\model\SystemUser;
- use app\common\facade\WechatPay;
- use app\common\facade\WechatMp;
- use app\common\facade\Upload;
- use think\facade\Request;
- use think\helper\Time;
- class agent extends Official{
- /**
- * @return \think\response\View
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- * 首页
- */
- public function index(){
- $view['worker'] = Worker::where(['member_miniapp_id' => $this->member_miniapp_id])->where(['uid' => $this->user->id])->find();
- $view['title'] = '合伙人';
- $view['weconfig'] = WechatMp::jsApiList($this->member_miniapp_id);
- $view['workerOnStore'] = WorkerStoreOrder::where(['member_miniapp_id' => $this->member_miniapp_id, 'uid' => $this->user->id, 'pay_state' => 0])->where(['uid' => $this->user->id])->find();
- $view['member_miniapp_id'] = $this->member_miniapp_id;
- $view['setting'] = model('AllwinConfig')->getConfig($this->member_miniapp_id);
- $allWinConfig = AllwinConfig::where(['member_miniapp_id' => $this->member_miniapp_id])->find();
- $view['sla'] = json_decode($allWinConfig->sla);
- $this->view->engine->layout(false);
- return view()->assign($view);
- }
- /**
- * @return \think\response\Json
- * @throws \think\exception\DbException
- * tabar1数据
- */
- public function myStore(){
- $worker = Worker::where(['member_miniapp_id' => $this->member_miniapp_id])->where(['uid' => $this->user->id])->find();
- if ($worker) {
- $list = AllwinStore::where(['member_miniapp_id' => $this->member_miniapp_id])->whereIn('id', $worker->store_ids)->order('create_time desc')->paginate(10, false)->toArray();
- if (count($list['data']) == 0) {
- return enjson(204);
- }
- return enjson(200, '', $list);
- } else {
- return enjson(204);
- }
- }
- /**
- * @return \think\response\Json
- * @throws \think\exception\DbException
- * tabar3全部帐单
- */
- public function allBill(int $type = 1){
- $condition[] = ['member_miniapp_id', '=', $this->member_miniapp_id];
- if ($type) {
- switch ($type) {
- case 2:
- list($start, $end) = Time::yesterday();
- break;
- case 3:
- list($start, $end) = $this->beforeYesterday(2);
- break;
- default:
- list($start, $end) = Time::today();
- break;
- }
- $condition[] = ['update_time', '>=', $start];
- $condition[] = ['update_time', '<=', $end];
- }
- $list = BankBill::where($condition)->where(['user_id' => $this->user->id])->order('update_time desc')->paginate(10, false)->toArray();
- if (count($list['data']) == 0) {
- return enjson(204);
- }
- return enjson(200, '', $list);
- }
- /**
- * @return \think\response\Json
- * tabar3账单总金额
- */
- public function allBillSum(){
- $worker = Worker::where(['member_miniapp_id' => $this->member_miniapp_id])->where(['uid' => $this->user->id])->find();
- $data = [
- 'worker' => $worker,
- 'user' => SystemUser::where(['member_miniapp_id' => $this->member_miniapp_id, 'id' => $this->user->id])->find(),
- 'storeNum' => AllwinStore::where(['member_miniapp_id' => $this->member_miniapp_id])->where(['is_lock' => 0])->whereIn('id', $worker->store_ids)->count(),
- 'sum' => BankBill::where(['member_miniapp_id' => $this->member_miniapp_id])->where(['user_id' => $this->user->id])->sum('money'),
- 'vipNum' => AllwinUser::where('store_id', '>', 0)->whereIn('store_id', $worker->store_ids)->count(),
- 'bank' => Bank::where(['member_miniapp_id' => $this->member_miniapp_id, 'user_id' => $this->user->id])->find(),
- ];
- return enjson(200, '', $data);
- }
- /**
- * @param int $id
- * @return \think\response\Json
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- * tabar1修改时所需
- */
- public function getDataById(int $id = 0){
- $store = AllwinStore::where(['member_miniapp_id' => $this->member_miniapp_id, 'id' => $id])->find();
- $data = [
- 'store' => $store,
- 'user' => SystemUser::where(['member_miniapp_id' => $this->member_miniapp_id, 'id' => $store->manage_uid])->find()
- ];
- return enjson(200, '', $data);
- }
- /**
- * @param $id
- * @return \think\response\Json
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- * tabar1单个店铺帐单总计
- */
- public function getStoreBill(int $id = 0){
- $storeStats = StoreStats::where(['member_miniapp_id' => $this->member_miniapp_id, 'store_id' => $id])->find();
- return enjson(200, '', $storeStats);
- }
- /**
- * @param $id
- * @param $type
- * @return \think\response\Json
- * @throws \think\exception\DbException
- * tabar1单个店铺帐单列表
- */
- public function storeBillList(int $id = 0,int $type = 1){
- $condition[] = ['member_miniapp_id', '=', $this->member_miniapp_id];
- if ($type) {
- switch ($type) {
- case 2:
- list($start, $end) = Time::yesterday();
- break;
- case 3:
- list($start, $end) = $this->beforeYesterday(2);
- break;
- default:
- list($start, $end) = Time::today();
- break;
- }
- $condition[] = ['update_time', '>=', $start];
- $condition[] = ['update_time', '<=', $end];
- }
- $list = StoreBill::where($condition)->where(['store_id' => $id])->order('update_time desc')->paginate(10, false)->toArray();
- if (count($list['data']) == 0) {
- return enjson(204);
- }
- return enjson(200, '', $list);
- }
- /**
- * @param string $name
- * @return \think\response\Json
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- * tabar2获取用户数据
- */
- public function getUser($key = ''){
- $user = SystemUser::where(['member_miniapp_id' => $this->member_miniapp_id])->where('nickname|phone_uid', 'like','%' . $key . '%','or')->find();
- if ($user) {
- $store = AllwinStore::where(['member_miniapp_id' => $this->member_miniapp_id, 'manage_uid' => $user->id])->find();
- if ($store) {
- return enjson(0, '该店长已绑定其他店铺');
- } else {
- return enjson(200, '', $user);
- }
- } else {
- return enjson(0, '该用户不存在');
- }
- }
- /**
- * @return \think\response\Json
- * 上传图片
- */
- public function upImg(){
- if (request()->isPost()) {
- $rel = Upload::index();
- if ($rel['error'] == 0) {
- return json(['code' => 200, 'msg' => 'success', 'data' => $rel['url']]);
- } else {
- return json(['code' => 204, 'msg' => 'error']);
- }
- }
- }
- /**
- * @return \think\response\Json
- * 修改保存
- */
- public function edit(){
- $worker = Worker::where(['member_miniapp_id' => $this->member_miniapp_id])->where(['uid' => $this->user->id])->find();
- $data = [
- 'member_miniapp_id' => $this->member_miniapp_id,
- 'uid' => $this->user->id,
- 'id' => input('post.id/d'),
- 'manage_uid' => input('post.manage_uid/d'),
- 'charges' => input('post.charges/d'),
- 'work_time' => input('post.work_time/s'),
- 'name' => input('post.name/s'),
- 'address' => input('post.address/s'),
- 'telphone' => input('post.telphone/s'),
- 'tags' => input('post.tags/s'),
- 'img' => input('post.img/s')
- ];
- if ($data['id'] > 0) {
- $store = AllwinStore::where(['member_miniapp_id' => $this->member_miniapp_id,'id' => $data['id']])->find();
- if($store){
- $workerStoreOrder = WorkerStoreOrder::where(['member_miniapp_id' => $this->member_miniapp_id, 'store_id' => $store->id])->find();
- if($workerStoreOrder){
- if(isset($workerStoreOrder->pay_state) && $workerStoreOrder->pay_state != 0 && $store->is_lock == 1){
- return enjson(0, '该数据禁止修改');
- }
- }else{
- return enjson(0, '数据访问错误');
- }
- }else{
- return enjson(0, '数据访问错误');
- }
- }
- if ($data['manage_uid'] == 0) {
- return enjson(0, '好店店长不存在');
- }
- $validate = $this->validate($data, 'Store.wechatedit');
- if (true !== $validate) {
- return enjson(0, $validate);
- }
- if ($data['charges'] > 0 && $data['charges'] <= 30) {
- return enjson(0, '抱歉~交易服务费禁止小于30‰');
- }
- $store_id = AllwinStore::wechatEdit($data);
- $workerStoreOrder = WorkerStoreOrder::where(['member_miniapp_id' => $this->member_miniapp_id, 'store_id' => $store_id])->find();
- if(!empty($workerStoreOrder) && $workerStoreOrder->pay_state == 1){
- return enjson(200,'操作成功',$store_id);
- }
- $setting = model('AllwinConfig')->getConfig($this->member_miniapp_id);
- $order_no = $this->user->invite_code . order_no();
- $data['store_id'] = $store_id;
- $data['order_no'] = $order_no;
- $data['uid'] = $this->user->id;
- $data['total_price'] = $setting->workers_on_store;
- $data['price'] = $setting->workers_discount >0 ? $setting->workers_discount/100 * $setting->workers_on_store : $setting->workers_on_store;
- $data['member_miniapp_id'] = $this->member_miniapp_id;
- if(!empty($setting) && isset($setting->workers_on_store) && $setting->workers_on_store > 0){
- $data['pay_state'] = 0;
- $result = WorkerStoreOrder::createOrder($data);
- $unorder['miniapp_id'] = $this->member_miniapp_id;
- $unorder['name'] = '开通好店费用';
- $unorder['order_no'] = $order_no;
- $unorder['notify_url'] = api(3,'allwin/Partnershipnotify/onStoreNotify',$this->member_miniapp_id);;
- $unorder['total_fee'] = $data['price'] * 100;
- if ($setting->is_psp == 1) {
- $mid = MchId::getMch(0, $this->member_miniapp_id);
- $unorder['mchid'] = $mid->mchid;
- }
- $unorder['openid'] = $this->user->official_uid;
- $ispay = WechatPay::orderPay($unorder,true);
- if ($ispay['code'] == 0) {
- return json(['code' => 0, 'return_code' => 'FAIL', 'msg' => $ispay['msg']]);
- }
- return enjson(206,'操作成功', $ispay['data']);
- }else{
- $data['pay_state'] = 2;
- $result = WorkerStoreOrder::createOrder($data);
- return enjson(200,'操作成功',$store_id);
- }
- }
- /**
- * @param int $day
- * @return array
- * 获取前天时间
- */
- public function beforeYesterday(int $day)
- {
- $yesterday = date('d') - $day;
- return [
- mktime(0, 0, 0, date('m'), $yesterday, date('Y')),
- mktime(23, 59, 59, date('m'), $yesterday, date('Y'))
- ];
- }
- /**
- * @param $uid
- * @return \think\response\Json
- * 下单
- */
- public function pay(){
- $order_no = $this->user->invite_code . order_no();
- $data['id'] = Request::param('id/d');
- $data['order_no'] = $order_no;
- $data['uid'] = $this->user->id;
- $data['member_miniapp_id'] = $this->member_miniapp_id;
- $unorder['miniapp_id'] = $this->member_miniapp_id;
- $unorder['name'] = '开通合伙人费用';
- $unorder['order_no'] = $order_no;
- $unorder['notify_url'] = api(4,'allwin/Partnershipnotify/workerNotify',$this->member_miniapp_id);
- $setting = model('AllwinConfig')->getConfig($this->member_miniapp_id);
- $unorder['total_fee'] = $setting->workers_on_amount ? $setting->workers_on_amount * 100 : 100;
- $data['price'] = $unorder['total_fee']/100;
- $result = Worker::createOrder($data);
- if ($setting->is_psp == 1) {
- $mid = MchId::getMch(0, $this->member_miniapp_id);
- $unorder['mchid'] = $mid->mchid;
- }
- $unorder['openid'] = $this->user->official_uid;
- $ispay = WechatPay::orderPay($unorder,true);
- if ($ispay['code'] == 0) {
- return json(['code' => 0, 'return_code' => 'FAIL', 'msg' => $ispay['msg']]);
- }
- return json(['code' => 200, 'msg' => '操作成功', 'data' => $ispay['data']]);
- }
- }
|