Order.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. <?php
  2. namespace app\admin\model\service\order;
  3. use think\Model;
  4. use traits\model\SoftDelete;
  5. class Order extends Model
  6. {
  7. use SoftDelete;
  8. // 表名
  9. protected $name = 'service_order';
  10. // 自动写入时间戳字段
  11. protected $autoWriteTimestamp = 'integer';
  12. // 定义时间戳字段名
  13. protected $createTime = 'createtime';
  14. protected $updateTime = 'updatetime';
  15. protected $deleteTime = 'deletetime';
  16. // 追加属性
  17. protected $append = [
  18. 'traveltype_text',
  19. 'choose_skill_type_text',
  20. 'paytype_text',
  21. 'to_shop_text',
  22. 'starttime_text',
  23. 'endtime_text',
  24. 'actendtime_text',
  25. 'is_complaint_text',
  26. 'is_service_text',
  27. 'is_pool_text',
  28. 'is_settle_text',
  29. 'status_text',
  30. 'paytime_text',
  31. 'accepttime_text',
  32. 'gotime_text',
  33. 'reachtime_text',
  34. 'servicetime_text',
  35. 'finishtime_text',
  36. 'settletime_text'
  37. ];
  38. public function getTraveltypeList()
  39. {
  40. return ['0' => __('Traveltype 0'), '1' => __('Traveltype 1'), '2' => __('Traveltype 2')];
  41. }
  42. public function getChooseSkillTypeList()
  43. {
  44. return ['0' => __('Choose_skill_type 0'), '1' => __('Choose_skill_type 1')];
  45. }
  46. public function getPaytypeList()
  47. {
  48. return ['0' => __('Paytype 0'), '1' => __('Paytype 1'), '2' => __('Paytype 2'), '3' => __('Paytype 3'), '4' => __('Paytype 4')];
  49. }
  50. public function getToShopList()
  51. {
  52. return ['door' => __('To_shop door'), 'shop' => __('To_shop shop')];
  53. }
  54. public function getIsComplaintList()
  55. {
  56. return ['0' => __('Is_complaint 0'), '1' => __('Is_complaint 1')];
  57. }
  58. public function getIsServiceList()
  59. {
  60. return ['0' => __('Is_service 0'), '1' => __('Is_service 1'), '2' => __('Is_service 2'), '-1' => __('Is_service -1')];
  61. }
  62. public function getIsPoolList()
  63. {
  64. return ['0' => __('Is_pool 0'), '1' => __('Is_pool 1')];
  65. }
  66. public function getIsSettleList()
  67. {
  68. return ['0' => __('Is_settle 0'), '1' => __('Is_settle 1'), '2' => __('Is_settle 2')];
  69. }
  70. public function getStatusList()
  71. {
  72. return ['0' => __('Status 0'), '1' => __('Status 1'), '2' => __('Status 2'), '3' => __('Status 3'), '4' => __('Status 4'), '5' => __('Status 5'), '6' => __('Status 6'), '7' => __('Status 7'), '-1' => __('Status -1')];
  73. }
  74. public function getTraveltypeTextAttr($value, $data)
  75. {
  76. $value = $value ? $value : (isset($data['traveltype']) ? $data['traveltype'] : '');
  77. $list = $this->getTraveltypeList();
  78. return isset($list[$value]) ? $list[$value] : '';
  79. }
  80. public function getChooseSkillTypeTextAttr($value, $data)
  81. {
  82. $value = $value ? $value : (isset($data['choose_skill_type']) ? $data['choose_skill_type'] : '');
  83. $list = $this->getChooseSkillTypeList();
  84. return isset($list[$value]) ? $list[$value] : '';
  85. }
  86. public function getPaytypeTextAttr($value, $data)
  87. {
  88. $value = $value ? $value : (isset($data['paytype']) ? $data['paytype'] : '');
  89. $list = $this->getPaytypeList();
  90. return isset($list[$value]) ? $list[$value] : '';
  91. }
  92. public function getToShopTextAttr($value, $data)
  93. {
  94. $value = $value ? $value : (isset($data['to_shop']) ? $data['to_shop'] : '');
  95. $list = $this->getToShopList();
  96. return isset($list[$value]) ? $list[$value] : '';
  97. }
  98. public function getStarttimeTextAttr($value, $data)
  99. {
  100. $value = $value ? $value : (isset($data['starttime']) ? $data['starttime'] : '');
  101. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  102. }
  103. public function getEndtimeTextAttr($value, $data)
  104. {
  105. $value = $value ? $value : (isset($data['endtime']) ? $data['endtime'] : '');
  106. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  107. }
  108. public function getActendtimeTextAttr($value, $data)
  109. {
  110. $value = $value ? $value : (isset($data['actendtime']) ? $data['actendtime'] : '');
  111. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  112. }
  113. public function getIsComplaintTextAttr($value, $data)
  114. {
  115. $value = $value ? $value : (isset($data['is_complaint']) ? $data['is_complaint'] : '');
  116. $list = $this->getIsComplaintList();
  117. return isset($list[$value]) ? $list[$value] : '';
  118. }
  119. public function getIsServiceTextAttr($value, $data)
  120. {
  121. $value = $value ? $value : (isset($data['is_service']) ? $data['is_service'] : '');
  122. $list = $this->getIsServiceList();
  123. return isset($list[$value]) ? $list[$value] : '';
  124. }
  125. public function getIsPoolTextAttr($value, $data)
  126. {
  127. $value = $value ? $value : (isset($data['is_pool']) ? $data['is_pool'] : '');
  128. $list = $this->getIsPoolList();
  129. return isset($list[$value]) ? $list[$value] : '';
  130. }
  131. public function getIsSettleTextAttr($value, $data)
  132. {
  133. $value = $value ? $value : (isset($data['is_settle']) ? $data['is_settle'] : '');
  134. $list = $this->getIsSettleList();
  135. return isset($list[$value]) ? $list[$value] : '';
  136. }
  137. public function getStatusTextAttr($value, $data)
  138. {
  139. $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
  140. $list = $this->getStatusList();
  141. return isset($list[$value]) ? $list[$value] : '';
  142. }
  143. public function getPaytimeTextAttr($value, $data)
  144. {
  145. $value = $value ? $value : (isset($data['paytime']) ? $data['paytime'] : '');
  146. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  147. }
  148. public function getAccepttimeTextAttr($value, $data)
  149. {
  150. $value = $value ? $value : (isset($data['accepttime']) ? $data['accepttime'] : '');
  151. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  152. }
  153. public function getGotimeTextAttr($value, $data)
  154. {
  155. $value = $value ? $value : (isset($data['gotime']) ? $data['gotime'] : '');
  156. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  157. }
  158. public function getReachtimeTextAttr($value, $data)
  159. {
  160. $value = $value ? $value : (isset($data['reachtime']) ? $data['reachtime'] : '');
  161. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  162. }
  163. public function getServicetimeTextAttr($value, $data)
  164. {
  165. $value = $value ? $value : (isset($data['servicetime']) ? $data['servicetime'] : '');
  166. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  167. }
  168. public function getFinishtimeTextAttr($value, $data)
  169. {
  170. $value = $value ? $value : (isset($data['finishtime']) ? $data['finishtime'] : '');
  171. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  172. }
  173. public function getSettletimeTextAttr($value, $data)
  174. {
  175. $value = $value ? $value : (isset($data['settletime']) ? $data['settletime'] : '');
  176. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  177. }
  178. protected function setStarttimeAttr($value)
  179. {
  180. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  181. }
  182. protected function setEndtimeAttr($value)
  183. {
  184. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  185. }
  186. protected function setActendtimeAttr($value)
  187. {
  188. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  189. }
  190. protected function setPaytimeAttr($value)
  191. {
  192. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  193. }
  194. protected function setAccepttimeAttr($value)
  195. {
  196. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  197. }
  198. protected function setGotimeAttr($value)
  199. {
  200. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  201. }
  202. protected function setReachtimeAttr($value)
  203. {
  204. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  205. }
  206. protected function setServicetimeAttr($value)
  207. {
  208. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  209. }
  210. protected function setFinishtimeAttr($value)
  211. {
  212. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  213. }
  214. protected function setSettletimeAttr($value)
  215. {
  216. return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
  217. }
  218. public function getRank($type = 'goods_id',$timeType = '')
  219. {
  220. $field = 'id,goods_id,shop_id,skill_id,count(id) as num,sum(payprice) as total_price,city';
  221. $group = $type;
  222. if($timeType != 'all')
  223. {
  224. $list= db('service_order')->field($field)->whereTime('finishtime',$timeType)->group($group)->order('num desc')->limit(10)->select();
  225. }else{
  226. $list= db('service_order')->field($field)->group($group)->order('num desc')->limit(10)->select();
  227. }
  228. foreach ($list as &$value)
  229. {
  230. $value['goodsName'] = \app\admin\model\service\Goods::where('id',$value['goods_id'])->value('name');
  231. $value['skillName'] = $value['skill_id']?\app\admin\model\service\skill\Skill::where('id',$value['skill_id'])->value('name'):'平台';
  232. $value['shopName'] = $value['shop_id']?\app\admin\model\service\shop\Shop::where('id',$value['shop_id'])->value('name'):'平台';
  233. }
  234. return $list;
  235. }
  236. }