UpgradeController.php 63 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082
  1. <?php
  2. namespace console\controllers;
  3. use biz\goods\services\GoodsCategoryService;
  4. use biz\goods\services\GoodsService;
  5. use biz\goods\services\GoodsStyleService;
  6. use biz\merchant\services\MerchantCapitalService;
  7. use biz\merchant\services\MerchantExtendService;
  8. use biz\order\services\OrderGoodsService;
  9. use biz\order\services\OrderService;
  10. use biz\stat\services\StatIncomeMonthService;
  11. use biz\stat\services\StatIncomeSourceMonthService;
  12. use biz\stat\services\StatOrderMonthService;
  13. use biz\stat\services\StatOrderService;
  14. use biz\user\services\UserAssetService;
  15. use biz\user\services\UserCapitalService;
  16. use biz\user\services\UserGrowthService;
  17. use biz\user\services\UserService;
  18. use common\components\dirUtil;
  19. use common\components\util;
  20. use common\services\xhMerchantService;
  21. use common\services\xhWxMenuService;
  22. use Yii;
  23. use yii\console\Controller;
  24. class UpgradeController extends Controller
  25. {
  26. //正式环境 shish
  27. //yii upgrade/init 2
  28. public function actionInit($num = 0)
  29. {
  30. if (getenv('YII_ENV') == 'dev') {
  31. util::stop('开发环境不允许再初始化');
  32. }
  33. //更新积分 shish 2019.11.22
  34. $sql = "ALTER TABLE xhUserAsset ADD growth INT NOT NULL DEFAULT 0 COMMENT '成长值' AFTER `point`;";
  35. $sql .= "UPDATE `xhUserAsset` SET `growth`=`integral`;";
  36. Yii::$app->db->createCommand($sql)->execute();
  37. //shish 2019.11.23
  38. $sql = "DROP TABLE IF EXISTS xhAuth;
  39. CREATE TABLE xhAuth(
  40. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  41. endId TINYINT NOT NULL DEFAULT 0 COMMENT '业务端,零售1',
  42. parentId INT NOT NULL DEFAULT 0 COMMENT '权限父id',
  43. authName VARCHAR(30) NOT NULL DEFAULT '' COMMENT '权限名称',
  44. front_url VARCHAR(30) NOT NULL DEFAULT '' COMMENT '前端路由',
  45. back_url VARCHAR(30) NOT NULL DEFAULT '' COMMENT '后端路由',
  46. `addTime` INT(11) NOT NULL DEFAULT '0' COMMENT '添加时间'
  47. )COMMENT='各业务端的权限';
  48. DROP TABLE IF EXISTS xhSetAuth;
  49. CREATE TABLE xhSetAuth(
  50. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  51. setId TINYINT NOT NULL DEFAULT 0 COMMENT '套餐id',
  52. endId TINYINT NOT NULL DEFAULT 0 COMMENT '业务端id',
  53. auth VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '权限',
  54. `addTime` INT(11) NOT NULL DEFAULT '0' COMMENT '添加时间'
  55. )COMMENT='套餐在各业务端的权限';
  56. CREATE TABLE xhAdminRoleAuth(
  57. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  58. roleId INT NOT NULL DEFAULT 0 COMMENT '角色id',
  59. auth VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '权限',
  60. `addTime` INT(11) NOT NULL DEFAULT '0' COMMENT '添加时间'
  61. )COMMENT='员工角色权限';";
  62. Yii::$app->db->createCommand($sql)->execute();
  63. $sql = "ALTER TABLE xhAdminRoleAuth ADD endId TINYINT NOT NULL DEFAULT 0 COMMENT '业务端id' AFTER roleId;
  64. ALTER TABLE xhMerchant ADD setId TINYINT NOT NULL DEFAULT 0 COMMENT '套餐id' AFTER `wxRefreshToken`;
  65. ALTER TABLE xhMerchant ADD setDeadline INT NOT NULL DEFAULT 0 COMMENT '套餐到期时间' AFTER `setId`;
  66. ALTER TABLE xhAuth CHANGE front_url frontUrl VARCHAR(30) NOT NULL DEFAULT '' COMMENT '前端路由';
  67. ALTER TABLE xhAuth CHANGE back_url backUrl VARCHAR(30) NOT NULL DEFAULT '' COMMENT '后端路由';
  68. ALTER TABLE xhAdminRole CHANGE authority auth VARCHAR(500) NOT NULL DEFAULT '' COMMENT '权限id列表,存在*表示有所有权限';";
  69. Yii::$app->db->createCommand($sql)->execute();
  70. //!!!!!!!!!!注意第一家全部订单已经完成,并将全部订单置为已完成
  71. $sql = "ALTER TABLE xhOrder MODIFY `status` TINYINT NOT NULL DEFAULT 0 COMMENT '订单状态 0待付款 1待配送 2配送中 3待通知 4已取消 5已完成';";
  72. $sql .= "update xhOrder set `status`=5;";
  73. $sql .= "DROP TABLE IF EXISTS xhCategoryRelate;
  74. ALTER TABLE xhCategory ADD merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id' AFTER parentId;
  75. DROP TABLE IF EXISTS xhGoodsUsage;
  76. DROP TABLE IF EXISTS xhUsage;
  77. DROP TABLE IF EXISTS xhUsageRelation;
  78. DROP TABLE IF EXISTS xhStatIncomeUsage;
  79. DROP TABLE IF EXISTS xhStatIncomeUsageMonth;
  80. ALTER TABLE xhOrder ADD refund TINYINT NOT NULL DEFAULT 0 COMMENT '1已退款 0正常订单,没有退款' AFTER luckyNum;
  81. RENAME TABLE xhGoodsPrice TO xhGoodsStyle;
  82. ALTER TABLE xhGoodsStyle COMMENT '商品款式';
  83. ALTER TABLE xhGoodsStyle ADD goodsId INT NOT NULL DEFAULT 0 COMMENT '商品id' AFTER `id`;
  84. DROP TABLE IF EXISTS `xhGoodsUsage`;
  85. ALTER TABLE xhOrder ADD INDEX merchant(merchantId,`status`);
  86. ALTER TABLE xhOrder ADD INDEX userId(userId,`status`);
  87. ALTER TABLE xhUserAsset ADD inviteNum INT NOT NULL DEFAULT 0 COMMENT '邀请新人数量' AFTER `discount`;
  88. ALTER TABLE xhAdmin MODIFY `password` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '密码';
  89. ALTER TABLE xhAdmin MODIFY `confirmPassword` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '确认密码';
  90. ALTER TABLE `xhUser` ADD INDEX mobile(merchantId,`mobile`);
  91. ALTER TABLE xhUserAsset DROP COLUMN `point`;
  92. ALTER TABLE xhUserAsset MODIFY `integral` INT NOT NULL DEFAULT 0 COMMENT '积分';
  93. ALTER TABLE xhUser MODIFY birthday DATE NOT NULL DEFAULT '0000-00-00' COMMENT '生日';
  94. ALTER TABLE xhUserAsset DROP COLUMN `uniqueQrCode`;
  95. ALTER TABLE xhUserAsset DROP COLUMN `uniqueCode`;
  96. ALTER TABLE xhMerchantExtend ADD gradeSwitch TINYINT NOT NULL DEFAULT 1 COMMENT '会员等级修改开关 0不可再修改 1可修改' AFTER gradeList;
  97. DROP TABLE IF EXISTS `xhUserOldData`;
  98. DROP TABLE IF EXISTS xhUsage;
  99. CREATE TABLE `xhUsage` (
  100. `id` INT(11) NOT NULL,
  101. `usageName` VARCHAR(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用途名称',
  102. `addTime` INT(11) NOT NULL DEFAULT '0' COMMENT '添加时间'
  103. ) COMMENT='商品用途';
  104. INSERT INTO `xhUsage` (`id`, `usageName`, `addTime`) VALUES
  105. (1, '送爱人/恋人', 1567955291),
  106. (2, '开业', 1567955291),
  107. (3, '婚庆', 1567955291),
  108. (4, '家养', 1567955291),
  109. (5, '生日', 1568038612),
  110. (6, '会议', 1568038612),
  111. (7, '送母亲', 1568038612),
  112. (8, '送老师', 1568038612),
  113. (9, '其它', 1568038612);
  114. DROP TABLE IF EXISTS xhAd;
  115. CREATE TABLE IF NOT EXISTS xhAd(
  116. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  117. `adName` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '广告名称',
  118. `merchantId` INT NOT NULL DEFAULT 0 COMMENT '商家id',
  119. `type` TINYINT NOT NULL DEFAULT 0 COMMENT '广告类型 0商城首页轮播图 1门店轮播图',
  120. `style` TINYINT NOT NULL DEFAULT 0 COMMENT '0 url 1商品id',
  121. `url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '链接',
  122. `goodsId` INT NOT NULL DEFAULT 0 COMMENT '商品id',
  123. `startTime` INT NOT NULL DEFAULT 0 COMMENT '开始时间',
  124. `endTime` INT NOT NULL DEFAULT 0 COMMENT '结束时间,方便查询,永不过期 使用值4102416000即2100-01-01 00:00:00',
  125. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  126. )COMMENT='广告管理';
  127. ALTER TABLE xhAd ADD INDEX `merchantId`(`merchantId`,`endTime`);
  128. DROP TABLE IF EXISTS `xhCategoryRelate`;
  129. ALTER TABLE xhCategory ADD indexShow TINYINT NOT NULL DEFAULT 0 COMMENT '首页上显示 0不显示 1显示' AFTER categoryName;
  130. ALTER TABLE xhCategory ADD menuShow TINYINT NOT NULL DEFAULT 0 COMMENT '菜单显示 0不显示 1显示' AFTER `indexShow`;
  131. ALTER TABLE xhCategory ADD INDEX indexShow(merchantId,indexShow);
  132. ALTER TABLE xhCategory ADD INDEX menuShow(merchantId,menuShow);
  133. ALTER TABLE xhAd ADD adImg VARCHAR(800) NOT NULL DEFAULT '' COMMENT '广告图' AFTER adName;
  134. ALTER TABLE xhAd MODIFY endTime INT NOT NULL DEFAULT 0 COMMENT '结束时间;方便查询,永不过期情况,使用 开始值0 结束值4102416000即2100-01-01 00:00:00';
  135. ALTER TABLE xhGoodsCategory MODIFY `cId` INT NOT NULL DEFAULT 0 COMMENT '分类id';
  136. ALTER TABLE xhGoods DROP COLUMN `categoryId`;
  137. ALTER TABLE xhGoodsCategory ADD INDEX merchantId(merchantId);
  138. ALTER TABLE xhCategory DROP COLUMN `indexShow`;
  139. ALTER TABLE xhCategory DROP COLUMN `menuShow`;
  140. ALTER TABLE xhCategory ADD `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 0停用1启用';
  141. ALTER TABLE xhCategory DROP INDEX `indexShow`;
  142. ALTER TABLE xhCategory DROP INDEX `menuShow`;
  143. ALTER TABLE xhCategory ADD INDEX merchantId(merchantId,`status`);
  144. ALTER TABLE xhGoodsCategory DROP INDEX merchantId;
  145. ALTER TABLE xhGoodsCategory ADD INDEX merchantId(merchantId,cId);
  146. ALTER TABLE xhGoods DROP COLUMN `cover`;
  147. ALTER TABLE xhGoods ADD sendType TINYINT NOT NULL DEFAULT 0 COMMENT '配送方式 0需要配送 1到店自提' AFTER sendArea;
  148. ALTER TABLE xhGoods ADD freightType TINYINT NOT NULL DEFAULT 0 COMMENT '运费计算方式,0按距离计算 1免运费' AFTER sendType;
  149. DROP TABLE IF EXISTS `xhCouponModel`;
  150. DROP TABLE IF EXISTS `xhCouponReward`;
  151. DROP TABLE IF EXISTS `xhCouponRight`;
  152. ALTER TABLE xhCoupon DROP COLUMN `type`;
  153. ALTER TABLE xhCoupon DROP COLUMN `property`;
  154. ALTER TABLE xhCoupon DROP COLUMN `fitType`;
  155. ALTER TABLE xhCoupon DROP COLUMN `rightId`;
  156. ALTER TABLE xhCoupon DROP COLUMN `modelId`;
  157. ALTER TABLE xhCoupon DROP COLUMN `reward`;
  158. ALTER TABLE xhCoupon DROP COLUMN `urlQrCode`;
  159. ALTER TABLE xhCoupon CHANGE howToGet getType TINYINT NOT NULL DEFAULT 0 COMMENT '获得优惠券的方式';
  160. ALTER TABLE xhCoupon DROP COLUMN `targetId`;
  161. ALTER TABLE xhCoupon MODIFY deadline INT NOT NULL DEFAULT 0 COMMENT '过期时间;值4102416000表示永不过期,即2100-01-01 00:00:00';
  162. ALTER TABLE xhCoupon ADD INDEX userId(userId,`status`);
  163. ALTER TABLE xhCoupon ADD INDEX merchantId(merchantId,`status`);";
  164. Yii::$app->db->createCommand($sql)->execute();
  165. $sql = "ALTER TABLE xhGoods CHANGE `style` `goodsStyle` TINYINT NOT NULL DEFAULT 0 COMMENT '商品款式 0单款式 1多款式';
  166. ALTER TABLE xhGoodsStyle CHANGE `order` `inTurn` INT NOT NULL DEFAULT 0 COMMENT '排序';
  167. ALTER TABLE xhGoodsStyle DROP COLUMN `softDel`;
  168. UPDATE xhUserAsset SET `discount`=1;
  169. ALTER TABLE xhUserAsset MODIFY discount FLOAT(3,2) NOT NULL DEFAULT 1.00 COMMENT '折扣';
  170. ALTER TABLE xhCoupon CHANGE `meetAmount` `miniCost` INT NOT NULL DEFAULT 0 COMMENT '最低消费金额,0表示任何情况下可用';
  171. ALTER TABLE xhShop CHANGE `businessName` `shopName` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '门店名称';
  172. ALTER TABLE xhShop CHANGE `branchName` `merchantName` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '商家名称';
  173. ALTER TABLE xhShop DROP COLUMN `poiId`;
  174. ALTER TABLE xhMerchantExtend ADD `freight` CHAR(10) NOT NULL DEFAULT '5_2' COMMENT '运费计算方式 5公里内免运费,超过每增加一公里+2' AFTER `alipayAccountName`;
  175. ALTER TABLE xhMerchantExtend DROP COLUMN `giveCoupon`;
  176. ALTER TABLE xhMerchantExtend DROP COLUMN `giveCouponPrice`;
  177. ALTER TABLE xhMerchantExtend DROP COLUMN `couponMeetPrice`;
  178. ALTER TABLE xhMerchantExtend DROP COLUMN `couponValidity`;
  179. ALTER TABLE xhMerchantExtend ADD newCouponSwitch TINYINT NOT NULL DEFAULT 1 COMMENT '新人送优惠券 0未开启 1开启' AFTER `freight`;
  180. ALTER TABLE xhMerchantExtend ADD newCouponAmount DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '新人优惠券金额' AFTER `newCouponSwitch`;
  181. ALTER TABLE xhMerchantExtend ADD newCouponMiniCost DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '新人优惠券最低消费金额' AFTER `newCouponAmount`;
  182. ALTER TABLE xhMerchantExtend ADD newCouponValidTime INT NOT NULL DEFAULT 0 COMMENT '新人优惠券有效期,时长为秒,0永不过期' AFTER `newCouponMiniCost`;
  183. ALTER TABLE xhGoods DROP COLUMN `isCharge`;
  184. ALTER TABLE xhGoods DROP COLUMN `sendArea`;
  185. ALTER TABLE xhGoods CHANGE `sendType` needSend TINYINT NOT NULL DEFAULT 0 COMMENT '是否要配送 0免配送 1需要配送';
  186. ALTER TABLE xhOrder CHANGE `needSend` `sendType` TINYINT NOT NULL DEFAULT 0 COMMENT '配送方式 0免配送 1自己送 2别人送';
  187. ALTER TABLE xhOrder MODIFY reachPeriod TINYINT NOT NULL DEFAULT 0 COMMENT '0上午1下午2晚上';
  188. ALTER TABLE xhOrder DROP COLUMN `blessing`;
  189. ALTER TABLE xhOrder ADD cardInfo VARCHAR(500) NOT NULL DEFAULT '' COMMENT '贺卡内容' AFTER `needCard`;
  190. ALTER TABLE xhOrder MODIFY `payWay` TINYINT NOT NULL DEFAULT 0 COMMENT '支付方式 0微信 1支付宝 2余额';
  191. ALTER TABLE xhOrderGoods CHANGE `multipleTitle` `goodsStyleName` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '款式名称';
  192. ALTER TABLE xhOrderGoods CHANGE `multiPriceId` `goodsStyleId` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '款式id';
  193. ALTER TABLE xhCoupon MODIFY `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态 0未使用 1使用 2过期';
  194. ALTER TABLE xhOrder DROP COLUMN `luckyNum`;
  195. ALTER TABLE xhOrder DROP COLUMN `uniCode`;
  196. ALTER TABLE xhOrder DROP COLUMN `useType`;
  197. ALTER TABLE xhOrder MODIFY `payStatus` TINYINT NOT NULL DEFAULT 0 COMMENT '0待付款 1已付款';
  198. RENAME TABLE xhUserIntegral TO xhUserGrowth;
  199. ALTER TABLE xhUserGrowth CHANGE `integral` `growth` INT NOT NULL DEFAULT 0 COMMENT '当前成长值';
  200. ALTER TABLE xhUserGrowth MODIFY `num` INT NOT NULL DEFAULT 0 COMMENT '增加或减少的成长值';
  201. ALTER TABLE xhOrder DROP COLUMN `payStyle`;
  202. ALTER TABLE xhGoods MODIFY `status` TINYINT NOT NULL DEFAULT 1 COMMENT '商品状态 0下架 1正常';
  203. ALTER TABLE xhGoods DROP COLUMN `delStatus`;
  204. ALTER TABLE xhGoodsCategory ADD INDEX `gId`(`gId`);
  205. ALTER TABLE xhGoods ADD autoRise TINYINT NOT NULL DEFAULT 1 COMMENT '自动涨价 0不需要 1需要' AFTER `goodsStyle`;
  206. ALTER TABLE `xhGoodsStyle` CHANGE `title` `styleName` VARCHAR(30) NOT NULL DEFAULT '' COMMENT '款式名称';
  207. ALTER TABLE xhAd ADD `status` TINYINT NOT NULL DEFAULT 0 COMMENT '启用状态 0 未启用 1 启用' AFTER `adName`;
  208. ALTER TABLE xhAd ADD `inTurn` INT NOT NULL DEFAULT 0 COMMENT '排序' AFTER `status`;
  209. ALTER TABLE xhAd ADD `viewTimes` INT NOT NULL DEFAULT 0 COMMENT '点击次数' AFTER `adImg`;
  210. ALTER TABLE `xhAd` CHANGE `startTime` `startTime` DATETIME NULL COMMENT '开始时间', CHANGE `endTime` `endTime` DATETIME NULL COMMENT '结束时间';
  211. ALTER TABLE xhAd ADD `forever` TINYINT NOT NULL DEFAULT 0 COMMENT '永久有效:0 未启用 1 永久有效' AFTER `goodsId`;
  212. DROP TABLE IF EXISTS xhPic;
  213. CREATE TABLE IF NOT EXISTS xhPic(
  214. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  215. merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id',
  216. img VARCHAR(500) NOT NULL DEFAULT '' COMMENT '图片地址',
  217. price DECIMAL(9,2) NOT NULL DEFAULT 0.00 COMMENT '价格',
  218. `name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '商品名称',
  219. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  220. )COMMENT='图库;商品图库';
  221. DROP TABLE IF EXISTS xhPicCategory;
  222. CREATE TABLE IF NOT EXISTS xhPicCategory(
  223. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  224. merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id',
  225. pictureId INT NOT NULL DEFAULT 0 COMMENT '图片id',
  226. categoryId INT NOT NULL DEFAULT 0 COMMENT '分类id'
  227. )COMMENT='商品图与分类关系';
  228. ALTER TABLE xhPic ADD inTurn INT NOT NULL DEFAULT 0 COMMENT '排序' AFTER `name`;
  229. ALTER TABLE xhPicCategory ADD inTurn INT NOT NULL DEFAULT 0 COMMENT '排序' AFTER categoryId;
  230. ALTER TABLE xhPicCategory CHANGE pictureId picId INT NOT NULL DEFAULT 0 COMMENT '图片id';
  231. ALTER TABLE xhGoodsCategory ADD `status` TINYINT NOT NULL DEFAULT 1 COMMENT '上下架状态 0下架 1正常' AFTER `merchantId`;
  232. ALTER TABLE xhCategory ADD goodsNum INT NOT NULL DEFAULT 0 COMMENT '商品数' AFTER `cover`;
  233. ALTER TABLE xhCategory ADD sold INT NOT NULL DEFAULT 0 COMMENT '销量' AFTER `goodsNum`;
  234. ALTER TABLE xhCategory CHANGE cover `img` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '分类图片';";
  235. Yii::$app->db->createCommand($sql)->execute();
  236. //商品设置 员工 角色
  237. $sql = "ALTER TABLE xhGoodsSetting DROP COLUMN `startRiseTime`;
  238. ALTER TABLE xhGoodsSetting DROP COLUMN `endRiseTime`;
  239. ALTER TABLE xhGoodsSetting CHANGE `goodSIntroduce` `goodsIntroduce` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '商品说明';
  240. ALTER TABLE xhGoodsSetting DROP COLUMN `createTime`;
  241. ALTER TABLE xhGoodsSetting DROP COLUMN `updateTime`;
  242. ALTER TABLE xhMerchantExtend DROP COLUMN `createTime`;
  243. ALTER TABLE xhMerchantExtend DROP COLUMN `updateTime`;
  244. ALTER TABLE xhGoodsSetting ADD riseSwitch TINYINT NOT NULL DEFAULT 1 COMMENT '自动涨价开关 1开启 0关闭' AFTER `merchantId`;
  245. ALTER TABLE xhAdmin DROP COLUMN `openId`;
  246. ALTER TABLE xhAdmin DROP COLUMN `unionId`;
  247. ALTER TABLE xhAdmin DROP COLUMN `subscribe`;
  248. ALTER TABLE xhAdmin DROP COLUMN `wxQrCode`;
  249. ALTER TABLE xhAdmin MODIFY `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态 0停用 1正常';
  250. ALTER TABLE xhAdmin ADD merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id' AFTER `roleId`;
  251. DROP TABLE IF EXISTS `xhAdminToMerchant`;
  252. ALTER TABLE xhAdmin ADD userId INT NOT NULL DEFAULT 0 COMMENT '员工关联的userId' AFTER merchantId;
  253. ALTER TABLE xhAdmin ADD `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间' AFTER `status`;
  254. ALTER TABLE xhAdmin DROP COLUMN `createTime`;
  255. ALTER TABLE xhAdmin DROP COLUMN `updateTime`;
  256. ALTER TABLE xhAdmin DROP COLUMN `province`;
  257. ALTER TABLE xhAdmin DROP COLUMN `city`;
  258. ALTER TABLE xhAdmin DROP COLUMN `dist`;
  259. ALTER TABLE xhAdmin DROP COLUMN `address`;
  260. ALTER TABLE xhAdmin DROP COLUMN `addLong`;
  261. ALTER TABLE xhAdmin DROP COLUMN `addLat`;
  262. ALTER TABLE xhAdmin DROP COLUMN `addPrecision`;
  263. ALTER TABLE xhAdmin ADD incomeNotice TINYINT NOT NULL DEFAULT 0 COMMENT '收入通知 0不需要 1需要' AFTER `currentShopId`;
  264. ALTER TABLE xhAdminRole ADD `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间' AFTER `merchantId`;
  265. ALTER TABLE xhAdminRole DROP COLUMN `createTime`;
  266. ALTER TABLE xhAdminRole DROP COLUMN `updateTime`;
  267. ALTER TABLE xhAdmin DROP COLUMN `avatar`;
  268. ALTER TABLE xhAdmin ADD loginTime INT NOT NULL DEFAULT 0 COMMENT '最后登陆时间' AFTER `status`;
  269. ALTER TABLE xhAdmin ADD `super` TINYINT NOT NULL DEFAULT 0 COMMENT '是否超级管理员 0不是 1是,超级员工不可删除' AFTER `sex`;
  270. ALTER TABLE xhAdminRole ADD `num` INT NOT NULL DEFAULT 0 COMMENT '成员数' AFTER `merchantId`;
  271. CREATE TABLE xhAdminLog(
  272. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  273. `ip` BIGINT NOT NULL DEFAULT 0 COMMENT 'ip地址',
  274. `merchantId` INT NOT NULL DEFAULT 0 COMMENT '商家id',
  275. `content` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '操作内容',
  276. adminId INT NOT NULL DEFAULT 0 COMMENT '员工id;管理员id',
  277. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  278. )COMMENT='员工操作日志';";
  279. Yii::$app->db->createCommand($sql)->execute();
  280. $sql = "ALTER TABLE xhCoupon MODIFY getType TINYINT NOT NULL DEFAULT 0 COMMENT '获取方式,0新人领券 1邀请领券';
  281. DROP TABLE IF EXISTS `xhCouponAsset`;
  282. CREATE TABLE IF NOT EXISTS `xhCouponAsset`(
  283. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  284. merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id',
  285. totalNum INT NOT NULL DEFAULT 0 COMMENT '优惠券总数',
  286. unUseNum INT NOT NULL DEFAULT 0 COMMENT '未使用数',
  287. useNum INT NOT NULL DEFAULT 0 COMMENT '已使用数',
  288. invalidNum INT NOT NULL DEFAULT 0 COMMENT '失效数',
  289. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  290. )COMMENT='优惠券资产与设置';
  291. DROP TABLE IF EXISTS `xhInvite`;
  292. CREATE TABLE IF NOT EXISTS `xhInvite`(
  293. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  294. merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id',
  295. `userName` varchar(50) NOT NULL DEFAULT '' COMMENT '邀请人的昵称',
  296. mobile VARCHAR(20) NOT NULL DEFAULT '' COMMENT '邀请人手机号',
  297. userId INT NOT NULL DEFAULT 0 COMMENT '受邀人',
  298. introUserId INT NOT NULL DEFAULT 0 COMMENT '介绍人',
  299. couponId INT NOT NULL DEFAULT 0 COMMENT '优惠券id',
  300. prize VARCHAR(50) NOT NULL DEFAULT '' COMMENT '介绍人的奖励',
  301. `status` TINYINT NOT NULL DEFAULT 0 COMMENT '0待下单 1待兑奖 2已完成',
  302. orderTime INT NOT NULL DEFAULT 0 COMMENT '下单时间',
  303. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  304. )COMMENT='邀请有礼记录';
  305. DROP TABLE IF EXISTS xhInviteAsset;
  306. CREATE TABLE IF NOT EXISTS `xhInviteAsset`(
  307. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  308. merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id',
  309. switch TINYINT NOT NULL DEFAULT 1 COMMENT '是否开启邀请有礼 0关闭 1开启。默认开启',
  310. amount INT NOT NULL DEFAULT 0 COMMENT '新人领券金额',
  311. miniCost INT NOT NULL DEFAULT 0 COMMENT '最低消费',
  312. duration SMALLINT NOT NULL DEFAULT 0 COMMENT '有效时长,天数',
  313. prize VARCHAR(50) NOT NULL DEFAULT '' COMMENT '介绍人的奖励',
  314. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  315. )COMMENT='商家邀请有礼设置';
  316. DROP TABLE IF EXISTS `xhInviteStat`;
  317. CREATE TABLE IF NOT EXISTS `xhInviteStat`(
  318. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  319. userId INT NOT NULL DEFAULT 0 COMMENT '',
  320. inviteNum INT NOT NULL DEFAULT 0 COMMENT '邀请数',
  321. orderNum INT NOT NULL DEFAULT 0 COMMENT '下单数',
  322. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  323. )COMMENT='邀请统计';
  324. ALTER TABLE xhOrder ADD `grade` TINYINT NOT NULL DEFAULT 0 COMMENT '整体评分' AFTER `printStatus`;
  325. ALTER TABLE xhOrder ADD `gradeService` TINYINT NOT NULL DEFAULT 0 COMMENT '服务态度评分' AFTER `grade`;
  326. ALTER TABLE xhOrder ADD `gradeQuality` TINYINT NOT NULL DEFAULT 0 COMMENT '鲜花品质评分' AFTER `gradeService`;
  327. ALTER TABLE xhOrder ADD `gradeSend` TINYINT NOT NULL DEFAULT 0 COMMENT '配送服务评分' AFTER `gradeQuality`;
  328. ALTER TABLE xhOrder ADD `evaluate` VARCHAR(800) NOT NULL DEFAULT '' COMMENT '评语' AFTER `gradeSend`;";
  329. Yii::$app->db->createCommand($sql)->execute();
  330. $sql = "update xhMerchantExtend set gradeList='1_2000_0.9I2_5000_0.88I3_10000_0.85I4_20000_0.8';
  331. DROP TABLE IF EXISTS `xhAgentLevel`;
  332. CREATE TABLE IF NOT EXISTS xhAgentLevel(
  333. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  334. `name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '代理名称',
  335. `commission` INT NOT NULL DEFAULT 0 COMMENT '佣金',
  336. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  337. )COMMENT='代理等级';
  338. DROP TABLE IF EXISTS `xhApply`;
  339. CREATE TABLE IF NOT EXISTS `xhApply`(
  340. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  341. `name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '花店名称',
  342. `mobile` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '手机号',
  343. `userId` INT NOT NULL DEFAULT 0 COMMENT '花卉宝用户id',
  344. `oldId` INT NOT NULL DEFAULT 0 COMMENT '老花店id;介绍人',
  345. `fee` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '付费金额',
  346. `income` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '介绍费',
  347. `newId` INT NOT NULL DEFAULT 0 COMMENT '新花店id,0表示还没有审核通过',
  348. `longitude` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '花店经度',
  349. `latitude` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '花店纬度',
  350. `province` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '省',
  351. `city` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '市',
  352. `dist` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '区县',
  353. `address` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '详细街道地址',
  354. `floor` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '楼号门牌号',
  355. `fullAddress` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '地图中获取完整地址',
  356. `status` TINYINT NOT NULL DEFAULT 0 COMMENT '0审核中 1试用中 2已付费 3已失效',
  357. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  358. )COMMENT='申请试用';
  359. ALTER TABLE xhWxScene MODIFY `type` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '场景类型 0刮刮卡 1邀请有礼领券';
  360. ALTER TABLE xhShop ADD `openTime` VARCHAR(30) NOT NULL DEFAULT '' COMMENT '营业时间' AFTER `telephone`;
  361. ALTER TABLE `xhAd` DROP INDEX `merchantId`;
  362. ALTER TABLE `xhAd` ADD INDEX `merchantId`(`merchantId`,`type`);
  363. ALTER TABLE `xhAd` ADD INDEX `multiple`(`merchantId`,`type`,`status`,`startTime`,`endTime`);
  364. DELETE FROM `xhAd`;
  365. ALTER TABLE `xhAd` MODIFY `startTime` INT NOT NULL DEFAULT 0 COMMENT '开始时间';
  366. ALTER TABLE `xhAd` MODIFY `endTime` INT NOT NULL DEFAULT 0 COMMENT '结束时间;方便查询,永不过期情况,使用 开始值0 结束值4102416000即2100-01-01 00:00:00';
  367. ALTER TABLE `xhAd` DROP COLUMN `forever`;
  368. ALTER TABLE xhShop MODIFY shopAddress VARCHAR(200) NOT NULL DEFAULT '' COMMENT '街道地址';
  369. ALTER TABLE xhShop ADD shopFullAddress VARCHAR(500) NOT NULL DEFAULT '' COMMENT '完整地址' AFTER shopAddress;
  370. ALTER TABLE xhShop DROP COLUMN `status`;
  371. DROP TABLE IF EXISTS `xhOrderSend`;
  372. CREATE TABLE IF NOT EXISTS `xhOrderSend`(
  373. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  374. `orderId` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '订单号',
  375. `actionId` TINYINT NOT NULL DEFAULT 0 COMMENT '动作id',
  376. `option` TINYINT NOT NULL DEFAULT 0 COMMENT '动作的选项',
  377. finishTime INT NOT NULL DEFAULT 0 COMMENT '完成时间',
  378. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  379. )COMMENT='发货管理';
  380. ALTER TABLE xhOrderSend ADD inTurn INT NOT NULL DEFAULT 0 COMMENT '排序' AFTER `finishTime`;
  381. ALTER TABLE xhOrderSend MODIFY `orderId` CHAR(32) NOT NULL DEFAULT '' COMMENT '订单号';
  382. ALTER TABLE xhOrderGoods MODIFY `orderId` CHAR(32) NOT NULL DEFAULT '' COMMENT '订单号';
  383. ALTER TABLE xhOrder MODIFY `id` CHAR(32) NOT NULL DEFAULT '' COMMENT '订单号';";
  384. Yii::$app->db->createCommand($sql)->execute();
  385. $sql = "ALTER TABLE xhOrder ADD totalFlow TINYINT NOT NULL DEFAULT 5 COMMENT '总流程数' AFTER `evaluate`;
  386. ALTER TABLE xhOrder ADD currentFlow TINYINT NOT NULL DEFAULT 0 COMMENT '当前流程数' AFTER `totalFlow`;
  387. UPDATE xhOrder SET totalFlow=5,currentFlow=5;
  388. ALTER TABLE `xhOrder` DROP PRIMARY KEY;
  389. ALTER TABLE `xhOrder` DROP INDEX `id`;
  390. ALTER TABLE `xhOrder` CHANGE `id` `orderSn` CHAR(32) NOT NULL DEFAULT '' COMMENT '订单编号';
  391. ALTER TABLE `xhOrder` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '自增id' FIRST;
  392. ALTER TABLE `xhOrder` AUTO_INCREMENT=213800;
  393. UPDATE `xhOrder` SET id=id+213800;
  394. DELETE FROM `xhOrderSend`;
  395. ALTER TABLE `xhOrderSend` MODIFY `orderId` INT NOT NULL DEFAULT 0 COMMENT '订单id';
  396. ALTER TABLE xhCoupon MODIFY `orderId` INT NOT NULL DEFAULT 0 COMMENT '优惠券使用的订单id';
  397. ALTER TABLE xhCoupon CHANGE `getType` `source` TINYINT NOT NULL DEFAULT 0 COMMENT '来源 0新人领券 1邀请有礼领取';
  398. ALTER TABLE xhCoupon ADD sourceId INT NOT NULL DEFAULT 0 COMMENT '来源目标id' AFTER `source`;
  399. ALTER TABLE xhInvite ADD introMobile VARCHAR(15) NOT NULL DEFAULT '' COMMENT '介绍人手机;邀请人手机' AFTER `introUserId`;
  400. ALTER TABLE `xhCoupon` DROP COLUMN `introUserId`;
  401. ALTER TABLE xhInvite ADD introUserName VARCHAR(30) NOT NULL DEFAULT '' COMMENT '邀请人昵称' AFTER `userId`;
  402. RENAME TABLE xhGuaGua TO xhGgk;
  403. RENAME TABLE xhGuaGuaAttend TO xhGgkAttend;
  404. RENAME TABLE xhGuaGuaPrize TO xhGgkPrize;
  405. RENAME TABLE xhGuaGuaWin TO xhGgkWin;
  406. ALTER TABLE xhOrder CHANGE `modPriceStatus` `modPrice` TINYINT NOT NULL DEFAULT 1 COMMENT '0不能修改价格 1可以修改';
  407. ALTER TABLE xhOrder DROP COLUMN `getCouponQrCode`;
  408. ALTER TABLE xhOrder MODIFY `orderSn` CHAR(40) NOT NULL DEFAULT '' COMMENT '订单编号';
  409. ALTER TABLE xhOrder MODIFY `receiveAddress` VARCHAR(300) NOT NULL DEFAULT '' COMMENT '收货地址 详细街道地址';
  410. ALTER TABLE xhOrder MODIFY `receiveFullAddress` VARCHAR(400) NOT NULL DEFAULT '' COMMENT '完整收货地址';
  411. ALTER TABLE xhOrder MODIFY `receiveFloor` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '收货地址 楼号门牌号' AFTER `receiveAddress`;
  412. ALTER TABLE xhOrder MODIFY `sendType` TINYINT NOT NULL DEFAULT 0 COMMENT '配送方式 0免配送 1自己送 2别人送,快递送';
  413. ALTER TABLE xhOrder ADD `sendSide` TINYINT NOT NULL DEFAULT 0 COMMENT '配送方 0没有 1达达' AFTER `sendType`;
  414. ALTER TABLE xhOrder MODIFY `sendStatus` TINYINT NOT NULL DEFAULT 0 COMMENT '配送状态:0未发货,待接单 1已发货,已接单 2已送达' AFTER `sendSide`;";
  415. Yii::$app->db->createCommand($sql)->execute();
  416. $sql = "ALTER TABLE xhOrder ADD `reachDate` DATE DEFAULT NULL COMMENT '客户要求送到的日期' AFTER `sendDistance`;
  417. ALTER TABLE xhOrder DROP COLUMN `reachTime`;
  418. ALTER TABLE xhOrder MODIFY `reachPeriod` TINYINT NOT NULL DEFAULT 0 COMMENT '客户要求送到的时段:0上午1下午2晚上';
  419. ALTER TABLE xhOrder ADD sendTip DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '运费里增加的小费' AFTER `sendCost`;
  420. ALTER TABLE xhOrder MODIFY currentFlow TINYINT NOT NULL DEFAULT 0 COMMENT '完成流程数;当前流程数';
  421. drop table if exists `xhStatIncomeUsage`;
  422. CREATE TABLE if not exists `xhStatIncomeUsage` (
  423. `id` int(11) NOT NULL auto_increment primary key,
  424. `merchantId` int(11) NOT NULL DEFAULT '0' COMMENT '商家id',
  425. `shopId` int not null default 0 comment '门店id,0表示商家所有门店',
  426. `time` int(11) NOT NULL DEFAULT '0' COMMENT '时间',
  427. `usageId` tinyint(4) NOT NULL DEFAULT '0' COMMENT '用途id;UsageRelation id',
  428. `amount` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '收入金额',
  429. `weixin` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '微信收入',
  430. `alipay` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '支付宝收入',
  431. `balancePay` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '余额付款收入',
  432. `cash` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '现金收入',
  433. `totalAmount` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '总收入金额',
  434. `addTime` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间'
  435. ) COMMENT='按用途统计每天收入';
  436. drop table if exists `xhStatIncomeUsageMonth`;
  437. CREATE TABLE if not exists `xhStatIncomeUsageMonth` (
  438. `id` int(11) NOT NULL auto_increment primary key,
  439. `year` smallint(6) NOT NULL DEFAULT '0' COMMENT '年',
  440. `month` tinyint(4) NOT NULL DEFAULT '1' COMMENT '月份',
  441. `usageId` tinyint(4) NOT NULL DEFAULT '0' COMMENT '用途id',
  442. `amount` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '收入金额',
  443. `weixin` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '微信收入',
  444. `alipay` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '支付宝收入',
  445. `balancePay` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '余额付款收入',
  446. `cash` decimal(9,2) NOT NULL DEFAULT '0.00' COMMENT '现金收入',
  447. `merchantId` int(11) NOT NULL DEFAULT '0' COMMENT '商家id',
  448. `shopId` int not null default 0 comment '门店id,0表示商家所有门店',
  449. `addTime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '添加时间'
  450. ) COMMENT='按用途统计每月收入';
  451. ALTER TABLE `xhMerchantCapital` MODIFY shopId INT NOT NULL DEFAULT 0 COMMENT '0表示商家所有门店';
  452. ALTER TABLE `xhOrder` ADD `classify` TINYINT NOT NULL DEFAULT 0 COMMENT '是否归类 0未归类 1已归类' AFTER `usageId`;
  453. ALTER TABLE xhUsage ADD `inTurn` INT NOT NULL DEFAULT 0 COMMENT '排序' AFTER `usageName`;
  454. ALTER TABLE `xhInvite` ADD amount DECIMAL(9,2) NOT NULL DEFAULT 0.00 COMMENT '下单金额' AFTER `couponId`;
  455. ALTER TABLE `xhInvite` ADD giveTime INT NOT NULL DEFAULT 0 COMMENT '兑奖时间' AFTER `orderTime`;";
  456. Yii::$app->db->createCommand($sql)->execute();
  457. $sql = "DROP TABLE IF EXISTS `xhCouponAsset`;
  458. CREATE TABLE IF NOT EXISTS `xhCouponAsset`(
  459. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  460. merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id',
  461. `switch` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '是否开启邀请有礼 0关闭 1开启。默认开启',
  462. `amount` INT(11) NOT NULL DEFAULT '0' COMMENT '新人领券金额',
  463. `miniCost` INT(11) NOT NULL DEFAULT '0' COMMENT '最低消费',
  464. `duration` SMALLINT(6) NOT NULL DEFAULT '0' COMMENT '有效时长,天数',
  465. `addTime` INT(11) NOT NULL DEFAULT '0' COMMENT '添加时间'
  466. )COMMENT='新人优惠券资产';
  467. ALTER TABLE `xhWxMenu` MODIFY `replyType` TINYINT NOT NULL DEFAULT 0 COMMENT '回复给粉丝的类型 0跳转链接 1文字 2单图文';
  468. ALTER TABLE `xhWxMenu` DROP COLUMN `targetId`;
  469. ALTER TABLE `xhWxMenu` ADD targetId INT NOT NULL DEFAULT 0 COMMENT '常用链接的目标id,活动目标id' AFTER `hasSonMenu`;
  470. CREATE TABLE `xhUserRemark`(
  471. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  472. userId INT NOT NULL DEFAULT 0 COMMENT '用户id',
  473. merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id',
  474. remark VARCHAR(200) NOT NULL DEFAULT '' COMMENT '备注',
  475. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  476. )COMMENT='用户备注';
  477. ALTER TABLE `xhUserRemark` ADD INDEX `userId`(`userId`);
  478. RENAME TABLE xhUserRemark TO xhMerchantRemark;
  479. RENAME TABLE `xhStatOrderByDay` TO `xhStatOrder`;
  480. RENAME TABLE `xhStatOrderSourceByDay` TO `xhStatOrderSource`;
  481. RENAME TABLE `xhStatUserByDay` TO `xhStatUser`;
  482. RENAME TABLE `xhStatViewByDay` TO `xhStatView`;
  483. RENAME TABLE `xhStatViewSourceByDay` TO `xhStatViewSource`;
  484. RENAME TABLE `xhStatVisitByDay` TO `xhStatVisit`;
  485. RENAME TABLE `xhStatOutDay` TO `xhStatOut`;
  486. RENAME TABLE `xhStatInDay` TO `xhStatIn`;
  487. RENAME TABLE `xhStatDealByDay` TO `xhStatDeal`;
  488. DROP TABLE IF EXISTS `xhStatDeal`;
  489. DROP TABLE IF EXISTS `xhStatView`;
  490. DROP TABLE IF EXISTS `xhStatViewSource`;
  491. DROP TABLE IF EXISTS `xhStatVisit`;
  492. RENAME TABLE `xhVisitByDay` TO `xhStatVisit`;
  493. RENAME TABLE `xhVisitByMonth` TO `xhStatVisitMonth`;
  494. DROP TABLE IF EXISTS `xhMerchantOutCapital`;
  495. DROP TABLE IF EXISTS `xhMerchantInCapital`;
  496. DROP TABLE IF EXISTS `xhStatOrder`;
  497. RENAME TABLE `xhOrderDayNum` TO `xhStatOrder`;
  498. RENAME TABLE `xhOrderMonthNum` TO `xhStatOrderMonth`;
  499. RENAME TABLE `xhLuckyDrawActivity` TO `xhDraw`;
  500. RENAME TABLE `xhLuckyDrawAward` TO `xhDrawPrize`;
  501. RENAME TABLE `xhLuckyDrawAwardCustomer` TO `xhDrawWin`;
  502. RENAME TABLE `xhLuckyDrawAwardParticipant` TO `xhDrawRecord`;
  503. RENAME TABLE `xhDrawCash` TO `xhWithdraw`;
  504. RENAME TABLE `xhActive` TO `xhAct`;
  505. RENAME TABLE `xhActiveOrder` TO `xhActOrder`;
  506. RENAME TABLE `xhActiveTicketClass` TO `xhActTicket`;";
  507. Yii::$app->db->createCommand($sql)->execute();
  508. $sql = "ALTER TABLE `xhMerchantAsset` MODIFY `totalOrder` INT NOT NULL DEFAULT 0 COMMENT '订单数;已付款订单数';
  509. ALTER TABLE `xhMerchantAsset` ADD cancelOrder INT NOT NULL DEFAULT 0 COMMENT '已取消订单数' AFTER `totalOrder`;
  510. ALTER TABLE `xhMerchantAsset` ADD unNoticeOrder INT NOT NULL DEFAULT 0 COMMENT '待通知订单数' AFTER `totalOrder`;
  511. ALTER TABLE `xhMerchantAsset` ADD sendingOrder INT NOT NULL DEFAULT 0 COMMENT '配送中订单数' AFTER `totalOrder`;
  512. ALTER TABLE `xhMerchantAsset` ADD unSendOrder INT NOT NULL DEFAULT 0 COMMENT '待配送订单数' AFTER `totalOrder`;
  513. ALTER TABLE `xhMerchantAsset` ADD unPayOrder INT NOT NULL DEFAULT 0 COMMENT '待付款订单数' AFTER `totalOrder`;
  514. ALTER TABLE `xhMerchantAsset` ADD finishOrder INT NOT NULL DEFAULT 0 COMMENT '完成订单数' AFTER `totalOrder`;
  515. ALTER TABLE `xhMerchantAsset` CHANGE `remainMsgNum` `remainSmsNum` INT NOT NULL DEFAULT 0 COMMENT '剩余短信数';
  516. ALTER TABLE `xhMerchantAsset` MODIFY `totalUser` INT NOT NULL DEFAULT 0 COMMENT '总用户;总客户数';
  517. ALTER TABLE `xhMerchantAsset` ADD unClassifyOrder INT NOT NULL DEFAULT 0 COMMENT '待归类订单' AFTER `totalOrder`;
  518. ALTER TABLE `xhMerchantAsset` MODIFY `totalOrder` INT NOT NULL DEFAULT 0 COMMENT '订单总数,包括所有的';
  519. ALTER TABLE `xhMerchantAsset` ADD `payOrder` INT NOT NULL DEFAULT 0 COMMENT '付款订单数' AFTER `totalOrder`;
  520. ALTER TABLE `xhMerchant` ADD `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间' AFTER `status`;
  521. ALTER TABLE `xhAdmin` ADD `avatar` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '头像' AFTER `adminName`;";
  522. Yii::$app->db->createCommand($sql)->execute();
  523. $sql = "ALTER TABLE `xhMerchant` MODIFY `status` TINYINT NOT NULL DEFAULT 0 COMMENT '商家状态 0待审 1审核通过,取消冻结,正常 2审核未通过 3冻结 4过期';
  524. ALTER TABLE `xhMerchantExtend` ADD miniVersion INT NOT NULL DEFAULT 0 COMMENT '小程序当前版本' AFTER `miniRefreshToken`;
  525. DROP TABLE IF EXISTS `xhMiniUpgrade`;
  526. CREATE TABLE `xhMiniUpgrade`(
  527. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  528. merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id',
  529. `version` INT NOT NULL DEFAULT 0 COMMENT '提交版本号',
  530. `submitTime` INT NOT NULL DEFAULT 0 COMMENT '提交时间',
  531. `checkTime` INT NOT NULL DEFAULT 0 COMMENT '审核时间',
  532. `checkReturn` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '审核结果返回的信息',
  533. `remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
  534. `status` TINYINT NOT NULL DEFAULT 0 COMMENT '0待审核 1审核通过 2审核未通过',
  535. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  536. )COMMENT='小程序升级记录';
  537. DROP TABLE IF EXISTS `xhApplyOrder`;
  538. RENAME TABLE `xhOpenRenewOrder` TO `xhRenewAccount`;
  539. ALTER TABLE `xhApply` ADD remark VARCHAR(500) NOT NULL DEFAULT '' COMMENT '审核时添加的备注' AFTER `fullAddress`;
  540. ALTER TABLE `xhApply` MODIFY `status` TINYINT NOT NULL DEFAULT 0 COMMENT '0审核中 1审核通过、试用中 2审核未通过 3已付费 4试用到期失效';
  541. ALTER TABLE `xhMiniUpgrade` MODIFY `status` TINYINT NOT NULL DEFAULT 0 COMMENT '0待审核 1审核通过,待上线 2审核未通过 3已上线';
  542. ALTER TABLE `xhMiniUpgrade` ADD `onTime` INT NOT NULL DEFAULT 0 COMMENT '上线时间' AFTER `version`;
  543. ALTER TABLE `xhMiniUpgrade` MODIFY `status` TINYINT NOT NULL DEFAULT 0 COMMENT '0待审核 1待上线 2已上线 3审核未通过';
  544. RENAME TABLE `xhRenewAccount` TO `xhRenew`;
  545. ALTER TABLE `xhRenew` DROP COLUMN `dealStatus`;
  546. ALTER TABLE `xhRenew` MODIFY `status` TINYINT NOT NULL DEFAULT 0 COMMENT '0 待付款 1已付款';
  547. ALTER TABLE `xhRenew` DROP COLUMN `orderStyle`;
  548. ALTER TABLE `xhRenew` ADD setId SMALLINT NOT NULL DEFAULT 0 COMMENT '套餐id' AFTER `remark`;
  549. ALTER TABLE xhMerchantAsset DROP `totalWeixinFans`;
  550. ALTER TABLE xhMerchantAsset CHANGE `unClassifyOrder` `unClassOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '待归类订单';
  551. ALTER TABLE xhMerchantAsset CHANGE `totalUseRecharge` `usedRecharge` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '余额消费数;充值金额消耗数';
  552. DROP TABLE IF EXISTS `xhRetailAsset`;
  553. CREATE TABLE IF NOT EXISTS `xhRetailAsset` (
  554. `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  555. `totalVisit` INT(11) NOT NULL DEFAULT '0' COMMENT '总访问量',
  556. `totalUser` INT(11) NOT NULL DEFAULT '0' COMMENT '总用户;总客户数',
  557. `totalMember` INT(11) NOT NULL DEFAULT '0' COMMENT '总会员',
  558. `totalFans` INT(11) NOT NULL DEFAULT '0' COMMENT '总粉丝',
  559. `totalIntegral` INT(11) NOT NULL DEFAULT '0' COMMENT '总积分',
  560. `totalGoods` INT(11) NOT NULL DEFAULT '0' COMMENT '总计商品数量',
  561. `totalRecharge` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '累计给用户充值金额',
  562. `usedRecharge` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '余额消费数;充值金额消耗数',
  563. `totalOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '订单总数,包括所有的',
  564. `payOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '付款订单数',
  565. `unClassOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '待归类订单',
  566. `finishOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '完成订单数',
  567. `unPayOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '待付款订单数',
  568. `unSendOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '待配送订单数',
  569. `sendingOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '配送中订单数',
  570. `unNoticeOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '待通知订单数',
  571. `cancelOrder` INT(11) NOT NULL DEFAULT '0' COMMENT '已取消订单数',
  572. `totalIncome` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '累计收入',
  573. `totalExpend` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '累计消费',
  574. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  575. ) COMMENT='平台零售业资产';";
  576. Yii::$app->db->createCommand($sql)->execute();
  577. $sql = "ALTER TABLE `xhRetailAsset` ADD onGoods INT NOT NULL DEFAULT 0 COMMENT '上架商品数' AFTER `totalGoods`;
  578. ALTER TABLE `xhRetailAsset` ADD offGoods INT NOT NULL DEFAULT 0 COMMENT '下架商品数' AFTER `totalGoods`;
  579. ALTER TABLE `xhMerchantAsset` ADD onGoods INT NOT NULL DEFAULT 0 COMMENT '上架商品数' AFTER `totalGoods`;
  580. ALTER TABLE `xhMerchantAsset` ADD offGoods INT NOT NULL DEFAULT 0 COMMENT '下架商品数' AFTER `totalGoods`;
  581. drop table if exists `xhFest`;
  582. CREATE TABLE if not exists `xhFest` (
  583. `id` int(11) NOT NULL AUTO_INCREMENT,
  584. `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '节日名称',
  585. `month` tinyint(4) NOT NULL DEFAULT '1' COMMENT '月份',
  586. `day` tinyint(4) NOT NULL DEFAULT '1' COMMENT '日期',
  587. `inTurn` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
  588. PRIMARY KEY (`id`)
  589. ) COMMENT='节日';
  590. drop table if exists `xhFestRise`;
  591. CREATE TABLE `xhFestRise` (
  592. `id` int(11) NOT NULL AUTO_INCREMENT,
  593. `merchantId` int(11) NOT NULL DEFAULT '0' COMMENT '商家id',
  594. `festId` int(11) NOT NULL DEFAULT '0' COMMENT '节日',
  595. PRIMARY KEY (`id`)
  596. ) COMMENT='涨价节日';
  597. ALTER TABLE `xhSetMeal` ADD num INT NOT NULL DEFAULT 0 COMMENT '花店数量' AFTER `price`;
  598. ALTER TABLE `xhSetMeal` DROP COLUMN `manageStyle`;";
  599. Yii::$app->db->createCommand($sql)->execute();
  600. $sql = "ALTER TABLE `xhApply` ADD UNIQUE INDEX `mobile`(`mobile`);
  601. ALTER TABLE `xhRenew` ADD `orderSn` CHAR(30) NOT NULL DEFAULT '' COMMENT '订单编号' AFTER `id`;
  602. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `roleId`;
  603. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `province`;
  604. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `city`;
  605. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `dist`;
  606. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `address`;
  607. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `latitude`;
  608. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `longitude`;
  609. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `precision`;
  610. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `openId`;
  611. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `merchantId`;
  612. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `userId`;
  613. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `wxOpenId`;
  614. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `unionId`;
  615. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `subscribe`;
  616. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `createTime`;
  617. ALTER TABLE `xhWxOpenAdmin` DROP COLUMN `updateTime`;
  618. ALTER TABLE `xhWxOpenAdmin` ADD `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间' AFTER `status`;
  619. ALTER TABLE `xhWxOpenAdmin` MODIFY `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态 0冻结 1正常';
  620. ALTER TABLE `xhRenew` DROP COLUMN `payStyle`;
  621. ALTER TABLE `xhRenew` MODIFY `merchantId` INT NOT NULL DEFAULT 0 COMMENT '续费的商家';
  622. ALTER TABLE xhRenew MODIFY `payWay` TINYINT NOT NULL DEFAULT 0 COMMENT '支付方式 0微信 1支付宝 2余额';
  623. DROP TABLE IF EXISTS `xhRenew`;
  624. CREATE TABLE IF NOT EXISTS `xhRenew` (
  625. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '自增id',
  626. `orderSn` CHAR(30) NOT NULL DEFAULT '' COMMENT '订单编号',
  627. `payWay` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '支付方式 0微信 1支付宝 2余额',
  628. `payCode` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '支付返回号',
  629. `prePrice` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '应付款,原价,未修改价格,打折前',
  630. `actPrice` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '实际付款,实价,修改后价格,打折后',
  631. `userId` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
  632. `alipayId` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '支付宝用户id',
  633. `merchantId` INT(11) NOT NULL DEFAULT '0' COMMENT '续费的商家',
  634. `remark` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '备注',
  635. `setId` SMALLINT(6) NOT NULL DEFAULT '0' COMMENT '套餐id',
  636. `beforeDeadline` INT(11) NOT NULL DEFAULT '0' COMMENT '之前到期时间',
  637. `deadline` INT(11) NOT NULL DEFAULT '0' COMMENT '续费后到期时间',
  638. `status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '0 待付款 1已付款',
  639. `addTime` INT(11) NOT NULL DEFAULT '0' COMMENT '添加时间,时间戳格式'
  640. ) COMMENT='开通续费订单';
  641. ALTER TABLE `xhCouponAsset` ADD `totalNum` INT NOT NULL DEFAULT 0 COMMENT '全部优惠券数' AFTER `duration`;
  642. ALTER TABLE `xhCouponAsset` ADD `unUseNum` INT NOT NULL DEFAULT 0 COMMENT '待使用数' AFTER `totalNum`;
  643. ALTER TABLE `xhCouponAsset` ADD `useNum` INT NOT NULL DEFAULT 0 COMMENT '已使用数' AFTER `unUseNum`;
  644. ALTER TABLE `xhCouponAsset` ADD `invalidNum` INT NOT NULL DEFAULT 0 COMMENT '已失效数' AFTER `useNum`;
  645. ALTER TABLE `xhOrder` MODIFY `sourceType` TINYINT NOT NULL DEFAULT 0 COMMENT '订单来源,0商城 1门店 2微信朋友圈 3美团';";
  646. Yii::$app->db->createCommand($sql)->execute();
  647. $sql = "ALTER TABLE `xhAdmin` ADD platUserId INT NOT NULL DEFAULT 0 COMMENT '管理员对应的花卉宝id' AFTER `userId`;
  648. ALTER TABLE `xhAdmin` ADD openId VARCHAR(100) NOT NULL DEFAULT '' COMMENT '管理员对应商家公众号openId' AFTER `userId`;
  649. ALTER TABLE `xhAdmin` DROP COLUMN `openId`;
  650. ALTER TABLE `xhAdmin` ADD `delStatus` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除标识 0未删除 1已删除' AFTER `super`;
  651. ALTER TABLE `xhAdmin` CHANGE `incomeNotice` `remind` TINYINT NOT NULL DEFAULT 0 COMMENT '动态提醒 0不需要 1需要';
  652. ALTER TABLE `xhAdmin` ADD remark VARCHAR(500) NOT NULL DEFAULT '' COMMENT '员工备注' AFTER `remind`;
  653. ALTER TABLE `xhApply` MODIFY `userId` INT NOT NULL DEFAULT 0 COMMENT '邀请花店的用户id,没有邀请花店,刚是平台花卉宝的用户';
  654. DROP TABLE IF EXISTS `xhAgentAsset`;
  655. CREATE TABLE IF NOT EXISTS `xhAgentAsset`(
  656. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  657. merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id',
  658. inviteNum INT NOT NULL DEFAULT 0 COMMENT '邀请花店数',
  659. payNum INT NOT NULL DEFAULT 0 COMMENT '付费花店数',
  660. income DECIMAL(9,2) NOT NULL DEFAULT 0.00 COMMENT '累计收益',
  661. `addTime` INT NOT NULL DEFAULT 0 COMMENT '添加时间'
  662. )COMMENT='我的代理资产';
  663. ALTER TABLE `xhRecharge` DROP PRIMARY KEY;
  664. ALTER TABLE `xhRecharge` CHANGE `id` `sn` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '编号';
  665. ALTER TABLE `xhRecharge` ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
  666. ALTER TABLE `xhRecharge` AUTO_INCREMENT=135736;
  667. UPDATE `xhRecharge` SET id=id+135736;
  668. ALTER TABLE `xhRecharge` DROP COLUMN `createTime`;
  669. ALTER TABLE `xhRecharge` DROP COLUMN `updateTime`;";
  670. Yii::$app->db->createCommand($sql)->execute();
  671. $sql = "ALTER TABLE `xhUserAsset` MODIFY `memberLevel` SMALLINT NOT NULL DEFAULT -1 COMMENT '会员等级 -1普通用户 0普通会员,登记了手机号 1 一级会员';
  672. ALTER TABLE `xhUserAsset` CHANGE `memberLevel` `member` SMALLINT NOT NULL DEFAULT -1 COMMENT '会员等级 -1普通用户 0普通会员,登记了手机号 1 一级会员';
  673. ALTER TABLE `xhUserAsset` DROP COLUMN `isMember`;
  674. ALTER TABLE `xhUser` DROP COLUMN `isMember`;
  675. ALTER TABLE `xhUser` ADD `member` SMALLINT NOT NULL DEFAULT -1 COMMENT '会员等级 -1普通用户 0普通会员,登记了手机号 1 一级会员' AFTER `source`;
  676. ALTER TABLE `xhGoods` ADD delStatus TINYINT NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1删除' AFTER `riseAmount`;
  677. ALTER TABLE `xhGoodsCategory` ADD delStatus TINYINT NOT NULL DEFAULT 0 COMMENT '删除标识 0未删除 1已删除' AFTER `merchantId`;
  678. DROP TABLE IF EXISTS `xhStatIn`;
  679. DROP TABLE IF EXISTS `xhStatInMonth`;
  680. ALTER TABLE `xhStatIncomeCategoryMonth` ADD `time` INT NOT NULL DEFAULT 0 COMMENT '月份' AFTER `id`;
  681. ALTER TABLE `xhStatIncomeMonth` ADD `time` INT NOT NULL DEFAULT 0 COMMENT '月份' AFTER `id`;
  682. ALTER TABLE `xhStatIncomeSourceMonth` ADD `time` INT NOT NULL DEFAULT 0 COMMENT '月份' AFTER `id`;
  683. ALTER TABLE `xhStatIncomeUsageMonth` ADD `time` INT NOT NULL DEFAULT 0 COMMENT '月份' AFTER `id`;
  684. ALTER TABLE `xhStatOrderMonth` ADD `time` INT NOT NULL DEFAULT 0 COMMENT '月份' AFTER `id`;
  685. ALTER TABLE `xhStatOutMonth` ADD `time` INT NOT NULL DEFAULT 0 COMMENT '月份' AFTER `id`;
  686. ALTER TABLE `xhStatVisitMonth` ADD `time` INT NOT NULL DEFAULT 0 COMMENT '月份' AFTER `id`;
  687. DROP TABLE IF EXISTS `xhStatOrderSource`;
  688. CREATE TABLE `xhStatUserMonth` (
  689. `id` INT(11) NOT NULL AUTO_INCREMENT,
  690. `time` INT(11) NOT NULL DEFAULT '0' COMMENT '月份',
  691. `riseFansNum` INT(11) NOT NULL DEFAULT '0' COMMENT '增减粉丝数,负数表示减',
  692. `totalFansNum` INT(11) NOT NULL DEFAULT '0' COMMENT '当前粉丝总数',
  693. `riseMemberNum` INT(11) NOT NULL DEFAULT '0' COMMENT '增加会员数',
  694. `totalMemberNum` INT(11) NOT NULL DEFAULT '0' COMMENT '当前会员总数',
  695. `riseUserNum` INT(11) NOT NULL DEFAULT '0' COMMENT '访客数',
  696. `totalUserNum` INT(11) NOT NULL DEFAULT '0' COMMENT '当前访客总数',
  697. `merchantId` INT(11) NOT NULL DEFAULT '0' COMMENT '商家id',
  698. `addTime` INT(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
  699. PRIMARY KEY (`id`)
  700. ) COMMENT='客户月度统计';
  701. RENAME TABLE `xhWxOpenAdmin` TO `xhStaff`;
  702. ALTER TABLE `xhMerchantCapital` MODIFY `capitalType` TINYINT NOT NULL DEFAULT 0 COMMENT '流水类型';
  703. ALTER TABLE `xhMerchantCapital` MODIFY `payWay` TINYINT NOT NULL DEFAULT 0 COMMENT '付款方式;支付方式';
  704. ALTER TABLE `xhMerchantCapital` MODIFY `sourceType` TINYINT NOT NULL DEFAULT 0 COMMENT '来源';
  705. ALTER TABLE `xhMerchantCapital` MODIFY `io` TINYINT NOT NULL DEFAULT 0 COMMENT '收支类型 0支出 1收入';";
  706. Yii::$app->db->createCommand($sql)->execute();
  707. $sql = "ALTER TABLE `xhMerchant` ADD `deadline` INT NOT NULL DEFAULT 0 COMMENT '帐号过期时间' AFTER `status`;UPDATE `xhMerchant` SET `deadline`=1607589778;";
  708. Yii::$app->db->createCommand($sql)->execute();
  709. //导入省市区
  710. $root = dirUtil::getRootDir();
  711. $sql = file_get_contents($root . '/region.sql');
  712. Yii::$app->db->createCommand($sql)->execute();
  713. //将订单商品表的订单id换成自增id
  714. $orderGoods = OrderGoodsService::getAllByCondition([], null, '*');
  715. if (!empty($orderGoods)) {
  716. $ids = array_column($orderGoods, 'orderId');
  717. $orderList = OrderService::getAllByCondition(['orderSn' => ['in', $ids]], null, '*', 'orderSn');
  718. foreach ($orderList as $orderSn => $val) {
  719. $id = $val['id'];
  720. OrderGoodsService::updateByCondition(['orderId' => $orderSn], ['orderId' => $id]);
  721. }
  722. }
  723. $sql = "alter table `xhOrderGoods` modify orderId int not null default 0 comment '订单id';";
  724. Yii::$app->db->createCommand($sql)->execute();
  725. //商品多款式同步
  726. $goodsList = GoodsService::getAllByCondition([], null, '*');
  727. if (!empty($goodsList)) {
  728. foreach ($goodsList as $goods) {
  729. $multiPrice = $goods['multiPrice'];
  730. if (!empty($multiPrice)) {
  731. $currentIds = explode(',', trim($multiPrice));
  732. if (!empty($currentIds)) {
  733. $currentIds = array_filter(array_unique($currentIds));
  734. $goodsId = $goods['id'];
  735. foreach ($currentIds as $currentId) {
  736. GoodsStyleService::updateByCondition(['id' => $currentId], ['goodsId' => $goodsId]);
  737. }
  738. }
  739. }
  740. }
  741. }
  742. $sql = "ALTER TABLE xhGoods DROP COLUMN `multiPrice`;";
  743. Yii::$app->db->createCommand($sql)->execute();
  744. //商家流水
  745. $mCapital = MerchantCapitalService::getAllByCondition([], null, '*');
  746. if (!empty($mCapital)) {
  747. foreach ($mCapital as $capital) {
  748. $relateId = $capital['relateId'];
  749. $id = $capital['id'];
  750. if (!empty($relateId)) {
  751. $order = OrderService::getByCondition(['orderSn' => $relateId]);
  752. if (!empty($order)) {
  753. $orderId = $order['id'];
  754. MerchantCapitalService::updateById($id, ['relateId' => $orderId]);
  755. } else {
  756. MerchantCapitalService::updateById($id, ['relateId' => 0]);
  757. }
  758. } else {
  759. MerchantCapitalService::updateById($id, ['relateId' => 0]);
  760. }
  761. }
  762. }
  763. $sql = "ALTER TABLE `xhMerchantCapital` MODIFY `relateId` INT NOT NULL DEFAULT 0 COMMENT '关联id;订单id';";
  764. Yii::$app->db->createCommand($sql)->execute();
  765. //客户流水
  766. $uCapital = UserCapitalService::getAllByCondition([], null, '*');
  767. if (!empty($uCapital)) {
  768. foreach ($uCapital as $capital) {
  769. $relateId = $capital['relateId'];
  770. $id = $capital['id'];
  771. if (!empty($relateId)) {
  772. $order = OrderService::getByCondition(['orderSn' => $relateId]);
  773. if (!empty($order)) {
  774. $orderId = $order['id'];
  775. UserCapitalService::updateById($id, ['relateId' => $orderId]);
  776. } else {
  777. UserCapitalService::updateById($id, ['relateId' => 0]);
  778. }
  779. } else {
  780. UserCapitalService::updateById($id, ['relateId' => 0]);
  781. }
  782. }
  783. }
  784. $sql = "ALTER TABLE `xhUserCapital` MODIFY `relateId` INT NOT NULL DEFAULT 0 COMMENT '关联id;订单id';";
  785. Yii::$app->db->createCommand($sql)->execute();
  786. //客户成长值
  787. $userGrowth = UserGrowthService::getAllByCondition([], null, '*');
  788. if (!empty($userGrowth)) {
  789. foreach ($userGrowth as $relateId => $growth) {
  790. $relateId = $growth['relateId'];
  791. $id = $growth['id'];
  792. if (!empty($relateId)) {
  793. $order = OrderService::getByCondition(['orderSn' => $relateId]);
  794. if (!empty($order)) {
  795. $orderId = $order['id'];
  796. UserGrowthService::updateById($id, ['relateId' => $orderId]);
  797. } else {
  798. UserGrowthService::updateById($id, ['relateId' => 0]);
  799. }
  800. } else {
  801. UserGrowthService::updateById($id, ['relateId' => 0]);
  802. }
  803. }
  804. }
  805. $sql = "ALTER TABLE `xhUserGrowth` MODIFY `relateId` INT NOT NULL DEFAULT 0 COMMENT '关联id';ALTER TABLE `xhAdminRoleAuth` ADD merchantId INT NOT NULL DEFAULT 0 COMMENT '商家id' AFTER `endId`;";
  806. Yii::$app->db->createCommand($sql)->execute();
  807. $sql = "DROP TABLE IF EXISTS `xhInformAdmin`;
  808. CREATE TABLE `xhInformAdmin` (
  809. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  810. `userId` INT(11) NOT NULL DEFAULT '0' COMMENT '管理员userId',
  811. `adminId` INT(11) NOT NULL DEFAULT '0' COMMENT '管理员Id',
  812. `merchantId` INT(11) NOT NULL DEFAULT '0' COMMENT '商家id',
  813. `noticeType` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '类型',
  814. `content` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '内容',
  815. `noticeWay` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '通知方式 0微信1短信',
  816. `status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '状态 0没有成功 1成功',
  817. `sourceType` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '来源类型',
  818. `sourceId` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '来源id',
  819. `addTime` INT(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
  820. PRIMARY KEY (`id`)
  821. ) COMMENT='店员消息通知记录';
  822. DROP TABLE IF EXISTS `xhInformUser`;
  823. CREATE TABLE `xhInformUser` (
  824. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  825. `userId` INT(11) NOT NULL DEFAULT '0' COMMENT '客户id',
  826. `merchantId` INT(11) NOT NULL DEFAULT '0' COMMENT '商家id',
  827. `noticeType` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '类型',
  828. `content` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '内容',
  829. `noticeWay` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '通知方式 0微信1短信',
  830. `status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '状态 0没有成功 1成功',
  831. `sourceType` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '来源类型',
  832. `sourceId` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '来源id',
  833. `addTime` INT(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
  834. PRIMARY KEY (`id`)
  835. ) COMMENT='客户消息通知记录';";
  836. Yii::$app->db->createCommand($sql)->execute();
  837. //省市区表字段变更
  838. $sql = "ALTER TABLE `xhDistrict` CHANGE `shortName` `name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '简称';";
  839. Yii::$app->db->createCommand($sql)->execute();
  840. $sql = "DROP TABLE IF EXISTS `xhStatView`;
  841. CREATE TABLE `xhStatView` (
  842. `id` INT(11) NOT NULL AUTO_INCREMENT,
  843. `time` INT(11) NOT NULL DEFAULT '0' COMMENT '时间戳',
  844. `riseNum` INT(11) NOT NULL DEFAULT '0' COMMENT '增加数量',
  845. `totalNum` INT(11) NOT NULL DEFAULT '0' COMMENT '总数量',
  846. `merchantId` INT(11) NOT NULL DEFAULT '0' COMMENT '商家id',
  847. `addTime` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '添加时间',
  848. PRIMARY KEY (`id`),
  849. UNIQUE KEY `num` (`merchantId`,`time`)
  850. ) COMMENT='每天增加访问次数,非访问ip数';
  851. DROP TABLE IF EXISTS `xhStatViewMonth`;
  852. CREATE TABLE `xhStatViewMonth` (
  853. `id` INT(11) NOT NULL AUTO_INCREMENT,
  854. `time` INT(11) NOT NULL DEFAULT '0' COMMENT '月份',
  855. `riseNum` INT(11) NOT NULL DEFAULT '0' COMMENT '增加数量',
  856. `totalNum` INT(11) NOT NULL DEFAULT '0' COMMENT '总数量',
  857. `merchantId` INT(11) NOT NULL DEFAULT '0' COMMENT '商家id',
  858. `addTime` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '添加时间',
  859. PRIMARY KEY (`id`),
  860. UNIQUE KEY `num` (`merchantId`,`time`)
  861. ) COMMENT='每月增加访问次数,非访问ip数';";
  862. Yii::$app->db->createCommand($sql)->execute();
  863. //统计相关
  864. //xhStatIncomeMonth
  865. $list = StatIncomeMonthService::getAllByCondition([], null, '*');
  866. if (!empty($list)) {
  867. foreach ($list as $val) {
  868. $year = $val['year'];
  869. $month = $val['month'];
  870. $date = date("Ym", strtotime($year . '-' . $month . '-' . '1'));
  871. $id = $val['id'];
  872. StatIncomeMonthService::updateById($id, ['time' => $date]);
  873. }
  874. }
  875. //xhStatIncomeSourceMonth
  876. $list = StatIncomeSourceMonthService::getAllByCondition([], null, '*');
  877. if (!empty($list)) {
  878. foreach ($list as $val) {
  879. $year = $val['year'];
  880. $month = $val['month'];
  881. $date = date("Ym", strtotime($year . '-' . $month . '-' . '1'));
  882. $id = $val['id'];
  883. StatIncomeSourceMonthService::updateById($id, ['time' => $date]);
  884. }
  885. }
  886. //xhStatOrder
  887. $list = StatOrderService::getAllByCondition([], null, '*');
  888. if (!empty($list)) {
  889. foreach ($list as $val) {
  890. $id = $val['id'];
  891. $date = date("Ymd", $val['time']);
  892. StatOrderService::updateById($id, ['time' => $date]);
  893. }
  894. }
  895. //xhStatOrderMonth
  896. $list = StatOrderMonthService::getAllByCondition([], null, '*');
  897. if (!empty($list)) {
  898. foreach ($list as $val) {
  899. $year = $val['year'];
  900. $month = $val['month'];
  901. $date = date("Ym", strtotime($year . '-' . $month . '-' . '1'));
  902. $id = $val['id'];
  903. StatOrderMonthService::updateById($id, ['time' => $date]);
  904. }
  905. }
  906. $sql = "ALTER TABLE `xhMerchantAsset` ADD totalView INT NOT NULL DEFAULT 0 COMMENT '累计访问次数' AFTER `totalVisit`;ALTER TABLE `xhMerchantAsset` MODIFY `totalVisit` INT NOT NULL DEFAULT 0 COMMENT '累计访客数';";
  907. Yii::$app->db->createCommand($sql)->execute();
  908. if ($num == 2) {
  909. $this->actionInit2();
  910. }
  911. if ($num == 3) {
  912. $this->actionInit2();
  913. $this->actionSyncAvatar();
  914. }
  915. }
  916. public function actionInit2()
  917. {
  918. //更新管理员
  919. $sql = 'update `xhAdmin` set password="' . password_hash('123456', PASSWORD_BCRYPT) . '",confirmPassword="' . password_hash('123456', PASSWORD_BCRYPT) . '";update `xhAdmin` set merchantId=12358,platUserId=12543212 where id=1;update `xhAdmin` set merchantId=12359,platUserId=12540901 where id=3;update `xhAdmin` set merchantId=12360 where id=4;update `xhAdmin` set merchantId=12361,platUserId=12540861 where id=5;update `xhStaff` set `password`="' . password_hash('123456', PASSWORD_BCRYPT) . '"';
  920. Yii::$app->db->createCommand($sql)->execute();
  921. //生产环境国兰密码要更新进去
  922. if (getenv('YII_ENV') == 'production') {
  923. $password = password_hash('glhs610000', PASSWORD_BCRYPT);
  924. $confirmPassword = password_hash('454588', PASSWORD_BCRYPT);
  925. $sql = "update `xhAdmin` set password='{$password}',confirmPassowrd='{$confirmPassword}' where id=1";
  926. Yii::$app->db->createCommand($sql)->execute();
  927. }
  928. //国兰老客户导入
  929. $oldUserList = Yii::$app->db2->createCommand('select * from xhUserOldData where `status`=0')->queryAll();
  930. if (!empty($oldUserList)) {
  931. foreach ($oldUserList as $user) {
  932. $mobile = $user['mobile'];
  933. $exists = UserService::getByCondition(['mobile' => $mobile, 'merchantId' => 12358]);
  934. if (!empty($exists)) {
  935. echo "老客户:'.$mobile.'已经导入过了。\n";
  936. continue;
  937. }
  938. $user['realName'] = $user['userName'];
  939. $user['growth'] = $user['integral'];
  940. $insertUser = UserService::addUser($user);
  941. $id = $user['id'];
  942. Yii::$app->db2->createCommand("update xhUserOldData set `status`=1 where id={$id}")->execute();
  943. echo "老客户导入生成userId:" . $insertUser['id'] . "\n";
  944. }
  945. }
  946. //更新国兰的菜单分类
  947. $sql = "truncate `xhCategory`;insert into `xhCategory`(`id`,`parentId`,`merchantId`,`categoryName`,`description`,`img`,`goodsNum`,`sold`,`inTurn`,`status`) values (1,0,12358,'花束','唯美花束','',0,0,15,1),(2,0,12358,'花盒','时尚花盒','',0,0,14,1),(3,0,12358,'开业花篮','开业花篮','',0,0,0,1),(4,0,12358,'婚礼用花','婚礼用花','',0,0,0,1),(5,0,12358,'会议用花','会议用花','',0,0,0,1),(9,0,12358,'蝴蝶兰专区','蝴蝶兰','',0,0,4,1),(87,0,12358,'花篮','时尚礼篮','',0,0,4,1),(88,0,12358,'植物-微景观','植物-微景观','',0,0,4,1);";
  948. Yii::$app->db->createCommand($sql)->execute();
  949. //更新国兰分类与商品对应关系
  950. Yii::$app->db->createCommand("truncate `xhGoodsCategory`;")->execute();
  951. $goodsCategory = Yii::$app->db2->createCommand('select * from `xhGoodsCategory` where `merchantId`=12358')->queryAll();
  952. if (!empty($goodsCategory)) {
  953. foreach ($goodsCategory as $val) {
  954. $cId = $val['cId'];
  955. $gId = $val['gId'];
  956. $inTurn = $val['inTurn'];
  957. $merchantId = $val['merchantId'];
  958. GoodsCategoryService::add(['gId' => $gId, 'cId' => $cId, 'inTurn' => $inTurn, 'status' => 1, 'merchantId' => $merchantId]);
  959. echo $cId . ' ' . $gId . "\n";
  960. }
  961. }
  962. $goodsUsage = Yii::$app->db2->createCommand('select * from `xhGoodsUsage` where `merchantId`=12358')->queryAll();
  963. if (!empty($goodsUsage)) {
  964. foreach ($goodsUsage as $val) {
  965. $usageId = $val['usageId'];
  966. $goodsId = $val['goodsId'];
  967. $inTurn = $val['inTurn'];
  968. $merchantId = $val['merchantId'];
  969. GoodsCategoryService::add(['gId' => $goodsId, 'cId' => $usageId, 'inTurn' => $inTurn, 'status' => 1, 'merchantId' => $merchantId]);
  970. echo $usageId . ' ' . $goodsId . "\n";
  971. }
  972. }
  973. //会员打折和会员等级要同步,要先导老客户 shish 2020.1.12
  974. $merchantList = MerchantExtendService::getAllByCondition([], null, '*', 'merchantId');
  975. $userAssetList = UserAssetService::getAllByCondition([], null, '*');
  976. if (!empty($userAssetList)) {
  977. foreach ($userAssetList as $asset) {
  978. $id = $asset['userId'];
  979. $merchantId = $asset['merchantId'];
  980. $growth = $asset['growth'];
  981. $currentMember = $asset['member'];
  982. UserService::updateById($id, ['member' => $currentMember]);
  983. if (!empty($merchantId) && isset($merchantList[$merchantId])) {
  984. $extend = $merchantList[$merchantId];
  985. if (!empty($extend)) {
  986. $gradeList = MerchantExtendService::getGradeList($extend);
  987. $member = null;
  988. foreach ($gradeList as $grade) {
  989. if ($grade['growth'] < $growth) {
  990. $member = $grade['level'];
  991. continue;
  992. }
  993. }
  994. if (!empty($member)) {
  995. UserAssetService::updateByUserId($id, ['member' => $member]);
  996. UserService::updateById($id, ['member' => $member]);
  997. echo '客户id:' . $id . '会员等级:' . $member . "已更新\n";
  998. }
  999. }
  1000. }
  1001. }
  1002. }
  1003. $sql = "ALTER TABLE xhGoods ADD `briefContent` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '简单内容介绍,移动端添加商品' AFTER `content`;";
  1004. Yii::$app->db->createCommand($sql)->execute();
  1005. //各个环境开放平台的更新
  1006. $env = getenv("YII_ENV");
  1007. //花美灵
  1008. if ($env == 'dev') {
  1009. $sql = "delete from `xhMerchant`;delete from `xhWxOpen`;";
  1010. $sql .= "insert into `xhWxOpen`(`id`,`appId`,`openName`,`appSecret`,`merchantId`,`adminId`,`token`,`verifyTicket`,`verifyTicketTime`,`componentAccessToken`,`componentAccessTokenTime`,`aesKey`,`preAuthCode`,`preAuthCodeTime`,`createTime`,`updateTime`) values (1,'wxe4428cfe08fc74d6','花美灵','cdbcb1ea6bf2249b269c542c870bd96d',0,0,'XH11464773308','ticket@@@mUTfkCa6p-W5fIB_YvWDiSzUvsCVJNN6fELjsHnZ07Nvz5hfRMyfHzmjn3ZPK9Gi5aqY2_H7ruxnX2cdYdjRIg','2020-01-09 21:04:50','29_RQZoasQKtSPVa754Inhu3aKiAfou3KYGJT5SGtqWy74cHoL3aEfPt0xTR6JMuULyDN4-25fBDTE-VS_jtalbq6WTbb5d7B-K4dUSS3zDbKykNtctzFnBBnDzkbGRXcw2b8OS8JY_HHblIlFZTVLcAGAGIY','2020-01-09 21:36:26','Gm2BIikJaExAbiyafGoJGFbEsECb4mDEnyEYgl9WXW5','preauthcode@@@IJXez4FxmgNRLow1rmxhAxM2eaKQYY6g1ocsK8Koe4v9mx7mr07arTNZTLxe2Sf2','2019-12-19 16:13:58','2019-04-17 14:49:19','2020-01-09 12:54:50');";
  1011. Yii::$app->db->createCommand($sql)->execute();
  1012. }
  1013. //花掌柜助手
  1014. if ($env == 'test') {
  1015. $sql = "delete from `xhMerchant`;delete from `xhWxOpen`;";
  1016. $sql .= "insert into `xhWxOpen`(`id`,`appId`,`openName`,`appSecret`,`merchantId`,`adminId`,`token`,`verifyTicket`,`verifyTicketTime`,`componentAccessToken`,`componentAccessTokenTime`,`aesKey`,`preAuthCode`,`preAuthCodeTime`,`createTime`,`updateTime`) values (1,'wx364800c320a0cf53','花掌柜助手','6a83bfa98f3ff5e66b1a85a19c54ebdb',0,0,'XH11464773308','ticket@@@mUTfkCa6p-W5fIB_YvWDiSzUvsCVJNN6fELjsHnZ07Nvz5hfRMyfHzmjn3ZPK9Gi5aqY2_H7ruxnX2cdYdjRIg','2020-01-09 21:04:50','29_RQZoasQKtSPVa754Inhu3aKiAfou3KYGJT5SGtqWy74cHoL3aEfPt0xTR6JMuULyDN4-25fBDTE-VS_jtalbq6WTbb5d7B-K4dUSS3zDbKykNtctzFnBBnDzkbGRXcw2b8OS8JY_HHblIlFZTVLcAGAGIY','2020-01-09 21:36:26','Gm2BIikJaExAbiyafGoJGFbEsECb4mDEnyEYgl9WXW5','preauthcode@@@IJXez4FxmgNRLow1rmxhAxM2eaKQYY6g1ocsK8Koe4v9mx7mr07arTNZTLxe2Sf2','2019-12-19 16:13:58','2019-04-17 14:49:19','2020-01-09 12:54:50');";
  1017. Yii::$app->db->createCommand($sql)->execute();
  1018. }
  1019. }
  1020. //重新拉取并保存国兰客户的头像和图片 shish 2020.1.12
  1021. public function actionSyncAvatar()
  1022. {
  1023. UserService::syncAvatar(12358);
  1024. }
  1025. //可以重复初始化的一些东西 shish 2020.1.21
  1026. public function actionRepeatInit($id)
  1027. {
  1028. //初始化微信菜单
  1029. $merchant = xhMerchantService::getById($id);
  1030. xhWxMenuService::applyInit($merchant);
  1031. }
  1032. }