记得上下班打卡 | git大法好,push需谨慎

Commit e57452fa authored by 张国柄's avatar 张国柄

+API:admin:店铺列表、详情、审核;

parent c958bd89
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@ApiModel(value = "GoblinStoreCertificationVo", description = "店铺认证信息")
@Data
public class GoblinStoreCertificationVo implements Serializable, Cloneable {
private static final long serialVersionUID = -7125674300755279796L;
@ApiModelProperty(position = 11, value = "证件类型[1-二代居民身份证]")
private String personCertType;
@ApiModelProperty(position = 12, value = "证件姓名[32]")
private String personName;
@ApiModelProperty(position = 13, value = "证件号码[32]")
private String personCertCode;
@ApiModelProperty(position = 14, value = "证件有效期[50]")
private String personCertValidity;
@ApiModelProperty(position = 15, value = "证件是否长期有效[0-否|1-是]")
private String personCertLasting;
@ApiModelProperty(position = 16, value = "证件正面照[256]")
private String personCertFpic;
@ApiModelProperty(position = 17, value = "证件背面照[256]")
private String personCertBpic;
@ApiModelProperty(position = 18, value = "证件背面照[256]")
private String personCertSpic;
@ApiModelProperty(position = 19, value = "删除标记[0-未删除|1-删除]")
private String delFlg;
@ApiModelProperty(position = 20, value = "省ID[20]")
private String provinceId;
@ApiModelProperty(position = 21, value = "省名称[32]")
private String provinceName;
@ApiModelProperty(position = 22, value = "市ID[20]")
private String cityId;
@ApiModelProperty(position = 23, value = "市名称[32]")
private String cityName;
@ApiModelProperty(position = 24, value = "县ID[20]")
private String countyId;
@ApiModelProperty(position = 25, value = "县名称[32]")
private String countyName;
@ApiModelProperty(position = 26, value = "详细地址[128]")
private String busAddress;
@ApiModelProperty(position = 27, value = "商户名称[64]")
private String busName;
@ApiModelProperty(position = 28, value = "统一社会信用代码[32]")
private String busCertCode;
@ApiModelProperty(position = 29, value = "营业执照有效期[50]")
private String busCertValidity;
@ApiModelProperty(position = 30, value = "证件是否长期有效[0-否|1-是]")
private String busCertLasting;
@ApiModelProperty(position = 31, value = "营业执照照片[256]")
private String busCertPic;
@ApiModelProperty(position = 32, value = "资质证书[256]")
private String busQualityPic;
private String updatedBy;
private LocalDateTime updatedAt;
}
package com.liquidnet.service.goblin.dto.vo; package com.liquidnet.service.goblin.dto.vo;
public class GoblinStoreInfoVo { import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@ApiModel(value = "GoblinStoreInfoVo", description = "店铺基础信息")
@Data
public class GoblinStoreInfoVo implements Serializable, Cloneable {
private static final long serialVersionUID = -2268722236055938975L;
@ApiModelProperty(position = 11, value = "店铺ID[64]")
private String storeId;
@ApiModelProperty(position = 12, value = "店主UID[64]")
private String uid;
@ApiModelProperty(position = 13, value = "店铺名称[128]")
private String storeName;
@ApiModelProperty(position = 14, value = "店铺LOGO[256]")
private String logoPic;
@ApiModelProperty(position = 15, value = "店铺背景图[256]")
private String backgroundPic;
@ApiModelProperty(position = 16, value = "店铺介绍[500]")
private String introduce;
@ApiModelProperty(position = 17, value = "店铺状态[0-填写资料中|1-店铺审核中|2-审核不通过|3-审核通过|4-停业|5-营业]")
private String status;
@ApiModelProperty(position = 18, value = "拒绝原因[256]")
private String reason;
@ApiModelProperty(position = 19, value = "店铺类型[1-普通店铺|2-加盟|3-连锁|5-直营]")
private String storeType;
@ApiModelProperty(position = 20, value = "认证类型[1-企业/公司|2-个体工商户]")
private String certType;
@ApiModelProperty(position = 21, value = "店铺评分[8,2]")
private BigDecimal aveScore;
@ApiModelProperty(position = 22, value = "客服账号[128]")
private String serviceAcc;
@ApiModelProperty(position = 23, value = "店铺有效期")
private LocalDateTime validity;
private String createdBy;
private LocalDateTime createdAt;
private String updatedBy;
private LocalDateTime updatedAt;
@ApiModelProperty(position = 25, value = "店铺认证信息")
private GoblinStoreCertificationVo certificationVo;
private static final GoblinStoreInfoVo obj = new GoblinStoreInfoVo();
public static GoblinStoreInfoVo getNew() {
try {
return (GoblinStoreInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinStoreInfoVo();
}
}
} }
package com.liquidnet.client.admin.web.controller.zhengzai.goblin;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.zhengzai.goblin.service.IGoblinStoreCertificationService;
import com.liquidnet.client.admin.zhengzai.goblin.service.IGoblinStoreInfoService;
import com.liquidnet.service.goblin.entity.GoblinStoreCertification;
import com.liquidnet.service.goblin.entity.GoblinStoreInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
@Api(tags = "店铺管理")
@Controller
@RequestMapping("goblin/store")
public class GoblinStoreAdminController extends BaseController {
private final String prefix = "zhengzai/goblin/store";
@Autowired
IGoblinStoreInfoService goblinStoreInfoService;
@Autowired
IGoblinStoreCertificationService goblinStoreCertificationService;
@GetMapping()
public String store() {
return prefix + "/store";
}
@RequiresPermissions("goblin:store:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(GoblinStoreInfo storeInfo) {
LambdaQueryWrapper<GoblinStoreInfo> lambdaQueryWrapper = Wrappers.lambdaQuery(GoblinStoreInfo.class);
if (StringUtils.isNotBlank(storeInfo.getStatus())) {
lambdaQueryWrapper.eq(GoblinStoreInfo::getStatus, storeInfo.getStatus());
}
if (StringUtils.isNotBlank(storeInfo.getStoreName())) {
lambdaQueryWrapper.like(GoblinStoreInfo::getStoreName, storeInfo.getStoreName());
}
if (StringUtils.isNotBlank(storeInfo.getCertType())) {
lambdaQueryWrapper.eq(GoblinStoreInfo::getCertType, storeInfo.getCertType());
}
lambdaQueryWrapper.select(
GoblinStoreInfo::getStoreId,
GoblinStoreInfo::getStoreName,
GoblinStoreInfo::getCertType,
GoblinStoreInfo::getStatus
);
startPage();
return getDataTable(goblinStoreInfoService.list(lambdaQueryWrapper));
}
@RequiresPermissions("goblin:store:info")
@GetMapping("info/{storeId}")
public String info(@PathVariable("storeId") String storeId, ModelMap mmap) {
LambdaQueryWrapper<GoblinStoreInfo> storeInfoLambdaQueryWrapper = Wrappers.lambdaQuery(GoblinStoreInfo.class);
storeInfoLambdaQueryWrapper.eq(GoblinStoreInfo::getStoreId, storeId);
storeInfoLambdaQueryWrapper.select(
GoblinStoreInfo::getStoreName,
GoblinStoreInfo::getLogoPic,
GoblinStoreInfo::getBackgroundPic,
GoblinStoreInfo::getIntroduce,
GoblinStoreInfo::getStatus,
GoblinStoreInfo::getReason,
GoblinStoreInfo::getStoreType,
GoblinStoreInfo::getCertType,
GoblinStoreInfo::getAveScore,
GoblinStoreInfo::getServiceAcc,
GoblinStoreInfo::getValidity
);
mmap.put("storeInfo", goblinStoreInfoService.getOne(storeInfoLambdaQueryWrapper));
LambdaQueryWrapper<GoblinStoreCertification> storeCertificationLambdaQueryWrapper = Wrappers.lambdaQuery(GoblinStoreCertification.class);
storeCertificationLambdaQueryWrapper.eq(GoblinStoreCertification::getStoreId, storeId);
storeCertificationLambdaQueryWrapper.select(
GoblinStoreCertification::getPersonCertType,
GoblinStoreCertification::getPersonName,
GoblinStoreCertification::getPersonCertCode,
GoblinStoreCertification::getPersonCertValidity,
GoblinStoreCertification::getPersonCertLasting,
GoblinStoreCertification::getPersonCertFpic,
GoblinStoreCertification::getPersonCertBpic,
GoblinStoreCertification::getPersonCertSpic,
GoblinStoreCertification::getProvinceId,
GoblinStoreCertification::getProvinceName,
GoblinStoreCertification::getCityId,
GoblinStoreCertification::getCityName,
GoblinStoreCertification::getCountyId,
GoblinStoreCertification::getCountyName,
GoblinStoreCertification::getBusAddress,
GoblinStoreCertification::getBusName,
GoblinStoreCertification::getBusCertCode,
GoblinStoreCertification::getBusCertValidity,
GoblinStoreCertification::getBusCertLasting,
GoblinStoreCertification::getBusCertPic,
GoblinStoreCertification::getBusQualityPic
);
mmap.put("storeCertification", goblinStoreCertificationService.getOne(storeCertificationLambdaQueryWrapper));
return prefix + "/info";
}
@Log(title = "店铺管理:店铺审核:通过", businessType = BusinessType.UPDATE)
@RequiresPermissions("goblin:store:audit:accept")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "storeId", value = "店铺ID[64]")
})
@PostMapping("audit/accept")
@ResponseBody
public AjaxResult audit(String storeId) {
try {
return this.toAjax(goblinStoreInfoService.audit(storeId, String.valueOf(3), ShiroUtils.getLoginName()));
} catch (Exception e) {
return toAjax(false);
}
}
@Log(title = "店铺管理:店铺审核:驳回", businessType = BusinessType.UPDATE)
@RequiresPermissions("goblin:store:audit:reject")
@PostMapping("audit/reject")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "storeId", value = "店铺ID[64]"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "reason", value = "拒绝原因[256]"),
})
@ResponseBody
public AjaxResult reject(String storeId, String reason) {
try {
return this.toAjax(goblinStoreInfoService.audit(storeId, String.valueOf(2), ShiroUtils.getLoginName()));
} catch (Exception e) {
return toAjax(false);
}
}
/** ------------------------------------------------------------------------ **/
}
...@@ -10,7 +10,7 @@ spring: ...@@ -10,7 +10,7 @@ spring:
cloud: cloud:
config: config:
# uri: http://127.0.0.1:7002/support-config # uri: http://127.0.0.1:7002/support-config
# uri: http://39.106.122.201:7002/support-config # uri: http://39.107.71.112:7002/support-config
name: ${spring.application.name},${spring.application.name}-druid #默认为spring.application.name name: ${spring.application.name},${spring.application.name}-druid #默认为spring.application.name
profile: ${liquidnet.cloudConfig.profile} profile: ${liquidnet.cloudConfig.profile}
discovery: discovery:
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('店铺详情')" />
</head>
<body class="gray-bg">
<div class="container-div">
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var storeInfo = /*[[${storeInfo}]]*/{};
console.log(storeInfo);
var storeCertification = /*[[${storeCertification}]]*/{};
console.log(storeCertification);
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('店铺列表')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="role-form">
<div class="select-list">
<ul>
<li>
审核状态:<select name="status" th:with="type=${@dict.getType('zhengzai_store_status')}">
<option value="">全部</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
店铺名称:<input type="text" name="roleName"/>
</li>
<li>
认证类型:<select name="status" th:with="type=${@dict.getType('zhengzai_store_cert_type')}">
<option value="">全部</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var acceptFlg = [[${@permission.hasPermi('goblin:store:audit:reject')}]];
var rejectFlg = [[${@permission.hasPermi('goblin:store:audit:reject')}]];
var infoFlg = [[${@permission.hasPermi('goblin:store:info')}]];
var prefix = ctx + "goblin/store";
var dicStoreCertType = [[${@dict.getType('zhengzai_store_cert_type')}]];
var dicStoreStatus = [[${@dict.getType('zhengzai_store_status')}]];
$(function() {
var options = {
url: prefix + "/list",
detailUrl: prefix + "/info/{id}",
sortName: "createdAt",
modalName: "店铺",
columns: [{
checkbox: true
},
{
field: 'storeName',
title: '店铺名称'
},
{
field: 'certType',
title: '店铺类型',
formatter: function(value, row, index) {
return $.table.selectDictLabel(dicStoreCertType, value);
}
},
{
field: 'status',
title: '店铺状态',
formatter: function(value, row, index) {
return $.table.selectDictLabel(dicStoreStatus, value);
}
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
if (row.status == '1') {
actions.push('<a class="btn btn-primary btn-xs ' + acceptFlg + '" href="javascript:void(0)" onclick="auditAccept(\'' + row.storeId + '\')"><i class="fa fa-check"></i>通过</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + rejectFlg + '" href="javascript:void(0)" onclick="auditReject(\'' + row.storeId + '\')"><i class="fa fa-close"></i>驳回</a> ');
}
actions.push('<a class="btn btn-warning btn-xs ' + infoFlg + '" href="javascript:void(0)" onclick="$.operate.detailTab(\'' + row.storeId + '\')"><i class="fa fa-info-circle"></i>查看</a> ');
return actions.join('');
}
}]
};
$.table.init(options);
});
/* 店铺审核:通过 */
function auditAccept(storeId) {
if (!acceptFlg) {
$.modal.confirm("确认要通过该店铺申请吗?", function() {
$.operate.post(prefix + "/audit/accept", { "storeId": storeId });
});
}
}
/* 店铺审核:驳回 */
function auditReject(storeId) {
if (!rejectFlg) {
var reasonVal = "TODO:弹窗输入拒绝原因";
alert(reasonVal);
// $.operate.post(prefix + "/audit/reject", { "storeId": storeId, "reason": reasonVal });
}
}
</script>
</body>
</html>
\ No newline at end of file
package com.liquidnet.client.admin.zhengzai.goblin.service;
import com.liquidnet.service.goblin.entity.GoblinStoreCertification;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 店铺认证信息 服务类
* </p>
*
* @author liquidnet
* @since 2021-12-27
*/
public interface IGoblinStoreCertificationService extends IService<GoblinStoreCertification> {
}
package com.liquidnet.client.admin.zhengzai.goblin.service;
import com.liquidnet.service.goblin.entity.GoblinStoreInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 店铺基础信息 服务类
* </p>
*
* @author liquidnet
* @since 2021-12-27
*/
public interface IGoblinStoreInfoService extends IService<GoblinStoreInfo> {
/**
* 店铺审核
*
* @param storeId 店铺ID
* @param status 店铺状态
* @param operator 操作人
* @return boolean
*/
boolean audit(String storeId, String status, String operator);
}
package com.liquidnet.client.admin.zhengzai.goblin.service.impl;
import com.liquidnet.client.admin.zhengzai.goblin.service.IGoblinStoreCertificationService;
import com.liquidnet.service.goblin.entity.GoblinStoreCertification;
import com.liquidnet.service.goblin.mapper.GoblinStoreCertificationMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 店铺认证信息 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-12-27
*/
@Service
public class GoblinStoreCertificationServiceImpl extends ServiceImpl<GoblinStoreCertificationMapper, GoblinStoreCertification> implements IGoblinStoreCertificationService {
}
package com.liquidnet.client.admin.zhengzai.goblin.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.goblin.service.IGoblinStoreInfoService;
import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.service.goblin.dto.vo.GoblinStoreInfoVo;
import com.liquidnet.service.goblin.entity.GoblinStoreInfo;
import com.liquidnet.service.goblin.mapper.GoblinStoreInfoMapper;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
/**
* <p>
* 店铺基础信息 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-12-27
*/
@Slf4j
@Service
public class GoblinStoreInfoServiceImpl extends ServiceImpl<GoblinStoreInfoMapper, GoblinStoreInfo> implements IGoblinStoreInfoService {
@Autowired
private MongoTemplate mongoTemplate;
@Override
@Transactional
public boolean audit(String storeId, String status, String operator) {
LocalDateTime now = LocalDateTime.now();
LambdaUpdateWrapper<GoblinStoreInfo> lambdaUpdateWrapper = Wrappers.lambdaUpdate(GoblinStoreInfo.class);
lambdaUpdateWrapper.eq(GoblinStoreInfo::getStoreId, storeId);
lambdaUpdateWrapper.eq(GoblinStoreInfo::getStatus, 1);
lambdaUpdateWrapper.set(GoblinStoreInfo::getStatus, status);
lambdaUpdateWrapper.set(GoblinStoreInfo::getUpdatedBy, operator);
lambdaUpdateWrapper.set(GoblinStoreInfo::getUpdatedAt, now);
if (this.update(lambdaUpdateWrapper)) {
Query query = Query.query(Criteria.where("storeId").is(storeId));
Update update = Update.update("status", status);
update.set("updatedBy", operator);
update.set("updatedAt", now);
UpdateResult updateResult = mongoTemplate.updateFirst(query, update, GoblinStoreInfoVo.class.getSimpleName());
if (updateResult.getModifiedCount() <= 0) {
log.error("店铺管理:店铺审核:MDB更新失败[storeId={},status={},operator={}]", storeId, status, operator);
throw new LiquidnetServiceException();
}
// TODO: 2021/12/29 zhanggb 同步REDIS
return true;
}
return false;
}
}
...@@ -93,15 +93,20 @@ public class GoblinGoodsSku implements Serializable { ...@@ -93,15 +93,20 @@ public class GoblinGoodsSku implements Serializable {
private String buyLimit; private String buyLimit;
/** /**
* 自定义展示[0-默认展示|1-隐藏不可购买] * 商品的店铺id,如果是平台的则为0
*/ */
private String skuAppear; private String storeId;
/** /**
* 单品有效期 * 单品有效期
*/ */
private LocalDateTime skuValidity; private LocalDateTime skuValidity;
/**
* 是否是虚拟商品[0-否|1-是]
*/
private String virtualFlg;
/** /**
* 审核状态[0-初始编辑|1-审核中|2-审核不通过|3-审核通过] * 审核状态[0-初始编辑|1-审核中|2-审核不通过|3-审核通过]
*/ */
...@@ -118,9 +123,9 @@ public class GoblinGoodsSku implements Serializable { ...@@ -118,9 +123,9 @@ public class GoblinGoodsSku implements Serializable {
private String shelvesStatus; private String shelvesStatus;
/** /**
* 是否是虚拟商品[0-否|1-是] * 自定义展示[0-默认展示|1-隐藏不可购买]
*/ */
private String virtualFlg; private String skuAppear;
/** /**
* 删除标记[0-未删除|1删除] * 删除标记[0-未删除|1删除]
......
...@@ -40,14 +40,14 @@ public class GoblinStoreCertification implements Serializable { ...@@ -40,14 +40,14 @@ public class GoblinStoreCertification implements Serializable {
private String personName; private String personName;
/** /**
* 证件号 * 证件号
*/ */
private String personCertCode; private String personCertCode;
/** /**
* 证件有效期 * 证件有效期
*/ */
private LocalDateTime personCertValidity; private String personCertValidity;
/** /**
* 证件是否长期有效[0-否|1-是] * 证件是否长期有效[0-否|1-是]
...@@ -122,7 +122,7 @@ public class GoblinStoreCertification implements Serializable { ...@@ -122,7 +122,7 @@ public class GoblinStoreCertification implements Serializable {
/** /**
* 营业执照有效期 * 营业执照有效期
*/ */
private LocalDateTime busCertValidity; private String busCertValidity;
/** /**
* 证件是否长期有效[0-否|1-是] * 证件是否长期有效[0-否|1-是]
......
...@@ -109,8 +109,8 @@ create table goblin_store_certification ...@@ -109,8 +109,8 @@ create table goblin_store_certification
store_id varchar(64) not null comment '店铺id', store_id varchar(64) not null comment '店铺id',
person_cert_type char default '0' comment '证件类型[1-二代居民身份证]', person_cert_type char default '0' comment '证件类型[1-二代居民身份证]',
person_name varchar(32) null comment '证件姓名', person_name varchar(32) null comment '证件姓名',
person_cert_code varchar(32) null comment '证件号', person_cert_code varchar(32) null comment '证件号',
person_cert_validity datetime null comment '证件有效期', person_cert_validity varchar(50) null comment '证件有效期',
person_cert_lasting char null comment '证件是否长期有效[0-否|1-是]', person_cert_lasting char null comment '证件是否长期有效[0-否|1-是]',
person_cert_fpic varchar(256) null comment '证件正面照', person_cert_fpic varchar(256) null comment '证件正面照',
person_cert_bpic varchar(256) null comment '证件背面照', person_cert_bpic varchar(256) null comment '证件背面照',
...@@ -124,8 +124,8 @@ create table goblin_store_certification ...@@ -124,8 +124,8 @@ create table goblin_store_certification
county_name varchar(32) null comment '县名称', county_name varchar(32) null comment '县名称',
bus_address varchar(128) null comment '详细地址', bus_address varchar(128) null comment '详细地址',
bus_name varchar(64) null comment '商户名称', bus_name varchar(64) null comment '商户名称',
bus_cert_code varchar(64) null comment '统一社会信用代码', bus_cert_code varchar(32) null comment '统一社会信用代码',
bus_cert_validity datetime null comment '营业执照有效期', bus_cert_validity varchar(50) null comment '营业执照有效期',
bus_cert_lasting char default '0' comment '证件是否长期有效[0-否|1-是]', bus_cert_lasting char default '0' comment '证件是否长期有效[0-否|1-是]',
bus_cert_pic varchar(256) null comment '营业执照照片', bus_cert_pic varchar(256) null comment '营业执照照片',
bus_quality_pic varchar(256) null comment '资质证书', bus_quality_pic varchar(256) null comment '资质证书',
...@@ -284,8 +284,8 @@ create table goblin_goods_sku ...@@ -284,8 +284,8 @@ create table goblin_goods_sku
sku_id varchar(64) not null primary key, sku_id varchar(64) not null primary key,
spu_id varchar(64) not null comment '商品id', spu_id varchar(64) not null comment '商品id',
sku_no varchar(45) not null comment '单品的编号', sku_no varchar(45) not null comment '单品的编号',
# name varchar(256) not null comment '单品的名称', name varchar(256) not null comment '单品的名称',
# subtitle varchar(256) null comment '单品的副标题', subtitle varchar(256) null comment '单品的副标题',
sku_pic varchar(256) null comment '单品默认图片的url', sku_pic varchar(256) null comment '单品默认图片的url',
sku_isbn varchar(100) null comment 'ISBN,针对CD/图书等', sku_isbn varchar(100) null comment 'ISBN,针对CD/图书等',
...@@ -298,12 +298,13 @@ create table goblin_goods_sku ...@@ -298,12 +298,13 @@ create table goblin_goods_sku
buy_factor char default '0' comment '购买限制[0-全部用户|1-仅会员|2-指定用户]', buy_factor char default '0' comment '购买限制[0-全部用户|1-仅会员|2-指定用户]',
buy_limit varchar(256) null comment '购买限制为2-指定用户时必填指定用户', buy_limit varchar(256) null comment '购买限制为2-指定用户时必填指定用户',
sku_appear char default '0' not null comment '自定义展示[0-默认展示|1-隐藏不可购买]', store_id varchar(64) null comment '商品的店铺id,如果是平台的则为0',
sku_validity datetime null comment '单品有效期', sku_validity datetime null comment '单品有效期',
virtual_flg char default '0' comment '是否是虚拟商品[0-否|1-是]',
status char default '0' null comment '审核状态[0-初始编辑|1-审核中|2-审核不通过|3-审核通过]', status char default '0' null comment '审核状态[0-初始编辑|1-审核中|2-审核不通过|3-审核通过]',
reason varchar(1024) null comment '审核拒绝原因', reason varchar(1024) null comment '审核拒绝原因',
shelves_status char default '0' comment '单品上架状态[0-待上架|1-下架|2-违规|3-上架]', shelves_status char default '0' comment '单品上架状态[0-待上架|1-下架|2-违规|3-上架]',
virtual_flg char default '0' comment '是否是虚拟商品[0-否|1-是]', sku_appear char default '0' not null comment '自定义展示[0-默认展示|1-隐藏不可购买]',
del_flg char default '0' comment '删除标记[0-未删除|1删除]', del_flg char default '0' comment '删除标记[0-未删除|1删除]',
shelves_at datetime null comment '上架时间', shelves_at datetime null comment '上架时间',
...@@ -318,6 +319,7 @@ create table goblin_goods_sku ...@@ -318,6 +319,7 @@ create table goblin_goods_sku
) engine = InnoDB comment '商品单品'; ) engine = InnoDB comment '商品单品';
create index idx_ggs_spu_id on goblin_goods_sku (spu_id); create index idx_ggs_spu_id on goblin_goods_sku (spu_id);
create index idx_ggs_store_id on goblin_goods_sku (store_id);
# -- >>------------------------------------------------------------------------------------ # -- >>------------------------------------------------------------------------------------
drop table if exists goblin_goods_spu_spec_value; drop table if exists goblin_goods_spu_spec_value;
create table goblin_goods_spu_spec_value create table goblin_goods_spu_spec_value
......
use dev_ln_scene;
#创建集合
db.createCollection("GoblinStoreInfoVo");
#创建索引
db.GoblinStoreInfoVo.createIndex({storeId:"hashed"});
#创建分片
sh.enableSharding("dev_ln_scene");
sh.shardCollection("dev_ln_scene.GoblinStoreInfoVo",{"storeId":"hashed"});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment