Shop.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types=1);
  12. namespace app\api\controller;
  13. use app\api\model\ExploreSet;
  14. use app\api\model\Order as OrderModel;
  15. use app\api\model\OrderRefund as OrderRefundModel;
  16. use app\api\model\Setting as SettingModel;
  17. use app\api\model\User as UserModel;
  18. use app\api\service\User as UserService;
  19. use app\common\enum\Setting as SettingEnum;
  20. use app\common\exception\BaseException;
  21. use app\api\model\OrderGoods;
  22. use app\console\model\user\CommissionsDetail;
  23. /**
  24. * 我的店铺
  25. * Class Order
  26. * @package app\api\controller
  27. */
  28. class Shop extends Controller
  29. {
  30. /**
  31. * 订单详情信息/确认核销
  32. * @param string $hxCode 核销码
  33. * @return array|\think\response\Json
  34. * @throws BaseException
  35. * @throws \think\db\exception\DataNotFoundException
  36. * @throws \think\db\exception\DbException
  37. * @throws \think\db\exception\ModelNotFoundException
  38. */
  39. public function writeOff(string $hxCode)
  40. {
  41. $user = UserService::getCurrentLoginUser();
  42. // 订单详情
  43. $order = OrderModel::detail(
  44. [
  45. 'hx_code' => $hxCode,
  46. 'shop_id' => $user['shop_id'],
  47. ], [
  48. 'goods' => ['image', 'refund'], 'hxUser', 'shops','staffUser'
  49. ]);
  50. empty($order) && throwError('订单不存在');
  51. OrderModel::restructureGoods($order);
  52. if ($this->request->isGet()) {
  53. return $this->renderSuccess(['order' => $order]);
  54. }
  55. //确认核销
  56. if (!$order->writeOff()) {
  57. return $this->renderError($order->getError());
  58. }
  59. return $this->renderSuccess('核销成功');
  60. }
  61. /**
  62. * 售后详情信息/确认退款
  63. * @param string $hxRefundCode
  64. * @return array
  65. * @throws BaseException
  66. * @author: zjwhust
  67. * @Time: 2021/12/11 13:58
  68. */
  69. public function refundDetail(string $hxRefundCode){
  70. $user = UserService::getCurrentLoginUser();
  71. //读取订单详情的的退款记录
  72. $orderRefund = OrderRefundModel::detail(
  73. [
  74. 'hx_refund_code' => $hxRefundCode,
  75. 'shop_id' => $user['shop_id'],
  76. ], [
  77. 'orderGoodsAll' => ['image', 'staffUser'], 'hxUser', 'orderData' => ['hxUser', 'shops']
  78. ]
  79. );
  80. empty($orderRefund) && throwError('退款记录不存在');
  81. $orderRefund = $orderRefund->toArray();
  82. $orderRefund['goods_sku_no'] = '';
  83. if($orderRefund['order_goods_id']>0){
  84. foreach ($orderRefund['orderGoodsAll'] as $key=>$orderGoods){
  85. if($orderGoods['order_goods_id'] == $orderRefund['order_goods_id']){
  86. $orderRefund['goods_sku_no'] = $orderGoods['goods_sku_no'];
  87. }
  88. }
  89. }
  90. return $this->renderSuccess(['refund' => $orderRefund]);
  91. }
  92. /**
  93. * 审核售后单(同意/拒绝)
  94. * @return array
  95. * @throws BaseException
  96. * @author: zjwhust
  97. * @Time: 2021/12/13 15:58
  98. */
  99. public function refundEdit(){
  100. $param = $this->request->post();
  101. if($param['audit_status']==20){
  102. if(empty($param['refuse_desc'])){
  103. throwError('拒绝退货时退货理由不能为空');
  104. }
  105. }
  106. $user = UserService::getCurrentLoginUser();
  107. $orderRefund = OrderRefundModel::detail(
  108. [
  109. 'hx_refund_code' => $param['hx_refund_code'],
  110. 'shop_id' => $user['shop_id'],
  111. ],[
  112. 'shops'
  113. ]);
  114. //同意/拒绝退款的操作
  115. if (!$orderRefund->auditStatus($param,$user)) {
  116. return $this->renderError($orderRefund->getError());
  117. }
  118. return $this->renderSuccess('操作成功');
  119. }
  120. /**
  121. * 处理所有用户的推荐官等级
  122. * 1、统计
  123. * @author: zhangq
  124. * @Time: 2021/12/14 9:35
  125. */
  126. public function recommender(){
  127. //1、有效期内销售额未达任务值,普通推荐官直接延长过期时间,高级推荐官、超级推荐官降级
  128. //2、有效期内销售额达任务值,直接升级(超级推荐官不升级),并且重新统计销售额度和有效期
  129. $userList = UserModel::where(['role'=>99])->select();
  130. $grade = SettingModel::getItem(SettingEnum::DISTRIBUTOR_GRADE)['distributor'];
  131. $grade_one = $grade[1]['cumulative']*10000;
  132. $grade_two = $grade[2]['cumulative']*10000;
  133. // dd($grade_one);
  134. foreach ($userList as $user){
  135. $user['seller_expire'] = !is_string($user['seller_expire'])?$user['seller_expire']: time();
  136. $start = strtotime("-1 year",$user['seller_expire']);
  137. $end = $user['seller_expire'];
  138. $orderId = CommissionsDetail::getRefundCommOrderId($user['user_id'],$start,$end);
  139. $total_amount = OrderModel::field("sum(pay_price + rice_card_money - express_price) as total_amount")
  140. ->whereIn('order_id',$orderId)
  141. ->whereBetweenTime('create_time', $start, $end)
  142. ->find();
  143. $total_pay_price = (int)$total_amount['total_amount'];
  144. switch ($user['seller_grade']){
  145. case 1:
  146. if($total_pay_price<$grade_one){
  147. if($user['seller_expire']-time()<86400){//小于1天,延长普通推荐官的过期时间
  148. $seller_expire = strtotime("+1 year ".$user['seller_expire']);
  149. UserModel::updateBase(['seller_expire'=>$seller_expire],['user_id'=>$user['user_id']]);
  150. }
  151. }
  152. if($total_pay_price>=$grade_one){
  153. if($total_pay_price>=$grade_two){//直接升级为超级推荐官
  154. $seller_expire = strtotime("+1 year");
  155. UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>3],['user_id'=>$user['user_id']]);
  156. }else{//升级为高级推荐官
  157. $seller_expire = strtotime("+1 year");
  158. UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>2],['user_id'=>$user['user_id']]);
  159. }
  160. }
  161. break;
  162. case 2:
  163. if($total_pay_price<$grade_one){
  164. if($user['seller_expire']-time()<86400){//小于1天,降级为普通推荐官并重置过期时间
  165. $seller_expire = strtotime("+1 year");
  166. UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>1],['user_id'=>$user['user_id']]);
  167. }
  168. }
  169. if($total_pay_price>=$grade_one && $total_pay_price<$grade_two){
  170. if($user['seller_expire']-time()<86400) {//小于1天,延长高级推荐官的过期时间
  171. $seller_expire = strtotime("+1 year " . $user['seller_expire']);
  172. UserModel::updateBase(['seller_expire' => $seller_expire, 'seller_grade' => 2], ['user_id' => $user['user_id']]);
  173. }
  174. }
  175. if($total_pay_price>=$grade_two){//升级为超级推荐官
  176. $seller_expire = strtotime("+1 year");
  177. UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>3],['user_id'=>$user['user_id']]);
  178. }
  179. break;
  180. case 3:
  181. if($total_pay_price<$grade_one || $total_pay_price<$grade_two){
  182. if($user['seller_expire']-time()<86400){//小于1天,降级为高级推荐官并重置过期时间
  183. $seller_expire = strtotime("+1 year");
  184. UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>2],['user_id'=>$user['user_id']]);
  185. }
  186. }
  187. if($total_pay_price>=$grade_two){
  188. if($user['seller_expire']-time()<86400) {//小于1天,延长超级推荐官的过期时间
  189. $seller_expire = strtotime("+1 year");
  190. UserModel::updateBase(['seller_expire' => $seller_expire, 'seller_grade' => 3], ['user_id' => $user['user_id']]);
  191. }
  192. }
  193. break;
  194. }
  195. }
  196. }
  197. /**
  198. * 探索、体验详情
  199. * @param string $key
  200. * @return array
  201. * @throws \think\db\exception\DataNotFoundException
  202. * @throws \think\db\exception\DbException
  203. * @throws \think\db\exception\ModelNotFoundException
  204. */
  205. public function explores(string $type)
  206. {
  207. $values = ExploreSet::getItem($type);
  208. if (empty($values)){
  209. return $this->renderSuccess(compact('values'));
  210. }
  211. $values['preview_url'] = $values['ali_url'].'?x-oss-process=video/snapshot,t_1000,m_fast';
  212. return $this->renderSuccess(compact('values'));
  213. }
  214. }