Pickup.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. namespace addons\pickup;
  3. use app\common\library\Menu;
  4. use think\Addons;
  5. use think\Loader;
  6. use think\Db;
  7. use think\Exception;
  8. /**
  9. * 插件
  10. */
  11. class Pickup extends Addons
  12. {
  13. /**
  14. * 插件安装方法
  15. * @return bool
  16. */
  17. public function install()
  18. {
  19. $menu=[];
  20. $config_file= ADDON_PATH ."pickup" . DS.'config'.DS. "menu.php";
  21. if (is_file($config_file)) {
  22. $menu = include $config_file;
  23. }
  24. if($menu){
  25. Menu::create($menu);
  26. }
  27. return true;
  28. }
  29. /**
  30. * 插件卸载方法
  31. * @return bool
  32. */
  33. public function uninstall()
  34. {
  35. $info=get_addon_info('pickup');
  36. Menu::delete(isset($info['first_menu'])?$info['first_menu']:'pickup');
  37. return true;
  38. }
  39. /**
  40. * 插件启用方法
  41. */
  42. public function enable()
  43. {
  44. $info=get_addon_info('pickup');
  45. Menu::enable(isset($info['first_menu'])?$info['first_menu']:'pickup');
  46. }
  47. /**
  48. * 插件禁用方法
  49. */
  50. public function disable()
  51. {
  52. $info=get_addon_info('pickup');
  53. Menu::disable(isset($info['first_menu'])?$info['first_menu']:'pickup');
  54. }
  55. /**
  56. * 添加命名空间
  57. */
  58. public function appInit()
  59. {
  60. if (!class_exists('\BaconQrCode\Writer')) {
  61. Loader::addNamespace('BaconQrCode', ADDON_PATH . 'pickup' . DS . 'library' . DS . 'BaconQrCode' . DS);
  62. }
  63. if (!class_exists('\Endroid\QrCode\QrCode')) {
  64. Loader::addNamespace('Endroid', ADDON_PATH . 'pickup' . DS . 'library' . DS . 'Endroid' . DS);
  65. }
  66. if (!class_exists('\MyCLabs\Enum\Enum')) {
  67. Loader::addNamespace('MyCLabs', ADDON_PATH . 'pickup' . DS . 'library' . DS . 'MyCLabs' . DS);
  68. }
  69. if (!class_exists('\DASPRiD\Enum\EnumMap')) {
  70. Loader::addNamespace('DASPRiD', ADDON_PATH . 'pickup' . DS . 'library' . DS . 'DASPRiD' . DS);
  71. }
  72. }
  73. //插件升级
  74. public function doUpgrade() {
  75. $prefix = Config::get('database.prefix');
  76. $haTable = Db::query('SHOW TABLES LIKE '."'{$prefix}pickup_cardcode'");
  77. if(!$haTable){
  78. //数据表不存在,表示是安装动作,非升级动作
  79. return;
  80. }
  81. //<editor-fold desc="1.0.3版本更新数据表字段" defaultstate="collapsed">
  82. /**
  83. * 1.检测pickup_cardcode表是否需要更新,如果需要则更新pickup_cardcode表
  84. */
  85. $sql = "describe `{$prefix}pickup_cardcode` `usedtime`;";
  86. $need_alter_field = Db::query($sql);
  87. if ($need_alter_field&&$need_alter_field[0]['Type']=='int(10)') {//pickup_cardcode
  88. Db::startTrans();
  89. try {
  90. //3.原有字段更新
  91. $sql = "ALTER TABLE `{$prefix}pickup_cardcode`
  92. MODIFY COLUMN `createtime` bigint(11) NOT NULL DEFAULT 0 COMMENT '添加时间' AFTER `card_status`,
  93. MODIFY COLUMN `usedtime` bigint(11) NOT NULL DEFAULT 0 COMMENT '使用时间' AFTER `createtime`;";
  94. Db::execute($sql);
  95. Db::commit();
  96. } catch (Exception $e) {
  97. \think\Log::write("更新{$prefix}pickup_cardcode表字段失败,异常:" . $e->getTraceAsString());
  98. Db::rollback();
  99. }
  100. }
  101. /**
  102. * 2.检测pickup_order表是否需要更新,如果需要则更新pickup_order表
  103. */
  104. $sql = "describe `{$prefix}pickup_order` `ship_date`;";
  105. $need_alter_field = Db::query($sql);
  106. if ($need_alter_field&&$need_alter_field[0]['Type']=='int(10)') {//pickup_order
  107. Db::startTrans();
  108. try {
  109. //3.原有字段更新
  110. $sql = "ALTER TABLE `{$prefix}pickup_order`
  111. MODIFY COLUMN `gift_goods_title` varchar(5000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '礼品名称' AFTER `gift_goods_ids`,
  112. MODIFY COLUMN `gift_goods_image` varchar(5000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '礼品图片' AFTER `gift_goods_title`;
  113. MODIFY COLUMN `ship_date_expected` bigint(11) NOT NULL DEFAULT 0 COMMENT '预约发货日期' AFTER `address`,
  114. MODIFY COLUMN `createtime` bigint(11) NOT NULL DEFAULT 0 COMMENT '下单时间' AFTER `card_id`,
  115. MODIFY COLUMN `ship_date` bigint(11) NOT NULL DEFAULT 0 COMMENT '发货时间' AFTER `kd_number`;";
  116. Db::execute($sql);
  117. Db::commit();
  118. } catch (Exception $e) {
  119. \think\Log::write("更新{$prefix}pickup_order表字段失败,异常:" . $e->getTraceAsString());
  120. Db::rollback();
  121. }
  122. }
  123. /**
  124. * 3.检测pickup_package表是否需要更新,如果需要则更新pickup_cardcode表
  125. */
  126. $sql = "describe `{$prefix}pickup_package` `start_time`;";
  127. $need_alter_field = Db::query($sql);
  128. if ($need_alter_field&&$need_alter_field[0]['Type']=='int(10)') {//pickup_package
  129. Db::startTrans();
  130. try {
  131. //3.原有字段更新
  132. $sql = "ALTER TABLE `{$prefix}pickup_package`
  133. MODIFY COLUMN `start_time` bigint(11) NOT NULL DEFAULT 0 COMMENT '活动开始时间' AFTER `status`,
  134. MODIFY COLUMN `end_time` bigint(11) NOT NULL DEFAULT 0 COMMENT '活动结束时间' AFTER `start_time`,
  135. MODIFY COLUMN `createtime` bigint(11) NOT NULL DEFAULT 0 COMMENT '创建时间' AFTER `goods_list`;";
  136. Db::execute($sql);
  137. Db::commit();
  138. } catch (Exception $e) {
  139. \think\Log::write("更新{$prefix}pickup_package表字段失败,异常:" . $e->getTraceAsString());
  140. Db::rollback();
  141. }
  142. }
  143. //</editor-fold>
  144. }
  145. }