Sellerdeposit.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <?php
  2. /**
  3. * 预存款管理
  4. */
  5. namespace app\api\controller;
  6. use think\facade\Db;
  7. use think\facade\Lang;
  8. use app\common\model\Storedepositlog;
  9. use app\common\model\Storemoneylog;
  10. /**
  11. * ============================================================================
  12. *
  13. * ============================================================================
  14. *
  15. * ----------------------------------------------------------------------------
  16. *
  17. * ============================================================================
  18. * 店铺保证金控制器
  19. */
  20. class Sellerdeposit extends MobileSeller
  21. {
  22. public function initialize()
  23. {
  24. parent::initialize();
  25. Lang::load(base_path() . 'home/lang/' . config('lang.default_lang') . '/sellerdeposit.lang.php');
  26. }
  27. /**
  28. * @api {POST} api/Sellerdeposit/index 保证金变更日志
  29. * @apiVersion 1.0.0
  30. * @apiGroup Sellerdeposit
  31. *
  32. * @apiHeader {String} X-DS-KEY 卖家授权token
  33. *
  34. * @apiParam {String} query_start_date 开始时间 YYYY-MM-DD
  35. * @apiParam {String} query_end_date 结束时间 YYYY-MM-DD
  36. * @apiParam {String} storedepositlog_desc 日志详情
  37. * @apiParam {String} page 页码
  38. * @apiParam {String} pagesize 每页显示数量
  39. *
  40. * @apiSuccess {String} code 返回码,10000为成功
  41. * @apiSuccess {String} message 返回消息
  42. * @apiSuccess {Object} result 返回数据
  43. * @apiSuccess {Object[]} result.log_list 保证金列表 (返回字段参考storedepositlog表)
  44. * @apiSuccess {Int} result.page_total 总页数
  45. * @apiSuccess {Boolean} result.hasmore 是否有更多 true是false否
  46. */
  47. public function index()
  48. {
  49. $condition = array(array('store_id', '=', $this->store_info['store_id']));
  50. $query_start_date = input('param.query_start_date');
  51. $query_end_date = input('param.query_end_date');
  52. $if_start_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/', $query_start_date);
  53. $if_end_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/', $query_end_date);
  54. $start_unixtime = $if_start_date ? strtotime($query_start_date) : null;
  55. $end_unixtime = $if_end_date ? (strtotime($query_end_date) + 86399) : null;
  56. if ($start_unixtime || $end_unixtime) {
  57. $condition[] = array('storedepositlog_add_time', 'between', array($start_unixtime, $end_unixtime));
  58. }
  59. $storedepositlog_desc = input('param.storedepositlog_desc');
  60. if ($storedepositlog_desc) {
  61. $condition[] = array('storedepositlog_desc', 'like', '%' . $storedepositlog_desc . '%');
  62. }
  63. $storedepositlog_model = model('storedepositlog');
  64. $log_list = $storedepositlog_model->getStoredepositlogList($condition, 10, '*', 'storedepositlog_id desc');
  65. $result = array_merge(array('log_list' => $log_list), mobile_page($storedepositlog_model->page_info));
  66. ds_json_encode(10000, lang('ds_common_op_succ'), $result);
  67. }
  68. /**
  69. * @api {POST} api/Sellerdeposit/withdraw_list 保证金提现列表
  70. * @apiVersion 1.0.0
  71. * @apiGroup Sellerdeposit
  72. *
  73. * @apiHeader {String} X-DS-KEY 卖家授权token
  74. *
  75. * @apiParam {Int} paystate_search 提现状态 0无效1有效2待审核3已同意4已拒绝5已缴纳6已取消
  76. * @apiParam {String} page 页码
  77. * @apiParam {String} pagesize 每页显示数量
  78. *
  79. * @apiSuccess {String} code 返回码,10000为成功
  80. * @apiSuccess {String} message 返回消息
  81. * @apiSuccess {Object} result 返回数据
  82. * @apiSuccess {Object[]} result.log_list 保证金列表 (返回字段参考storedepositlog表)
  83. * @apiSuccess {Int} result.page_total 总页数
  84. * @apiSuccess {Boolean} result.hasmore 是否有更多 true是false否
  85. */
  86. public function withdraw_list()
  87. {
  88. $condition = array(
  89. array('store_id', '=', $this->store_info['store_id']),
  90. array('storedepositlog_type', 'in', [Storedepositlog::TYPE_WITHDRAW, Storedepositlog::TYPE_RECHARGE]),
  91. );
  92. $paystate_search = input('param.paystate_search');
  93. if (isset($paystate_search) && $paystate_search !== '') {
  94. $condition[] = array('storedepositlog_state', '=', intval($paystate_search));
  95. }
  96. $storedepositlog_model = model('storedepositlog');
  97. $log_list = $storedepositlog_model->getStoredepositlogList($condition, 10, '*', 'storedepositlog_id desc');
  98. $result = array_merge(array('log_list' => $log_list), mobile_page($storedepositlog_model->page_info));
  99. ds_json_encode(10000, lang('ds_common_op_succ'), $result);
  100. }
  101. /**
  102. * @api {POST} api/Sellerdeposit/recharge_add 补缴店铺保证金
  103. * @apiVersion 1.0.0
  104. * @apiGroup Sellerdeposit
  105. *
  106. * @apiHeader {String} X-DS-KEY 卖家授权token
  107. *
  108. * @apiParam {Float} pdc_amount 补缴金额
  109. *
  110. * @apiSuccess {String} code 返回码,10000为成功
  111. * @apiSuccess {String} message 返回消息
  112. * @apiSuccess {Object} result 返回数据
  113. */
  114. public function recharge_add()
  115. {
  116. $storedepositlog_model = model('storedepositlog');
  117. $money = abs(floatval(input('post.pdc_amount')));
  118. if (!$money) {
  119. ds_json_encode(10001, lang('param_error'));
  120. }
  121. try {
  122. Db::startTrans();
  123. $data = array(
  124. 'store_id' => $this->store_info['store_id'],
  125. 'store_name' => $this->store_info['store_name'],
  126. 'storedepositlog_type' => Storedepositlog::TYPE_PAY,
  127. 'storedepositlog_state' => Storedepositlog::STATE_VALID,
  128. 'storedepositlog_add_time' => TIMESTAMP,
  129. );
  130. $data['store_avaliable_deposit'] = $money;
  131. $data['storedepositlog_desc'] = lang('sellerdeposit_recharge_deposit');
  132. $storedepositlog_model->changeStoredeposit($data);
  133. //从店铺资金中扣除
  134. $storemoneylog_model = model('storemoneylog');
  135. $data2 = array(
  136. 'store_id' => $this->store_info['store_id'],
  137. 'store_name' => $this->store_info['store_name'],
  138. 'storemoneylog_type' => Storemoneylog::TYPE_DEPOSIT_IN,
  139. 'storemoneylog_state' => Storemoneylog::STATE_VALID,
  140. 'storemoneylog_add_time' => TIMESTAMP,
  141. 'store_avaliable_money' => -$money,
  142. 'storemoneylog_desc' => $data['storedepositlog_desc'],
  143. );
  144. $storemoneylog_model->changeStoremoney($data2);
  145. Db::commit();
  146. } catch (\Exception $e) {
  147. Db::rollback();
  148. ds_json_encode(10001, $e->getMessage());
  149. }
  150. $this->recordSellerlog(lang('sellerdeposit_recharge_deposit'));
  151. ds_json_encode(10000, lang('ds_common_op_succ'));
  152. }
  153. /**
  154. * @api {POST} api/Sellerdeposit/withdraw_add 申请保证金提现
  155. * @apiVersion 1.0.0
  156. * @apiGroup Sellerdeposit
  157. *
  158. * @apiHeader {String} X-DS-KEY 卖家授权token
  159. *
  160. * @apiParam {Float} pdc_amount 提现金额
  161. *
  162. * @apiSuccess {String} code 返回码,10000为成功
  163. * @apiSuccess {String} message 返回消息
  164. * @apiSuccess {Object} result 返回数据
  165. */
  166. public function withdraw_add()
  167. {
  168. $data = [
  169. 'pdc_amount' => floatval(input('post.pdc_amount')),
  170. ];
  171. $sellerdeposit_validate = ds_validate('sellerdeposit');
  172. if (!$sellerdeposit_validate->scene('withdraw_add')->check($data)) {
  173. ds_json_encode(10001, $sellerdeposit_validate->getError());
  174. }
  175. $pdc_amount = $data['pdc_amount'];
  176. $storedepositlog_model = model('storedepositlog');
  177. $data = array(
  178. 'store_id' => $this->store_info['store_id'],
  179. 'store_name' => $this->store_info['store_name'],
  180. 'storedepositlog_type' => Storedepositlog::TYPE_WITHDRAW,
  181. 'storedepositlog_state' => Storedepositlog::STATE_WAIT,
  182. 'storedepositlog_add_time' => TIMESTAMP,
  183. );
  184. $data['store_avaliable_deposit'] = -$pdc_amount;
  185. $data['store_freeze_deposit'] = $pdc_amount;
  186. $data['storedepositlog_desc'] = lang('sellerdeposit_apply_withdraw') . lang('sellerdeposit_avaliable_money');
  187. try {
  188. Db::startTrans();
  189. $storedepositlog_model->changeStoredeposit($data);
  190. Db::commit();
  191. $this->recordSellerlog(lang('sellerdeposit_apply_withdraw'));
  192. ds_json_encode(10000, lang('ds_common_op_succ'));
  193. } catch (\Exception $e) {
  194. Db::rollback();
  195. ds_json_encode(10001, $e->getMessage());
  196. }
  197. }
  198. }