Clerk.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <?php
  2. namespace addons\Store\common\global_func;
  3. use addons\Clerk\common\models\ClerkUser;
  4. use addons\ElectronCoupon\common\models\ElectronCoupon;
  5. use addons\ElectronCoupon\common\models\ElectronCouponCode;
  6. use addons\ElectronCoupon\common\models\ElectronCouponUserCoupon;
  7. use addons\PlatformStoreClerk\common\models\PlatformStoreClerkOrderDetail;
  8. use addons\Store\addons\Verification\common\models\StoreVerificationCoupons;
  9. use addons\Store\addons\Verification\common\models\StoreVerificationCouponsUser;
  10. use addons\Store\common\models\Store;
  11. use addons\Store\common\models\StoreClerk;
  12. use addons\Store\common\models\StoreClerkLog;
  13. use addons\Store\common\models\StoreOrder;
  14. use common\enums\ClerkEnum;
  15. use common\enums\StatusEnum;
  16. use common\models\mall\MallAddons;
  17. use common\models\user\User;
  18. class Clerk
  19. {
  20. public static function clerk($params)
  21. {
  22. if (empty($params['clerk_code']) || empty($params['mall_id']) || empty($params['user_id']) || empty($params['method'])) {
  23. return [];
  24. }
  25. $clerk_code = (string)$params['clerk_code'];
  26. $clerk_code_pre = $clerk_code[0] . $clerk_code[1];
  27. switch ($clerk_code_pre) {
  28. case ClerkEnum::O2O_SELF_PICKUP_ORDERS_CLERK_CODE_PRE:
  29. switch ($params['method']) {
  30. case "get":
  31. return StoreOrder::getStoreSelfPickupOrderClerkData($params);
  32. case "post":
  33. return StoreOrder::storeSelfPickupOrderClerk($params);
  34. }
  35. break;
  36. case ClerkEnum::ELECTRON_COUPON_CLERK_CODE_PRE:
  37. if (!MallAddons::isInstall($params['mall_id'], 'ElectronCoupon')) {
  38. return [];
  39. }
  40. $params['code'] = $params['clerk_code'];
  41. switch ($params['method']) {
  42. case "get":
  43. $e_coupon_code = ElectronCouponCode::findOne(['code' => $params['code']]);
  44. if (empty($e_coupon_code)) {
  45. throw new \Exception('该核销码不存在');
  46. }
  47. $e_coupon_user_coupon = ElectronCouponUserCoupon::findOne(['id' => $e_coupon_code['user_e_coupon_id']]);
  48. $e_coupon = ElectronCoupon::findOne(['id' => $e_coupon_user_coupon['e_coupon_id']]);
  49. $data['pic'] = $e_coupon['pic'];
  50. $data['name'] = $e_coupon['name'];
  51. $data['money'] = $e_coupon['price'];
  52. $data['clerk_nums'] = $e_coupon_code['amount'];
  53. return $data;
  54. case "post":
  55. $user = User::findOne(['id' => $params['user_id']]);
  56. $clerk = ClerkUser::getOne([
  57. ['mall_id' => $params['mall_id']],
  58. ['user_id' => $params['user_id']],
  59. ['status' => StatusEnum::ENABLED]], true, [], [], 'id,user_id,store_id,mall_id');
  60. if (empty($clerk)) {
  61. throw new \Exception('您不是核销员');
  62. }
  63. $params['store_id'] = $clerk['store_id'];
  64. $params['clerk_id'] = $clerk['id'];
  65. $params['mobile'] = $user['mobile'] ?? '';
  66. $params['clerk_admin_id'] = $params['user_id'];
  67. $params['clerk_user_id'] = $params['user_id'];
  68. $result = ElectronCouponCode::doClerkCode($params);
  69. if ($result == false) {
  70. throw new \Exception(ElectronCouponCode::getStaticError());
  71. }
  72. return $result;
  73. }
  74. break;
  75. case ClerkEnum::O2O_STORE_CLERK_COUPON_CODE_PRE:
  76. switch ($params['method']) {
  77. case "get":
  78. $coupon_user = StoreVerificationCouponsUser::findOne(['mall_id' => $params['mall_id'], 'clerk_code' => $params['clerk_code']]);
  79. if (empty($coupon_user)) {
  80. throw new \Exception('核销券不存在');
  81. }
  82. $coupon = StoreVerificationCoupons::findOne(['id' => $coupon_user['coupon_id'], 'status' => StatusEnum::ENABLED]);
  83. if (empty($coupon)) {
  84. throw new \Exception('核销券不存在或已删除');
  85. }
  86. $store = Store::findOne($coupon_user['store_id']);
  87. $returnData = [];
  88. $returnData['detail'] = [
  89. 'name' => $coupon['name'],
  90. 'num' => $coupon_user['num'],
  91. 'used_num' => $coupon_user['used_num'],
  92. 'logo_img' => $store['logo_img'],
  93. 'store_name' => $store['store_name'],
  94. 'start_at' => date('Y-m-d H:i:s', $coupon['start_at']),
  95. 'end_at' => date('Y-m-d H:i:s', $coupon['end_at']),
  96. ];
  97. return $returnData;
  98. case "post":
  99. $store_clerk = StoreClerk::findOne(['user_id' => $params['user_id']]);
  100. $params['clerk_id'] = $store_clerk['id'] ?? 0;
  101. return StoreClerkLog::clerkStoreVerificationByClerkCode($params);
  102. }
  103. break;
  104. case ClerkEnum::PLATFORM_ORDER_BY_O2O_STORE_CLERK_CODE_PRE:
  105. switch ($params['method']) {
  106. case "get":
  107. $clerk_detail = PlatformStoreClerkOrderDetail::getOrderByCode($params['mall_id'], $params['clerk_code']);
  108. if (!$clerk_detail) {
  109. throw new \Exception('该订单不存在');
  110. }
  111. if ($clerk_detail['clerk_status'] > 0) {
  112. throw new \Exception('该订单已核销');
  113. }
  114. $params['order_id'] = $clerk_detail['order_id'];
  115. $params['goods_id'] = $clerk_detail['goods_id'];
  116. $params['order_detail_id'] = $clerk_detail['order_detail_id'];
  117. return StoreClerkLog::getPlatformStoreOrderDetail($params);
  118. case "post":
  119. return StoreClerkLog::clerkPlatformStoreOrderDetail($params);
  120. }
  121. break;
  122. default:
  123. return [];
  124. }
  125. }
  126. public static function clerkDetail($params)
  127. {
  128. if (empty($params['clerk_log_id']) || empty($params['mall_id']) || empty($params['user_id']) || empty($params['type'])) {
  129. return [];
  130. }
  131. $clerk_code_pre = $params['type'];
  132. switch ($clerk_code_pre) {
  133. case ClerkEnum::O2O_SELF_PICKUP_ORDERS_CLERK_CODE_PRE:
  134. return StoreOrder::getClerkLogDetail($params);
  135. case ClerkEnum::ELECTRON_COUPON_CLERK_CODE_PRE:
  136. if (!MallAddons::isInstall($params['mall_id'], 'ElectronCoupon')) {
  137. return [];
  138. }
  139. $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]);
  140. $params['code'] = $clerk_log_model['clerk_code'];
  141. $extra = json_decode($clerk_log_model['extra'],true);
  142. $e_coupon = ElectronCoupon::findOne(['id' => $extra['e_coupon_id']]);
  143. $data['pic'] = $e_coupon['pic'];
  144. $data['name'] = $e_coupon['name'];
  145. $data['money'] = $e_coupon['price'];
  146. return $data;
  147. case ClerkEnum::O2O_STORE_CLERK_COUPON_CODE_PRE:
  148. $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]);
  149. $extra = json_decode($clerk_log_model['extra'],true);
  150. $coupon_user = StoreVerificationCouponsUser::findOne(['mall_id' => $params['mall_id'], 'clerk_code' => $extra['store_verification_coupons_user_id']]);
  151. if (empty($coupon_user)) {
  152. throw new \Exception('核销券不存在');
  153. }
  154. $coupon = StoreVerificationCoupons::findOne(['id' => $coupon_user['coupon_id'], 'status' => StatusEnum::ENABLED]);
  155. if (empty($coupon)) {
  156. throw new \Exception('核销券不存在或已删除');
  157. }
  158. $store = Store::findOne($coupon_user['store_id']);
  159. $returnData = [];
  160. $returnData['detail'] = [
  161. 'name' => $coupon['name'],
  162. 'num' => $coupon_user['num'],
  163. 'used_num' => $coupon_user['used_num'],
  164. 'logo_img' => $store['logo_img'],
  165. 'store_name' => $store['store_name'],
  166. 'start_at' => date('Y-m-d H:i:s', $coupon['start_at']),
  167. 'end_at' => date('Y-m-d H:i:s', $coupon['end_at']),
  168. ];
  169. return $returnData;
  170. case ClerkEnum::PLATFORM_ORDER_BY_O2O_STORE_CLERK_CODE_PRE:
  171. $clerk_log_model = \common\models\common\ClerkLog::findOne(['id' => $params['clerk_log_id'], 'mall_id' => $params['mall_id'], 'user_id' => $params['user_id'], 'type' => $params['type']]);
  172. $extra = json_decode($clerk_log_model['extra'],true);
  173. $clerk_detail = PlatformStoreClerkOrderDetail::find()->where(['id'=>$extra['platform_store_clerk_order_detail_id']])->asArray()->one();
  174. if (!$clerk_detail) {
  175. throw new \Exception('该订单不存在');
  176. }
  177. $params['order_id'] = $clerk_detail['order_id'];
  178. $params['goods_id'] = $clerk_detail['goods_id'];
  179. $params['order_detail_id'] = $clerk_detail['order_detail_id'];
  180. $params['clerk_code'] = $clerk_log_model['clerk_code'];
  181. return StoreClerkLog::getPlatformStoreOrderDetail($params);
  182. default:
  183. return [];
  184. }
  185. }
  186. }