ExpressTemplate.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\express;
  11. use think\facade\Cache;
  12. use app\model\BaseModel;
  13. /**
  14. * 运费模板
  15. */
  16. class ExpressTemplate extends BaseModel
  17. {
  18. /**
  19. * 添加运费模板(控制每个站点最多10条)
  20. * @param $data
  21. * @param $items
  22. * @param $shipping_items
  23. * @return array
  24. */
  25. public function addExpressTemplate($data, $items, $shipping_items)
  26. {
  27. $count = model('express_template')->getCount([ 'site_id' => $data[ 'site_id' ] ]);
  28. if ($count >= 10) {
  29. return $this->error('', 'TEMPLATE_TO_LONG');
  30. }
  31. if ($data[ 'is_default' ] == 1) {
  32. model('express_template')->update([ 'is_default' => 0 ], [ 'site_id' => $data[ 'site_id' ] ]);
  33. }
  34. if (empty($data[ 'appoint_free_shipping' ])) {
  35. $data[ 'shipping_surplus_area_ids' ] = '';
  36. $shipping_items = [];
  37. }
  38. //模板基础信息
  39. $data[ 'create_time' ] = time();
  40. $template_id = model('express_template')->add($data);
  41. //具体模板信息
  42. foreach ($items as $k => $v) {
  43. $data_item = $v;
  44. $data_item[ 'template_id' ] = $template_id;
  45. $data_item[ 'fee_type' ] = $data[ 'fee_type' ];
  46. if ($data_item[ 'area_ids' ] && $data_item[ 'area_names' ]) {
  47. model('express_template_item')->add($data_item);
  48. }
  49. }
  50. foreach ($shipping_items as $k => $v) {
  51. $data_item = $v;
  52. $data_item[ 'template_id' ] = $template_id;
  53. if ($data_item[ 'area_ids' ] && $data_item[ 'area_names' ]) {
  54. model('express_template_free_shipping')->add($data_item);
  55. }
  56. }
  57. return $this->success($template_id);
  58. }
  59. /**
  60. * 修改系统运费模板
  61. * @param $data
  62. * @param $items
  63. * @param $shipping_items
  64. * @return array
  65. */
  66. public function editExpressTemplate($data, $items, $shipping_items)
  67. {
  68. //设置默认
  69. if ($data[ 'is_default' ] == 1) {
  70. model('express_template')->update([ 'is_default' => 0 ], [ 'site_id' => $data[ 'site_id' ] ]);
  71. }
  72. $data[ 'modify_time' ] = time();
  73. $res = model('express_template')->update($data, [ [ 'template_id', '=', $data[ 'template_id' ] ] ]);
  74. if (empty($data[ 'appoint_free_shipping' ])) {
  75. $data[ 'shipping_surplus_area_ids' ] = '';
  76. $shipping_items = [];
  77. }
  78. //具体模板信息
  79. model('express_template_item')->delete([ [ 'template_id', '=', $data[ 'template_id' ] ] ]);
  80. foreach ($items as $k => $v) {
  81. $data_item = $v;
  82. $data_item[ 'template_id' ] = $data[ 'template_id' ];
  83. $data_item[ 'fee_type' ] = $data[ 'fee_type' ];
  84. if ($data_item[ 'area_ids' ] && $data_item[ 'area_names' ]) {
  85. model('express_template_item')->add($data_item);
  86. }
  87. }
  88. //具体模板信息
  89. model('express_template_free_shipping')->delete([ [ 'template_id', '=', $data[ 'template_id' ] ] ]);
  90. foreach ($shipping_items as $k => $v) {
  91. $data_item = $v;
  92. $data_item[ 'template_id' ] = $data[ 'template_id' ];
  93. if ($data_item[ 'area_ids' ] && $data_item[ 'area_names' ]) {
  94. model('express_template_free_shipping')->add($data_item);
  95. }
  96. }
  97. return $this->success($res);
  98. }
  99. /**
  100. * 删除系统运费模板
  101. * @param int $template_id
  102. */
  103. public function deleteExpressTemplate($template_id, $site_id)
  104. {
  105. $res = model('express_template')->delete([ [ 'template_id', 'in', $template_id ], [ 'site_id', '=', $site_id ] ]);
  106. if ($res) {
  107. model('express_template_item')->delete([ [ 'template_id', 'in', $template_id ] ]);
  108. model('express_template_free_shipping')->delete([ [ 'template_id', 'in', $template_id ] ]);
  109. }
  110. return $this->success($res);
  111. }
  112. /**
  113. * 设置默认运费模板
  114. * @param int $template_id
  115. */
  116. public function updateDefaultExpressTemplate($template_id, $is_default, $site_id)
  117. {
  118. if ($is_default == 1) {
  119. model('express_template')->update([ 'is_default' => 0 ], [ 'site_id' => $site_id ]);
  120. }
  121. $res = model('express_template')->update([ 'is_default' => 1 ], [ 'template_id' => $template_id ]);
  122. return $this->success($res);
  123. }
  124. /**
  125. * 获取运费模板信息
  126. * @param $template_id
  127. * @param $site_id
  128. * @return array
  129. */
  130. public function getExpressTemplateInfo($template_id, $site_id)
  131. {
  132. $res = model('express_template')->getInfo([ [ 'template_id', '=', $template_id ], [ 'site_id', '=', $site_id ] ], 'template_id, site_id, template_name, fee_type, create_time, modify_time, is_default, surplus_area_ids, appoint_free_shipping, shipping_surplus_area_ids');
  133. if ($res) {
  134. $res[ 'template_item' ] = model('express_template_item')->getList([ [ 'template_id', '=', $template_id ] ], '*');
  135. $res[ 'shipping_template_item' ] = model('express_template_free_shipping')->getList([ [ 'template_id', '=', $template_id ] ], '*');
  136. }
  137. return $this->success($res);
  138. }
  139. /**
  140. * 获取默认运费模板
  141. * @param $site_id
  142. * @return array
  143. */
  144. public function getDefaultTemplate($site_id)
  145. {
  146. $res = model('express_template')->getInfo([ [ 'is_default', '=', 1 ], [ 'site_id', '=', $site_id ] ], 'template_id, site_id, template_name, fee_type, create_time, modify_time, is_default');
  147. if ($res) {
  148. $res[ 'template_item' ] = model('express_template_item')->getList([ [ 'template_id', '=', $res[ 'template_id' ] ] ], '*');
  149. $res[ 'shipping_template_item' ] = model('express_template_free_shipping')->getList([ [ 'template_id', '=', $res[ 'template_id' ] ] ], '*');
  150. }
  151. return $this->success($res);
  152. }
  153. /**
  154. * 获取运费模板列表(主表查询)
  155. * @param array $condition
  156. * @param string $field
  157. * @param string $order
  158. * @param string $limit
  159. */
  160. public function getExpressTemplateList($condition = [], $field = 'template_id, site_id, template_name, fee_type, create_time, modify_time, is_default', $order = '', $limit = null)
  161. {
  162. $list = model('express_template')->getList($condition, $field, $order, '', '', '', $limit);
  163. return $this->success($list);
  164. }
  165. /**
  166. * 获取运费模板列表(主表查询)
  167. * @param array $condition
  168. * @param string $field
  169. * @param string $order
  170. * @param string $limit
  171. */
  172. public function getExpressTemplatePageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = 'template_id, site_id, template_name, fee_type, create_time, modify_time, is_default')
  173. {
  174. $list = model('express_template')->pageList($condition, $field, $order, $page, $page_size);
  175. return $this->success($list);
  176. }
  177. /**
  178. * 获取运费模板地域运费列表(主表查询)
  179. * @param array $condition
  180. * @param string $field
  181. * @param string $order
  182. * @param string $limit
  183. */
  184. public function getExpressTemplateItemList($condition = [], $field = '*', $order = '', $limit = null)
  185. {
  186. $data = json_encode([ $condition, $field, $order, $limit ]);
  187. $cache = Cache::get("express_template_getExpressTemplateItemList_" . $data);
  188. if (!empty($cache)) {
  189. return $this->success($cache);
  190. }
  191. $list = model('express_template_item')->getList($condition, $field, $order, '', '', '', $limit);
  192. Cache::tag("express_template_")->set("express_template_getExpressTemplateItemList_" . $data, $list);
  193. return $this->success($list);
  194. }
  195. }