Finance.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: qisse
  5. * Date: 2017/6/27
  6. * Time: 20:02
  7. */
  8. namespace app\mobile_v_2_1\logic;
  9. use app\core\exception\AppException;
  10. use app\core\model\Subject;
  11. use app\core\model\SubjectStat;
  12. use app\core\model\UserAccount;
  13. use app\core\model\UserFinance as Model;
  14. use app\core\service\Pay;
  15. use think\Db;
  16. use think\Exception;
  17. use think\Log;
  18. use tool\Common;
  19. class Finance extends Base
  20. {
  21. public function createPayParams() {
  22. $this->app = [
  23. 'cangID'=>1
  24. ];
  25. //第一步,获取该仓
  26. $model = Model::get($this->app['cangID']);
  27. if(!$model) {
  28. return Common::rm(-2, '不存在该仓');
  29. }
  30. //第二步,判断仓所属的标的是否过期
  31. $subject = Subject::get($model['subjectID']);
  32. if(!$subject) {
  33. return Common::rm(-12, '不存在该仓所属的标的');
  34. }
  35. //1、判断是否过认购期
  36. if(THINK_START_TIME >= $subject->getData('endTime')) {
  37. return Common::rm(-13, '该商品已过认购期,不能购买了');
  38. }
  39. //2、判断是否满标了
  40. if($subject['status'] == Subject::STATUS_FULL) {
  41. return Common::rm(-14, '该商品已经满标,不能购买了');
  42. }
  43. //3、判断是否下架了
  44. if($subject['status'] == Subject::STATUS_OFFLINE) {
  45. return Common::rm(-15, '该商品已经下架,不能购买了');
  46. }
  47. //第三步,获取支付参数
  48. $pay = new Pay();
  49. $ouerOrder = $pay->createOrder($model['money']);
  50. if(!$ouerOrder) {
  51. return Common::rm(-3, '获取支付参数失败');
  52. }
  53. $model['outerAlias'] = $ouerOrder['outerAlias'];
  54. $model['outerMch'] = $ouerOrder['outerMch'];
  55. $model['outerName'] = $ouerOrder['outerName'];
  56. $model['payTimes'] = $model['payTimes'] + 1;
  57. $model->save();
  58. return Common::rm(1, '操作成功', [
  59. 'cangID'=>$this->app['cangID'],
  60. 'outerAlias'=>$model['outerAlias'],
  61. /*'money'=>$model['money'],*/
  62. 'notify'=>$this->request->domain().'/mobile/notify/cang'
  63. ]);
  64. }
  65. /**
  66. * @api {post} cang/getCangList 得到我的投资列表
  67. * @apiVersion 1.0.0
  68. * @apiName getCangList
  69. * @apiDescription 得到我的投资列表
  70. * @apiGroup Cang
  71. *
  72. * @apiParam {Number=[1,2]} status 1为持有中,2为已回款
  73. * @apiParamExample {json} 发送报文:
  74. {
  75. "app": {
  76. "status": 1
  77. },
  78. "sign": "4297f44b13955235245b2497399d7a93"
  79. }
  80. *
  81. * @apiSuccess {Object[]} cangList 我的投资列表
  82. * @apiSuccess {Number} cangList.cangID ID
  83. * @apiSuccess {Number} cangList.moneySubject 投资份额(非本金,非实际支付金额)
  84. * @apiSuccess {Number} cangList.status 状态,1-已持有,4-已计息,5-已回款
  85. * @apiSuccess {String} cangList.statusText 状态描述,参考状态
  86. * @apiSuccess {String} cangList.payTime 交易时间
  87. * @apiSuccess {String} cangList.interestBeginTime 起息日期
  88. * @apiSuccess {String} cangList.interestEndTime 停止计息日
  89. * @apiSuccess {String} cangList.year 年化
  90. * @apiSuccess {String} cangList.yearExt 追加年化
  91. * @apiSuccess {String} cangList.ben 实际投入本金
  92. * @apiSuccess {String} cangList.interest 利息
  93. * @apiSuccess {Number} cangList.investDay 投资天数
  94. * @apiSuccess {Object} cangList.subject 相关标的
  95. * @apiSuccess {String} cangList.subject.title 标的标题
  96. * @apiSuccess {Number} cangList.subject.subjectTypeID 标的类型
  97. * @apiSuccess {Number} cangList.subject.interestTypeID 计息类型
  98. * @apiSuccess {Number} cangList.subject.interestTimeTypeID 计息时间类型
  99. * @apiSuccess {String} cangList.subject.reachTime 标的标题
  100. * @apiSuccess {String} cangList.subject.title 标的标题
  101. * @apiSuccess {Object[]} cangList.cangRepay 预回款清单
  102. * @apiSuccess {String} cangList.cangRepay.money 回款金额
  103. * @apiSuccess {String} cangList.cangRepay.repayTime 回款类型
  104. * @apiSuccess {String} cangList.cangRepay.resultTime 实际到款时间
  105. * @apiSuccess {String} cangList.cangRepay.reachTime 到款时间
  106. * @apiSuccess {Number} cangList.cangRepay.status 清单状态,1-未回款,2-已回款,3-已到账(该状态可隐藏)
  107. * @apiSuccess {Number} cangList.cangRepay.repayTypeID 清单类型,1-本金,2-利息
  108. * @apiSuccessExample {json} 返回json数据(举例):
  109. {
  110. "code": 1,
  111. "msg": "操作成功",
  112. "content": {
  113. "cangList": [
  114. {
  115. "cangID": 33,
  116. "moneySubject": "2000.00",
  117. "status": 4,
  118. "payTime": "2017-12-12 20:53:50",
  119. "interestBeginTime": "2017-12-12",
  120. "interestEndTime": "2017-12-23",
  121. "year": "12.80",
  122. "yearExt": "2.00",
  123. "ben": "2000.00",
  124. "interest": "7.01",
  125. "investDay": 10,
  126. "subject": {
  127. "subjectTypeID": 2,
  128. "interestTypeID": 1,
  129. "interestTimeTypeID": 1,
  130. "title": "普通标11111"
  131. },
  132. "cangRepay": [
  133. {
  134. "money": "2000.00",
  135. "repayTime": "2017-12-22",
  136. "reachTime": "2017-12-23",
  137. "resultTime": "2017-12-12",
  138. "status": 1,
  139. "repayTypeID": 1
  140. },
  141. {
  142. "money": "7.01",
  143. "repayTime": "2017-12-22",
  144. "reachTime": "2017-12-23",
  145. "resultTime": "2017-12-12",
  146. "status": 1,
  147. "repayTypeID": 2
  148. }
  149. ],
  150. "statusText": "计息中"
  151. },
  152. {
  153. "cangID": 30,
  154. "moneySubject": "98000.00",
  155. "status": 4,
  156. "payTime": "2017-12-12 18:28:27",
  157. "interestBeginTime": "2017-12-12",
  158. "year": "12.80",
  159. "ben": "98000.00",
  160. "interest": "343.67",
  161. "investDay": 10,
  162. "subject": {
  163. "subjectTypeID": 2,
  164. "interestTypeID": 1,
  165. "interestTimeTypeID": 1,
  166. "title": "普通标11111"
  167. },
  168. "cangRepay": [
  169. {
  170. "money": "98000.00",
  171. "repayTime": "2017-12-22",
  172. "reachTime": "2017-12-23",
  173. "resultTime": "2017-12-12",
  174. "status": 1,
  175. "repayTypeID": 1
  176. },
  177. {
  178. "money": "343.67",
  179. "repayTime": "2017-12-22",
  180. "reachTime": "2017-12-23",
  181. "resultTime": "2017-12-12",
  182. "status": 1,
  183. "repayTypeID": 2
  184. }
  185. ],
  186. "statusText": "计息中"
  187. }
  188. ]
  189. },
  190. "sign": "4297f44b13955235245b2497399d7a93"
  191. }
  192. * @apiUse CreateUserError
  193. */
  194. public function getCangList() {
  195. $map = $this->map();
  196. if($this->app['status'] == 1) {
  197. $map['status'] = ['in', [Model::STATUS_PAY, Model::STATUS_INTEREST]];
  198. }
  199. else if($this->app['status'] == 2){
  200. $map['status'] = Model::STATUS_REPAY;
  201. }
  202. $list = Model::with(['subject','cangRepay'])->where($map)->order('addTime desc')->select();
  203. if($list->isEmpty()) {
  204. return Common::rm(-2, '数据为空');
  205. }
  206. $list->append(['statusText'])->visible(['cangID','moneySubject','payTime','status','investDay','interestBeginTime','interestEndTime','year','yearExt','interest','ben','repayBenTime','subject'=>[
  207. 'title','interestTimeTypeID','interestTypeID','subjectTypeID'
  208. ],'cangRepay'=>[
  209. 'money','repayTime','reachTime','resultTime','status','repayTypeID'
  210. ]]);
  211. return Common::rm(1, '操作成功', [
  212. 'cangList'=>$list
  213. ]);
  214. }
  215. public function actionOnline() {
  216. $item = $this->getItem();
  217. if($item['status'] != 1) {
  218. return Common::rm(-3, '不是可以进行的状态,当前状态'.$item['statusText']);
  219. }
  220. $item['status'] = Model::STATUS_ONLINE;
  221. $item->save();
  222. return Common::rm(1, '操作成功', [
  223. 'detail'=>$item
  224. ]);
  225. }
  226. private function getItem($map = []) {
  227. $map['alias'] = $this->app['alias'];
  228. $item= Model::with('subjectType,interestType,interestTimeType,subjectStat')->where($map)->find();
  229. if(!$item) {
  230. return Common::rm(-2, '数据为空');
  231. }
  232. $item->append(['statusText'])->hidden(['subjectID','subjectTypeID','interestTypeID','interestTimeTypeID',
  233. 'subjectStat'=>[
  234. 'subjectID','subjectStatID'
  235. ]
  236. ]);
  237. return $item;
  238. }
  239. public function init() {
  240. User::destroy([
  241. 'watchID'=>$this->app['watchID']
  242. ]);
  243. return Common::rm(1, '操作成功');
  244. }
  245. }