ShopForm.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\admin\models;
  8. use app\models\District;
  9. use app\models\Md;
  10. use app\models\Shop;
  11. use app\models\User;
  12. use yii\base\Model;
  13. class ShopForm extends Model
  14. {
  15. public $id;
  16. public $store_id;
  17. public $user_id;
  18. public $mch_id;
  19. public $name;
  20. public $mobile;
  21. public $address;
  22. public $is_delete;
  23. public $longitude;
  24. public $latitude;
  25. public $score;
  26. public $cover_url;
  27. public $pic_url;
  28. public $shop_time;
  29. public $content;
  30. public $is_default;
  31. public $is_dada;
  32. public $business;
  33. public $city_name;
  34. public $area_name;
  35. public $contact_name;
  36. public $source_id;
  37. public $is_uu;
  38. public $province;
  39. public $city;
  40. public $district;
  41. public $shop_audit;
  42. public $refuse_desc;
  43. //搜索
  44. public $search_key;
  45. public $shop_audit_status;
  46. const SCENARIO_ADD = 'add';
  47. const SCENARIO_EDIT = 'edit';
  48. const SCENARIO_DEL = 'del';
  49. const SCENARIO_AUDIT = 'audit';
  50. const SCENARIO_LIST = 'list';
  51. /**
  52. * {@inheritdoc}
  53. */
  54. public function rules()
  55. {
  56. return [
  57. [['store_id', 'is_delete', 'score', 'is_default', 'is_dada', 'is_uu', 'business', 'source_id', 'province', 'city', 'district', 'user_id', 'shop_audit'], 'integer'],
  58. [['longitude', 'latitude', 'cover_url', 'pic_url', 'content', 'city_name', 'area_name', 'contact_name'], 'string'],
  59. [['name', 'mobile', 'address', 'shop_time', 'refuse_desc'], 'string', 'max' => 255],
  60. ['is_delete', 'default', 'value' => Shop::IS_DELETE_NO],
  61. ['shop_audit', 'default', 'value' => Shop::SHOP_AUDIT_YES],
  62. // 操作
  63. [['name', 'mobile', 'longitude', 'latitude', 'shop_time', 'content'], 'required', 'on' => [self::SCENARIO_ADD, self::SCENARIO_EDIT]],
  64. [['id'], 'required', 'on' => [self::SCENARIO_DEL, self::SCENARIO_EDIT]],
  65. ['id', 'string', 'on' => self::SCENARIO_DEL],
  66. [['id', 'shop_audit'], 'required', 'on' => self::SCENARIO_AUDIT],
  67. [['search_key', 'shop_audit_status'], 'string', 'on' => self::SCENARIO_LIST]
  68. ];
  69. }
  70. /**
  71. * {@inheritdoc}
  72. */
  73. public function attributeLabels()
  74. {
  75. return [
  76. 'id' => 'ID',
  77. 'store_id' => 'Store ID',
  78. 'user_id' => '用户id',
  79. 'name' => 'Name',
  80. 'mobile' => 'Mobile',
  81. 'address' => 'Address',
  82. 'is_delete' => 'Is Delete',
  83. 'longitude' => 'Longitude',
  84. 'latitude' => 'Latitude',
  85. 'score' => '评分 1~5',
  86. 'cover_url' => '自提点大图',
  87. 'pic_url' => '自提点小图',
  88. 'shop_time' => '营业时间',
  89. 'content' => '自提点介绍',
  90. 'is_default' => '是否设为默认 0--否 1--是 (只能设置一个自提点为默认自提点)',
  91. 'is_dada' => '是否同步到达达(0、不同步,1、同步)',
  92. 'business' => '达达业务类型',
  93. 'city_name' => '达达城市名称',
  94. 'area_name' => '达达区域名称',
  95. 'contact_name' => '达达联系姓名',
  96. 'source_id' => '达达商户id',
  97. 'is_uu' => '是否同步到UU(0、不同步,1、同步)',
  98. 'province' => '省份',
  99. 'city' => '城市',
  100. 'district' => '区县',
  101. 'shop_audit' => '审核状态(-1未通过,0待审核,1通过)',
  102. 'refuse_desc' => '拒接原因',
  103. ];
  104. }
  105. public function scenarios()
  106. {
  107. $scenarios = parent::scenarios();
  108. return $scenarios;
  109. }
  110. public function saveShop()
  111. {
  112. if ($this->validate()) {
  113. $t = \Yii::$app->db->beginTransaction();
  114. $is_default = null;
  115. $user_id = 0;
  116. $audit_status = 0;
  117. $refuse_desc = null;
  118. if ($this->scenario == self::SCENARIO_EDIT) {
  119. $model = Shop::findOne(['id' => $this->id]);
  120. $is_default = $model->is_default;
  121. $user_id = $model->user_id;
  122. $audit_status = $model->shop_audit;
  123. $refuse_desc = $model->refuse_desc;
  124. } else {
  125. $model = new Shop();
  126. }
  127. $this->content = str_replace('&nbsp;', ' ', $this->content);
  128. $this->content = str_replace('&amp;nbsp;', ' ', $this->content);
  129. $this->city_name = District::getDistrict($this->city)->name;
  130. $this->area_name = District::getDistrict($this->district)->name;
  131. $this->is_default = $is_default == 1 ? 1 : 0;
  132. $this->user_id = $user_id;
  133. $this->refuse_desc = $refuse_desc;
  134. $this->shop_audit = $audit_status;
  135. $model->attributes = $this->attributes;
  136. if (!$model->save()) {
  137. $t->rollBack();
  138. return [
  139. 'code' => 1,
  140. 'msg' => $model->errors[0]
  141. ];
  142. }
  143. $t->commit();
  144. return [
  145. 'code' => 0,
  146. 'msg' => '保存成功'
  147. ];
  148. } else {
  149. // 验证失败:$errors 是一个包含错误信息的数组
  150. return [
  151. 'code' => 1,
  152. "msg" => $this->getErrorSummary(false)[0]
  153. ];
  154. }
  155. }
  156. public function searchShop()
  157. {
  158. $query = Md::find();
  159. $query->where(['store_id' => get_store_id(), 'is_delete' => MD::IS_DELETE_NO, 'open_status' => 1])->orderBy("id desc");
  160. // 搜索
  161. $this->search_key = $this->search_key ?? $this->name;
  162. if ($this->search_key) {
  163. $query->andWhere(['like', 'name', $this->search_key]);
  164. }
  165. if (isset($this->shop_audit_status) && (int)$this->shop_audit_status > -2) {
  166. $query->andWhere(['shop_audit' => (int)$this->shop_audit_status]);
  167. }
  168. $list = pagination_make($query);
  169. foreach ($list['list'] as &$val) {
  170. $val['created_at'] = date('Y-m-d H:i:s', $val['created_at']);
  171. }
  172. return [
  173. 'code' => 0,
  174. 'msg' => 'success',
  175. 'data' => [
  176. 'data' => $list['list'],
  177. 'pageNo' => $list['pageNo'],
  178. 'totalCount' => $list['totalCount']
  179. ]
  180. ];
  181. }
  182. public function delShop()
  183. {
  184. if ($this->validate()) {
  185. $t = \Yii::$app->db->beginTransaction();
  186. if ($this->scenario !== self::SCENARIO_DEL) {
  187. return [
  188. 'code' => 1,
  189. 'msg' => '删除失败'
  190. ];
  191. }
  192. $model = Shop::findOne(['id' => $this->id]);
  193. $model->is_delete = Shop::IS_DELETE_YES;
  194. if (!$model || !$model->save()) {
  195. $t->rollBack();
  196. return [
  197. 'code' => 1,
  198. 'msg' => $model->getErrorSummary(false)[0]
  199. ];
  200. }
  201. $t->commit();
  202. return [
  203. 'code' => 0,
  204. 'msg' => '删除成功'
  205. ];
  206. // 所有输入数据都有效 all inputs are valid
  207. } else {
  208. // 验证失败:$errors 是一个包含错误信息的数组
  209. return [
  210. 'code' => 1,
  211. "msg" => $this->getErrorSummary(false)[0]
  212. ];
  213. }
  214. }
  215. public function auditShop()
  216. {
  217. if ($this->validate()) {
  218. $t = \Yii::$app->db->beginTransaction();
  219. if ($this->scenario !== self::SCENARIO_AUDIT) {
  220. return [
  221. 'code' => 1,
  222. 'msg' => '操作失败'
  223. ];
  224. }
  225. $model = Shop::findOne(['id' => $this->id]);
  226. if (!$model || !in_array($this->shop_audit, [$model::SHOP_AUDIT_NO, $model::SHOP_AUDIT_YES])) {
  227. return [
  228. 'code' => 1,
  229. 'msg' => '操作失败'
  230. ];
  231. }
  232. if ($this->shop_audit == $model::SHOP_AUDIT_NO && empty($this->refuse_desc)) {
  233. return [
  234. 'code' => 1,
  235. 'msg' => '拒绝原因必须'
  236. ];
  237. }
  238. $model->shop_audit = $this->shop_audit;
  239. if ($model->user_id > 0) {
  240. $user = User::findOne(['id' => $model->user_id]);
  241. if ($model->shop_audit == $model::SHOP_AUDIT_YES) {
  242. $user->is_clerk = 1;
  243. $user->shop_id = $model->id;
  244. } else {
  245. $user->is_clerk = 0;
  246. $user->shop_id = 0;
  247. }
  248. $user->save();
  249. }
  250. $model->refuse_desc = $this->refuse_desc ?: '';
  251. if (!$model || !$model->save()) {
  252. $t->rollBack();
  253. return [
  254. 'code' => 1,
  255. 'msg' => $model->getErrorSummary(false)[0]
  256. ];
  257. }
  258. $t->commit();
  259. return [
  260. 'code' => 0,
  261. 'msg' => $this->id
  262. ];
  263. // 所有输入数据都有效 all inputs are valid
  264. } else {
  265. // 验证失败:$errors 是一个包含错误信息的数组
  266. return [
  267. 'code' => 1,
  268. "msg" => $this->getErrorSummary(false)[0]
  269. ];
  270. }
  271. }
  272. /**
  273. * Undocumented function
  274. *
  275. * @Author LGL 24963@qq.com
  276. * @DateTime 2021-01-15
  277. * @desc: 获取自提点列表
  278. */
  279. public static function getShopList()
  280. {
  281. return Shop::find()->where(['store_id' => get_store_id(), 'is_delete' => Shop::IS_DELETE_NO])->orderBy('id desc')->select('*')->asArray()->all();
  282. }
  283. }