@ -0,0 +1,12 @@
|
||||
package au.com.royalpay.payment.manage.customers.core;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
public interface CustomerPaymentInfoService {
|
||||
|
||||
void save(JSONObject paymentInfo);
|
||||
|
||||
void update(JSONObject paymentInfo);
|
||||
|
||||
JSONObject selectPaymentInfoByOpenId(String open_id);
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package au.com.royalpay.payment.manage.customers.core.impls;
|
||||
|
||||
import au.com.royalpay.payment.manage.customers.core.CustomerPaymentInfoService;
|
||||
import au.com.royalpay.payment.manage.mappers.system.SysCustomerPaymentInfoMapper;
|
||||
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
|
||||
import au.com.royalpay.payment.tools.utils.id.IdUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class CustomerPaymentInfoImpl implements CustomerPaymentInfoService {
|
||||
@Resource
|
||||
private SysCustomerPaymentInfoMapper sysCustomerPaymentInfoMapper;
|
||||
|
||||
@Override
|
||||
public void save(JSONObject paymentInfo) {
|
||||
if (sysCustomerPaymentInfoMapper.selectPaymentInfo(paymentInfo.getString("wechat_openid")) != null) {
|
||||
throw new BadRequestException("openid already exists");
|
||||
}
|
||||
|
||||
paymentInfo.put("id", IdUtil.getId());
|
||||
sysCustomerPaymentInfoMapper.save(paymentInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(JSONObject paymentInfo) {
|
||||
if (paymentInfo.getString("id") == null) {
|
||||
throw new BadRequestException("ID is empty");
|
||||
}
|
||||
sysCustomerPaymentInfoMapper.update(paymentInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject selectPaymentInfoByOpenId(String open_id) {
|
||||
return sysCustomerPaymentInfoMapper.selectPaymentInfo(open_id);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package au.com.royalpay.payment.manage.customers.web;
|
||||
|
||||
import au.com.royalpay.payment.manage.customers.core.CustomerPaymentInfoService;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/customer/payment")
|
||||
public class CustomerPaymentInfoController {
|
||||
|
||||
@Resource
|
||||
private CustomerPaymentInfoService customerPaymentInfoService;
|
||||
|
||||
@RequestMapping(value = "/update", method = RequestMethod.POST)
|
||||
public void savePaymentInfo(@RequestBody JSONObject paymentInfo) {
|
||||
customerPaymentInfoService.save(paymentInfo);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/update", method = RequestMethod.PUT)
|
||||
public void updatePaymentInfo(@RequestBody JSONObject paymentInfo) {
|
||||
customerPaymentInfoService.update(paymentInfo);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/{openid}/check", method = RequestMethod.GET)
|
||||
public JSONObject selectPaymentInfo(@PathVariable String openid) {
|
||||
return customerPaymentInfoService.selectPaymentInfoByOpenId(openid);
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package au.com.royalpay.payment.manage.dev.core;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
public interface HfUpdateService {
|
||||
|
||||
String updateStatus();
|
||||
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
package au.com.royalpay.payment.manage.dev.core.impl;
|
||||
|
||||
import au.com.royalpay.payment.manage.dev.core.HfUpdateService;
|
||||
import au.com.royalpay.payment.manage.mappers.system.ClientConfigMapper;
|
||||
import au.com.royalpay.payment.manage.mappers.system.ClientMapper;
|
||||
import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApi;
|
||||
import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApiProvider;
|
||||
import au.com.royalpay.payment.tools.env.PlatformEnvironment;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class HfUpdateImpl implements HfUpdateService {
|
||||
@Resource
|
||||
private ClientMapper clientMapper;
|
||||
@Resource
|
||||
private MpWechatApiProvider mpWechatApiProvider;
|
||||
@Resource
|
||||
private ClientConfigMapper clientConfigMapper;
|
||||
|
||||
@Override
|
||||
public String updateStatus() {
|
||||
List<JSONObject> clientIds = clientMapper.findByhfPayUrlNotNull();
|
||||
clientIds.forEach(dbResult -> {
|
||||
String longUrl = PlatformEnvironment.getEnv().concatUrl("/api/v1.0/hf_gateway/partners/" + dbResult.getString("client_moniker") + "/jump/pc");
|
||||
MpWechatApi api = mpWechatApiProvider.getNewPaymentApi();
|
||||
String url = api.registerShortUrl(longUrl);
|
||||
dbResult.put("hf_pay_url", url);
|
||||
JSONObject config = new JSONObject();
|
||||
config.put("client_id",dbResult.getString("client_id"));
|
||||
config.put("hf_pay_url", url);
|
||||
clientConfigMapper.update(config);
|
||||
clientMapper.update(dbResult);
|
||||
|
||||
});
|
||||
return "ok";
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package au.com.royalpay.payment.manage.mappers.system;
|
||||
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@AutoMapper(tablename = "sys_customer_payment_info", pkName = "id")
|
||||
public interface SysCustomerPaymentInfoMapper {
|
||||
|
||||
@AutoSql(type = SqlType.INSERT)
|
||||
void save(JSONObject paymentInfo);
|
||||
|
||||
@AutoSql(type = SqlType.UPDATE)
|
||||
void update(JSONObject paymentInfo);
|
||||
|
||||
@AutoSql(type = SqlType.SELECT)
|
||||
JSONObject selectPaymentInfo(@Param(value = "wechat_openid") String open_id);
|
||||
|
||||
@AutoSql(type = SqlType.SELECT)
|
||||
JSONObject selectById(@Param(value = "id") String id);
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package au.com.royalpay.payment.manage.task;
|
||||
|
||||
import au.com.royalpay.payment.manage.mappers.system.ManagerMapper;
|
||||
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
|
||||
import au.com.royalpay.payment.tools.scheduler.SynchronizedScheduler;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
@ConditionalOnProperty(value = "app.run-tasks", havingValue = "false")
|
||||
public class UpdatePartnerPasswordTask {
|
||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
||||
@Resource
|
||||
private ClientManager clientManager;
|
||||
@Resource
|
||||
private SynchronizedScheduler synchronizedScheduler;
|
||||
@Resource
|
||||
private ManagerMapper managerMapper;
|
||||
|
||||
private final static String EMAIL = "lily.tao@royalpay.com.au,bella.sun@royalpay.com.au," +
|
||||
"astro.dai@royalpay.com.au,taylor.dang@royalpay.com.au";
|
||||
|
||||
@Scheduled(cron = "0 0 9 28 * ?")
|
||||
public void resetPartnerPassword() {
|
||||
synchronizedScheduler.executeProcess("manage_task:resetPartnerPassword", 120_000, () -> {
|
||||
final List<String> emails = managerMapper.listDevManager();
|
||||
List<String> emailList = Arrays.asList(EMAIL.split(","));
|
||||
emailList.stream().forEach(email -> {
|
||||
if (!emails.contains(email)) {
|
||||
emails.add(email);
|
||||
}
|
||||
});
|
||||
clientManager.updateAllPartnerPassword("PINE", emails);
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
<html xmlns:th="http://www.thymeleaf.org" lang="zh">
|
||||
|
||||
<style type="text/css">
|
||||
table.gridtable {
|
||||
font-family: verdana,arial,sans-serif;
|
||||
font-size:11px;
|
||||
color:#333333;
|
||||
border-width: 1px;
|
||||
border-color: #666666;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.gridtable th {
|
||||
border-width: 1px;
|
||||
padding: 8px;
|
||||
border-style: solid;
|
||||
border-color: #666666;
|
||||
background-color: #dedede;
|
||||
}
|
||||
table.gridtable td {
|
||||
border-width: 1px;
|
||||
padding: 8px;
|
||||
border-style: solid;
|
||||
border-color: #666666;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
<table class="gridtable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>序号</th>
|
||||
<th>商户</th>
|
||||
<th>角色</th>
|
||||
<th>用户名</th>
|
||||
<th>密码</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="account : ${accounts}">
|
||||
<td th:text="${accountStat.index} + 1"></td>
|
||||
<td th:text="${account.client_moniker}"></td>
|
||||
<td th:if="${account.role} == 1">admin</td>
|
||||
<td th:if="${account.role} == 2">Manager</td>
|
||||
<td th:if="${account.role} == 3">Cashier</td>
|
||||
<td th:text="${account.username}"></td>
|
||||
<td th:text="${account.password}"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</html>
|
@ -0,0 +1,15 @@
|
||||
<section class="content-header">
|
||||
<h1>更新HF短链接</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-cog"></i> Basic Config
|
||||
</li>
|
||||
<li><a ui-sref="^">Dev Tools</a></li>
|
||||
<li class="active">hfupdate</li>
|
||||
</ol>
|
||||
</section>
|
||||
<section class="content">
|
||||
<div class="box">
|
||||
<button class="btn btn-primary" ng-click="select()">Update</button> <label ng-hide="selecttotal" style="padding-left: 30px">请稍后</label>
|
||||
</div>
|
||||
</section>
|
After Width: | Height: | Size: 2.8 KiB |
@ -0,0 +1,48 @@
|
||||
<!--<div class="panel panel-default" ng-if="!partner.parent_client_id || ('00010'|withRole)">-->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-horizontal" ng-form="configForm">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">WeChat Sub Merchant Id</label>
|
||||
<div class="col-sm-9">
|
||||
<p ng-if="!ctrl.editSubMerchant" class="form-control-static">
|
||||
{{paymentInfo.sub_merchant_id||'Not Configure'}}
|
||||
<a role="button" ng-click="ctrl.editSubMerchant=true" ng-if="'011'|withRole"><i class="fa fa-edit"></i></a>
|
||||
<i class="fa fa-clock-o text-danger" title="Using temp Sub Merchant ID" ng-if="paymentInfo.temp_sub_merchant"></i>
|
||||
<span class="small" ng-if="('10'|withRole) &&paymentInfo.sub_merchant_id&&paymentInfo.merchant_id"><b>Merchant ID</b>:{{paymentInfo.merchant_id | choose_merchant_id}}</span>
|
||||
|
||||
<span class="small"
|
||||
ng-if="('10'|withRole) &&paymentInfo.sub_merchant_id&&paymentInfo.sub_merchant_id_log">
|
||||
<a class="text-primary" role="button" title="modify logs"
|
||||
ng-click="showSubMerchantLogs(sub_merchant_id_logs)">
|
||||
<span class="pull-right-container">
|
||||
<span class="label label-primary">history</span>
|
||||
</span>
|
||||
</a>
|
||||
</span>
|
||||
</p>
|
||||
<div class="input-group" ng-if="ctrl.editSubMerchant">
|
||||
<input type="text" class="form-control" ng-model="paymentInfo.sub_merchant_id"
|
||||
title="WeChat Sub Merchant Id">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-success" ng-click="saveSubMerchantId()">
|
||||
<i class="fa fa-check"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-danger" ng-click="ctrl.editSubMerchant=false">
|
||||
<i class="fa fa-remove"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -0,0 +1,205 @@
|
||||
body {
|
||||
color: #333333;
|
||||
font-family: PingFang-SC-Regular;
|
||||
font-size: 14px;
|
||||
letter-spacing: 0px;
|
||||
}
|
||||
|
||||
ul, li {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
input::-webkit-input-placeholder {
|
||||
color: #C0C0C0;
|
||||
}
|
||||
input::-moz-placeholder { /* Mozilla Firefox 19+ */
|
||||
color: #C0C0C0;
|
||||
}
|
||||
input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
|
||||
color: #C0C0C0;
|
||||
}
|
||||
input:-ms-input-placeholder { /* Internet Explorer 10-11 */
|
||||
color: #C0C0C0;
|
||||
}
|
||||
|
||||
.my-input {
|
||||
border-top: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #EBEBEB;
|
||||
border-left: 0;
|
||||
padding: 10px 0;
|
||||
width: 100%;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tab-item {
|
||||
position:relative;
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
width:100px;
|
||||
background:#fff;
|
||||
padding: 10px 0px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #EBEBEB;
|
||||
margin-right: -4px;
|
||||
box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.change-color {
|
||||
color: #FF6600;
|
||||
border-bottom: 1px solid #FF6600;
|
||||
}
|
||||
|
||||
.s1{
|
||||
position:absolute;
|
||||
bottom:-1px;
|
||||
left:45px;
|
||||
width:0px;
|
||||
height:0px;
|
||||
border-top:5px solid transparent;
|
||||
border-left:5px solid transparent;
|
||||
border-right:5px solid transparent;
|
||||
border-bottom:5px solid #EBEBEB;
|
||||
}
|
||||
|
||||
.s1-change-color {
|
||||
border-bottom:5px solid #FF6600;
|
||||
}
|
||||
|
||||
.s2{
|
||||
position:absolute;
|
||||
bottom:-3px;
|
||||
left:45px;
|
||||
width:0px;
|
||||
height:0px;
|
||||
border-top:5px solid transparent;
|
||||
border-left:5px solid transparent;
|
||||
border-right:5px solid transparent;
|
||||
border-bottom:5px solid #fff;
|
||||
}
|
||||
|
||||
.bg-pc {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("../img/bg_pc.png") no-repeat center transparent;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: box;
|
||||
box-pack: center;
|
||||
box-orient: vertical;
|
||||
display: -webkit-box;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
.main {
|
||||
width: 700px;
|
||||
padding: 40px 0 0 70px;
|
||||
background-color: #FFFFFF;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.main-logo {
|
||||
width: 770px;
|
||||
height: 47px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.main-left {
|
||||
width: 300px;
|
||||
display: inline-block;
|
||||
margin-right: 50px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.input-item {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.commit-button {
|
||||
background-color: #FF6600;
|
||||
color: #FFFFFF;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 10px 0;
|
||||
font-size: 17px;
|
||||
border: none;
|
||||
border-radius: 2px;
|
||||
margin: 20px 0;
|
||||
box-shadow: 0 2px 11px 0;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
select {
|
||||
appearance:none;
|
||||
-moz-appearance:none;
|
||||
-webkit-appearance:none;
|
||||
background: url("../img/down.png") no-repeat scroll right center transparent;
|
||||
}
|
||||
|
||||
.select-placeholder {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
color: #C0C0C0;
|
||||
}
|
||||
|
||||
.main-middle {
|
||||
width: 2px;
|
||||
height: 306px;
|
||||
border: 1px dashed #EBEBEB;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
vertical-align: top;
|
||||
margin: 47px 40px 0 0;
|
||||
}
|
||||
.main-right {
|
||||
vertical-align: top;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
padding-top: 72px;
|
||||
}
|
||||
.main-right-top {
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #EBEBEB;
|
||||
box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.30);
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 120px;
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
line-height: 120px;
|
||||
}
|
||||
.main-right-top img {
|
||||
width: 35px;
|
||||
height: 40px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.royalpay {
|
||||
font-size: 16px;
|
||||
letter-spacing: 0px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
.description {
|
||||
margin-top: 162px;
|
||||
letter-spacing: 0px;
|
||||
}
|
||||
|
||||
.my-modal {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
opacity:0.80;
|
||||
z-index: 111;
|
||||
}
|
||||
.qrcode {
|
||||
left: 0;
|
||||
right: 0;
|
||||
text-align: center;
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
$("#bank-li").hide();
|
||||
var currentIndex = 0;
|
||||
$(".main .main-left ul li.tab-item").click(function () {
|
||||
$("#qrode").hide();
|
||||
$("#payment-form").show();
|
||||
var selectedIndex = $(this).index();
|
||||
$(this).addClass("change-color").siblings().removeClass("change-color");
|
||||
$(this).children(".s1").addClass("s1-change-color");
|
||||
$(this).siblings().children(".s1").removeClass("s1-change-color");
|
||||
if (selectedIndex == 2) {
|
||||
$("#bank-li").show();
|
||||
} else {
|
||||
$("#bank-li").hide();
|
||||
}
|
||||
});
|
||||
|
||||
$("#modal-close").click(function () {
|
||||
$(".my-modal").hide();
|
||||
$(".qrcode").hide();
|
||||
});
|
||||
|
||||
var select = $("select#bank-select,#product-category-select");
|
||||
if (select.val() != "")
|
||||
select.prev().hide();
|
||||
select.bind("change", function () {
|
||||
if ($(this).val() != "") {
|
||||
$(this).prev().hide();
|
||||
}
|
||||
});
|
||||
var bankList = [
|
||||
{label:'招商银行',value:'CMB'},
|
||||
{label:'中国工商银行',value:'ICBC'},
|
||||
{label:'中国农业银行',value:'ABC'},
|
||||
{label:'中国建设银行',value:'CCB'},
|
||||
{label:'中国银行',value:'BOC'},
|
||||
{label:'浦发银行',value:'SPDB'},
|
||||
{label:'中国交通银行',value:'BCOM'},
|
||||
{label:'中国民生银行',value:'CMBC'},
|
||||
{label:'广东发展银行',value:'GDB'},
|
||||
{label:'中信银行',value:'CITIC'},
|
||||
{label:'华夏银行',value:'HXB'},
|
||||
{label:'上海农村商业银行',value:'SRCB'},
|
||||
{label:'中国邮政储蓄银行',value:'PSBC'},
|
||||
{label:'北京银行',value:'BOB'},
|
||||
{label:'渤海银行',value:'CBHB'},
|
||||
{label:'北京农商银行',value:'BJRCB'},
|
||||
{label:'南京银行',value:'NJCB'},
|
||||
{label:'中国光大银行',value:'CEB'},
|
||||
{label:'浙商银行',value:'CZB'},
|
||||
{label:'兴业银行',value:'CIB'},
|
||||
{label:'杭州银行',value:'HZB'},
|
||||
{label:'平安银行',value:'PAB'},
|
||||
{label:'上海银行',value:'SHB'},
|
||||
];
|
||||
var productList = [
|
||||
{label:'护肤品',value:'100003'},
|
||||
{label:'洗发护发',value:'100004'},
|
||||
{label:'身体护理',value:'100005'},
|
||||
{label:'口腔护理',value:'100006'},
|
||||
{label:'包包',value:'100007'},
|
||||
{label:'女装',value:'100008'},
|
||||
{label:'男装',value:'100009'},
|
||||
{label:'童装',value:'100010'},
|
||||
{label:'内衣',value:'100011'},
|
||||
{label:'睡衣',value:'100012'},
|
||||
{label:'袜品',value:'100013'},
|
||||
{label:'配饰',value:'100014'},
|
||||
{label:'香水',value:'100015'},
|
||||
{label:'彩妆',value:'100016'},
|
||||
{label:'奶粉',value:'100017'},
|
||||
{label:'母婴营养保健',value:'100018'},
|
||||
{label:'婴儿辅食',value:'100019'},
|
||||
{label:'尿裤纸巾',value:'100020'},
|
||||
{label:'男鞋',value:'100021'},
|
||||
{label:'女鞋',value:'100022'},
|
||||
{label:'运动鞋',value:'100023'},
|
||||
{label:'户外鞋',value:'100024'},
|
||||
{label:'运动服',value:'100025'},
|
||||
{label:'休闲服装',value:'100026'},
|
||||
{label:'家纺/床品',value:'100027'},
|
||||
{label:'生活日用',value:'100028'},
|
||||
{label:'厨房电器',value:'100029'},
|
||||
{label:'家装软饰',value:'100030'},
|
||||
{label:'生活电器',value:'100031'},
|
||||
{label:'手机',value:'100032'},
|
||||
{label:'手机配件',value:'100033'},
|
||||
{label:'数码相机',value:'100034'},
|
||||
{label:'单反相机',value:'100035'},
|
||||
{label:'摄像机',value:'100036'},
|
||||
{label:'镜头',value:'100037'},
|
||||
{label:'耳机/耳麦',value:'100038'},
|
||||
{label:'音箱/音响',value:'100039'},
|
||||
{label:'数码配件',value:'100040'},
|
||||
{label:'智能手环',value:'100041'},
|
||||
{label:'影音娱乐',value:'100042'},
|
||||
{label:'笔记本',value:'100043'},
|
||||
{label:'进口食品',value:'100044'},
|
||||
{label:'休闲食品',value:'100045'},
|
||||
{label:'营养品',value:'100046'},
|
||||
{label:'地方特产',value:'100047'}
|
||||
];
|
||||
|
After Width: | Height: | Size: 3.5 MiB |
After Width: | Height: | Size: 271 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 277 B |
After Width: | Height: | Size: 253 B |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 23 KiB |