ShopReopen.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace app\model\shop;
  13. use app\model\BaseModel;
  14. use app\model\system\Cron;
  15. use app\model\web\WebSite;
  16. /**
  17. * 店铺续签表
  18. */
  19. class ShopReopen extends BaseModel
  20. {
  21. /**
  22. * 申请续签(上传支付凭据)
  23. * @param unknown $data
  24. */
  25. public function addReopen($data)
  26. {
  27. //查询是否已有申请记录
  28. $reopen = $this->getReopenList([['site_id', '=', $data['site_id']], ['apply_state', '=', 1]], 'id');
  29. if (!empty($reopen['data'])) {
  30. return $this->error('', '请勿重复申请续签');
  31. }
  32. //查询店铺的结束时间
  33. $shop_model = new Shop();
  34. $shop = $shop_model->getShopInfo([['site_id', '=', $data['site_id']]], 'website_id,expire_time');
  35. $expire_time = $shop['data']['expire_time'];
  36. if ($expire_time == 0) {
  37. return $this->error('', '您的店铺已永久授权,不需要申请续签');
  38. }
  39. if ($expire_time > time()) {
  40. $cha = $expire_time - time();
  41. $date = ceil(($cha/86400));
  42. if($date > 30){
  43. return $this->error('', '离到期30天内才可以申请续签');
  44. }
  45. }
  46. $data['website_id'] = $shop['data']['website_id'];
  47. $data['create_time'] = time();
  48. $data['apply_state'] = 1;
  49. $data['reopen_no'] = date('YmdHi').rand(1111,9999);
  50. $res = model("shop_reopen")->add($data);
  51. return $this->success($res);
  52. }
  53. /**
  54. * 获取续签申请金额
  55. * @param unknown $apply_year
  56. * @param unknown $group_id
  57. */
  58. public function getReopenMoney($apply_year, $group_id)
  59. {
  60. $shop_group = new ShopGroup();
  61. $group_info = $shop_group->getGroupInfo([['group_id', '=', $group_id]], 'fee');
  62. return success($group_info['data']['fee'] * $apply_year);
  63. }
  64. /**
  65. * 编辑续签信息
  66. * @param unknown $data
  67. * @return multitype:number unknown
  68. */
  69. public function editReopen($data)
  70. {
  71. $data['apply_state'] = 1;
  72. $res = model("shop_reopen")->update($data, [['id', '=', $data['id'], ['site_id', '=', $data['site_id']]]]);
  73. return $this->success($res);
  74. }
  75. /**
  76. * 拒绝续签
  77. * @param unknown $id
  78. * @param unknown $reason
  79. */
  80. public function refuse($id, $reason)
  81. {
  82. $res = model("shop_reopen")->update(['apply_message' => $reason, 'apply_state' => -1], [['id', '=', $id]]);
  83. return $this->success($res);
  84. }
  85. /**
  86. * 续签通过
  87. * @param unknown $id
  88. * @return multitype:number unknown
  89. */
  90. public function pass($id, $site_id)
  91. {
  92. $data = [
  93. 'apply_state' => 2,
  94. 'audit_time' => time()
  95. ];
  96. model("shop_reopen")->startTrans();
  97. try{
  98. $shop_info = model("shop")->getInfo([['site_id', '=', $site_id]], '*');
  99. $reopen_info = model("shop_reopen")->getInfo([['id', '=', $id], ['site_id', '=', $site_id]]);
  100. model("shop_reopen")->update($data, [['id', '=', $id], ['site_id', '=', $site_id]]);
  101. model("shop")->setInc([['site_id', '=', $site_id]], "shop_open_fee", $reopen_info['paying_amount']);
  102. //修改店铺信息
  103. $shop_data = [
  104. 'expire_time' => strtotime('+'.$reopen_info['apply_year'].'year',$shop_info['expire_time']),
  105. 'group_id' => $reopen_info['shop_group_id'],
  106. 'group_name' => $reopen_info['shop_group_name'],
  107. ];
  108. model('shop')->update($shop_data,[['site_id', '=', $site_id]]);
  109. //修改用户权限
  110. $user_data = [
  111. 'app_group' => $reopen_info['shop_group_id'],
  112. 'group_name' => $reopen_info['shop_group_name'],
  113. ];
  114. model('user')->update($user_data,[['site_id', '=', $site_id]]);
  115. //添加入驻费用流水
  116. if ($reopen_info['paying_amount'] > 0) {
  117. if($reopen_info['website_id'] > 0){
  118. //获取分站信息
  119. $website_model = new WebSite();
  120. $website_info = $website_model->getWebSite([ ['site_id','=',$reopen_info['website_id']] ],'site_area_name,shop_rate');
  121. $website_name = $website_info['data']['site_area_name'];
  122. if(isset($website_info['data']['shop_rate']) && $website_info['data']['shop_rate'] > 0){
  123. $website_commission = floor($reopen_info['paying_amount']*$website_info['data']['shop_rate'])/100;
  124. }else{
  125. $website_commission = 0;
  126. }
  127. }else{
  128. $website_name = '全国';
  129. $website_commission = $reopen_info['paying_amount'];
  130. }
  131. $open_shop_data = [
  132. 'account_no' => $reopen_info['reopen_no'],
  133. 'site_id' => $reopen_info['site_id'],
  134. 'site_name' => $shop_info['site_name'],
  135. 'money' => $reopen_info['paying_amount'],
  136. 'type' => 2,
  137. 'type_name' => '店铺续签费用',
  138. 'relate_id' => $reopen_info['id'],
  139. 'create_time' => time(),
  140. 'website_id' => $reopen_info['website_id'],
  141. 'website_name' => $website_name,
  142. 'website_commission' => $website_commission
  143. ];
  144. model('shop_open_account')->add($open_shop_data);
  145. }
  146. model("shop_reopen")->commit();
  147. return $this->success();
  148. }catch(\Exception $e)
  149. {
  150. model("shop_reopen")->rollback();
  151. return $this->error('', $e->getMessage());
  152. }
  153. }
  154. /**
  155. * 续签申请通过事件执行
  156. * @param unknown $id
  157. */
  158. public function cronShopReopen($id)
  159. {
  160. $reopen_info = model("shop_reopen")->getInfo([['id', '=', $id]], '*');
  161. if ($reopen_info['apply_state'] == 2) {
  162. try {
  163. $shop_group = new ShopGroup();
  164. $shop_group_info = $shop_group->getGroupInfo([['group_id', '=', $reopen_info['shop_group_id']]], 'group_name');
  165. $data = [
  166. 'expire_time' => $reopen_info['expire_time'] + 365 * 24 * 3600 * $reopen_info['apply_year'],
  167. 'group_id' => $reopen_info['shop_group_id'],
  168. 'group_name' => $shop_group_info['group_name']
  169. ];
  170. $res = model("shop")->update($data, [['site_id', '=', $reopen_info['site_id']]]);
  171. return $this->success($res);
  172. } catch (\Exception $e) {
  173. return $this->error($e->getMessage());
  174. }
  175. } else {
  176. return $this->error("unknow Reopen info");
  177. }
  178. }
  179. /**
  180. * 获取申请信息
  181. * @param $condition
  182. * @param string $field
  183. * @return array
  184. */
  185. public function getReopenInfo($condition, $field = '*')
  186. {
  187. $field = 'sr.*,s.site_name';
  188. $alias = 'sr';
  189. $join = [
  190. [
  191. 'shop s',
  192. 's.site_id = sr.site_id',
  193. 'left'
  194. ],
  195. ];
  196. $info = model("shop_reopen")->getInfo($condition, $field, $alias, $join);
  197. return $this->success($info);
  198. }
  199. /**
  200. * 获取申请列表
  201. * @param array $condition
  202. * @param string $field
  203. * @param string $order
  204. * @param string $limit
  205. */
  206. public function getReopenList($condition = [], $field = '*', $order = '', $limit = null)
  207. {
  208. $list = model('shop_reopen')->getList($condition, $field, $order, '', '', '', $limit);
  209. return $this->success($list);
  210. }
  211. /**
  212. * 获取店铺分页列表
  213. * @param array $condition
  214. * @param number $page
  215. * @param string $page_size
  216. * @param string $order
  217. * @param string $field
  218. */
  219. public function getReopenPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
  220. {
  221. $list = model('shop_reopen')->pageList($condition, $field, $order, $page, $page_size);
  222. return $this->success($list);
  223. }
  224. /**
  225. * 后台获取店铺申请续签分页列表
  226. * @param array $condition
  227. * @param number $page
  228. * @param string $page_size
  229. * @param string $order
  230. * @param string $field
  231. */
  232. public function getApplyReopenPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS)
  233. {
  234. $field = 'r.*,s.site_name,s.category_name,s.group_name,r.paying_money_certificate';
  235. $alias = 'r';
  236. $join = [
  237. [
  238. 'shop s',
  239. 'r.site_id = s.site_id',
  240. 'left'
  241. ],
  242. ];
  243. $list = model("shop_reopen")->pageList($condition, $field,
  244. 'r.apply_state,r.create_time desc', $page, $page_size, $alias, $join);
  245. return $this->success($list);
  246. }
  247. /*
  248. * 删除续签
  249. */
  250. public function deleteReopen($id)
  251. {
  252. $reopen = model("shop_reopen")->getInfo([['id', '=', $id]]);
  253. if (in_array($reopen['apply_state'], [1, -1])) {
  254. $res = model("shop_reopen")->delete([['id', '=', $id]]);
  255. return $this->success($res);
  256. } else {
  257. return $this->error("error");
  258. }
  259. }
  260. /**
  261. * @param $condition
  262. * @return array续签数量
  263. */
  264. public function getApplyReopenCount($condition){
  265. $count = model("shop_reopen")->getCount($condition);
  266. return $this->success($count);
  267. }
  268. }