diff --git a/linjiashop-admin-api/src/main/resources/application-dev.properties b/linjiashop-admin-api/src/main/resources/application-dev.properties index 2c7f7a2c667e99fbb22efce3ea1593923b81d892..07102ed478b28be97eb1fade194b5d5ffe2e55ab 100644 --- a/linjiashop-admin-api/src/main/resources/application-dev.properties +++ b/linjiashop-admin-api/src/main/resources/application-dev.properties @@ -1,10 +1,10 @@ ## 开发环境配置 debug=true -spring.datasource.url=jdbc:mysql://enilu-db:3306/linjiashop?useUnicode=true&characterEncoding=UTF8 +spring.datasource.url=jdbc:mysql://127.0.0.1:3308/linjiashop?useUnicode=true&characterEncoding=UTF8 spring.datasource.username=root -spring.datasource.password=sheseerzuo123@ABC -## 首次启动需要设置下列配置为create,以便系统可以自动创建表并导入./import.sql文件 -spring.jpa.hibernate.ddl-auto=create +spring.datasource.password=root +## 首次启动需要设置下列配置为create,以便系统可以自动创建表并导入./import.sql文件 create update +spring.jpa.hibernate.ddl-auto=update #默认使用InnoDB引擎 spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect spring.datasource.sql-script-encoding=utf-8 diff --git a/linjiashop-admin/.npmrc b/linjiashop-admin/.npmrc new file mode 100644 index 0000000000000000000000000000000000000000..de3f0e95b9883f1a5cccc45ef66e1dc5ef51a50e --- /dev/null +++ b/linjiashop-admin/.npmrc @@ -0,0 +1,3 @@ +sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ +registry=https://registry.npm.taobao.org +ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/ \ No newline at end of file diff --git a/linjiashop-core/src/main/java/cn/enilu/flash/service/api/WeixinService.java b/linjiashop-core/src/main/java/cn/enilu/flash/service/api/WeixinService.java index 3d755f077e419c55864d60ff2e1178537c21e364..622ba9c722708261eeae1e86f46bc7d11274da20 100644 --- a/linjiashop-core/src/main/java/cn/enilu/flash/service/api/WeixinService.java +++ b/linjiashop-core/src/main/java/cn/enilu/flash/service/api/WeixinService.java @@ -121,11 +121,12 @@ public class WeixinService { if (wechatInfo != null) { ShopUser old = shopUserService.findByWechatOpenId(wechatInfo.getOpenId()); - if(old.getId().intValue()!=user.getId().intValue()){ + if(old!=null && old.getId().intValue()!=user.getId().intValue()){ throw new ApplicationException(ApplicationExceptionEnum.WECHAT_BIND_ANOTHER); } user.setWechatNickName(StringUtil.getValidChar(wechatInfo.getNickName())); user.setWechatHeadImgUrl(wechatInfo.getHeadUrl()); + user.setWechatOpenId(wechatInfo.getOpenId()); if (StringUtil.equals(user.getNickName(), user.getMobile())) { user.setNickName(user.getWechatNickName()); } diff --git a/linjiashop-core/src/main/java/cn/enilu/flash/service/shop/OrderService.java b/linjiashop-core/src/main/java/cn/enilu/flash/service/shop/OrderService.java index b3f3a32d8f02a8ece3919f8bae5404586da7bca9..098e167d5ea8c6e5fd0373ef525316bc43a4b4f5 100644 --- a/linjiashop-core/src/main/java/cn/enilu/flash/service/shop/OrderService.java +++ b/linjiashop-core/src/main/java/cn/enilu/flash/service/shop/OrderService.java @@ -11,8 +11,7 @@ import cn.enilu.flash.dao.shop.OrderLogRepository; import cn.enilu.flash.dao.shop.OrderRepository; import cn.enilu.flash.security.JwtUtil; import cn.enilu.flash.service.BaseService; -import cn.enilu.flash.utils.DateUtil; -import cn.enilu.flash.utils.RandomUtil; +import cn.enilu.flash.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -37,7 +36,7 @@ public class OrderService extends BaseService { * @return */ public String getOrderSn() { - return DateUtil.getAllTime() + RandomUtil.getRandomNumber(6); + return StringUtil.getNewOrderNo(); } public void save(Order order, List itemList) { diff --git a/linjiashop-core/src/main/java/cn/enilu/flash/utils/DateUtil.java b/linjiashop-core/src/main/java/cn/enilu/flash/utils/DateUtil.java index f71ed0e566bf72624e8bbc24ff42fb5cc8e9c0da..6f621fc62b8bf8614c6e0361353b2ed63f646a46 100644 --- a/linjiashop-core/src/main/java/cn/enilu/flash/utils/DateUtil.java +++ b/linjiashop-core/src/main/java/cn/enilu/flash/utils/DateUtil.java @@ -115,6 +115,9 @@ public class DateUtil { public static String getAllTime() { return formatDate(new Date(), "yyyyMMddHHmmss"); } + public static String getAllTime2() { + return formatDate(new Date(), "yyyyMMddHHmmssSSS"); + } /** * 获取YYYY-MM-DD HH:mm:ss格式 diff --git a/linjiashop-core/src/main/java/cn/enilu/flash/utils/StringUtil.java b/linjiashop-core/src/main/java/cn/enilu/flash/utils/StringUtil.java index ec9560ef3cbcca8841d407cc7514117e67ae2a5c..5cc159d6844e5c58e2bb3946156a68c448bffbfe 100644 --- a/linjiashop-core/src/main/java/cn/enilu/flash/utils/StringUtil.java +++ b/linjiashop-core/src/main/java/cn/enilu/flash/utils/StringUtil.java @@ -14,7 +14,6 @@ import java.util.regex.Pattern; * */ public class StringUtil { - public static final String EMPTY = ""; private static final AtomicLong ORDER_SEQ = new AtomicLong(1); private static final Pattern PATERN_IP = Pattern.compile("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"); @@ -446,4 +445,11 @@ public class StringUtil { } return result.toString(); } + + public static String getNewOrderNo() { + String orderNo = DateUtil.getAllTime2(); + orderNo += String.format("%03d", ORDER_SEQ.incrementAndGet() % 999 + 1); + return orderNo; + } + } diff --git a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/MobileApiApplication.java b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/MobileApiApplication.java index 27e5fe9628fffc35e2116418e7d6c172f4bb0840..72efd3d404a56398c8682041d7e1a368fb2c8d4f 100644 --- a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/MobileApiApplication.java +++ b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/MobileApiApplication.java @@ -1,37 +1,36 @@ -package cn.enilu.flash; - -import cn.enilu.flash.config.WxProperties; -import cn.enilu.flash.dao.BaseRepositoryFactoryBean; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.data.jpa.repository.config.EnableJpaAuditing; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; - -/** - * ApiApplication - * - * @author enilu - * @version 2018/9/11 0011 - */ -@EnableCaching -@SpringBootApplication -@EntityScan(basePackages="cn.enilu.flash.bean.entity") -@EnableJpaRepositories(basePackages = "cn.enilu.flash.dao", repositoryFactoryBeanClass = BaseRepositoryFactoryBean.class) -@EnableJpaAuditing -@EnableConfigurationProperties(WxProperties.class) -public class MobileApiApplication extends SpringBootServletInitializer { - - @Override - protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { - return application.sources(MobileApiApplication.class); - } - - public static void main(String[] args) { - SpringApplication.run(MobileApiApplication.class); - } -} +package cn.enilu.flash; + +import cn.enilu.flash.config.WxProperties; +import cn.enilu.flash.dao.BaseRepositoryFactoryBean; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +/** + * ApiApplication + * + * @author enilu + * @version 2018/9/11 0011 + */ +@EnableCaching +@SpringBootApplication +@EntityScan(basePackages="cn.enilu.flash.bean.entity") +@EnableJpaRepositories(basePackages = "cn.enilu.flash.dao", repositoryFactoryBeanClass = BaseRepositoryFactoryBean.class) +@EnableJpaAuditing +public class MobileApiApplication extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(MobileApiApplication.class); + } + + public static void main(String[] args) { + SpringApplication.run(MobileApiApplication.class); + } +} diff --git a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/config/ProPayProperties.java b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/config/ProPayProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..bb2b988551bcdd6e07fa5794f557add7da9f0a1a --- /dev/null +++ b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/config/ProPayProperties.java @@ -0,0 +1,27 @@ +package cn.enilu.flash.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +import lombok.Data; + +/** + * 项目支付配置 + * @author space + * + */ +@Data +@Component +@Configuration +@ConfigurationProperties(prefix = "propay") +public class ProPayProperties { + /** + * 是否真实支付 + */ + private boolean isPay; + /** + * 是否支付测试 开启则支付0.01元进行测试 + */ + private boolean isPayTest; +} diff --git a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/config/WxProperties.java b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/config/WxProperties.java index fe3e50a64ab17b3ac1abf1aa10474b7b9b815edb..b07c5cd141178d143c37613df6a40c54118fe07a 100644 --- a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/config/WxProperties.java +++ b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/config/WxProperties.java @@ -1,67 +1,74 @@ -package cn.enilu.flash.config; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties(prefix = "wx") -public class WxProperties { - - private String appId; - - private String appSecret; - - private String mchId; - - private String mchKey; - - private String notifyUrl; - - private String keyPath; - - public String getNotifyUrl() { - return notifyUrl; - } - - public void setNotifyUrl(String notifyUrl) { - this.notifyUrl = notifyUrl; - } - - public String getMchKey() { - return mchKey; - } - - public void setMchKey(String mchKey) { - this.mchKey = mchKey; - } - - public String getAppId() { - return this.appId; - } - - public void setAppId(String appId) { - this.appId = appId; - } - - public String getAppSecret() { - return appSecret; - } - - public void setAppSecret(String appSecret) { - this.appSecret = appSecret; - } - - public String getMchId() { - return mchId; - } - - public void setMchId(String mchId) { - this.mchId = mchId; - } - - public String getKeyPath() { - return keyPath; - } - - public void setKeyPath(String keyPath) { - this.keyPath = keyPath; - } -} +package cn.enilu.flash.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +import lombok.Data; + +@Data +@Component +@Configuration +@ConfigurationProperties(prefix = "wx") +public class WxProperties { + + private String appId; + + private String appSecret; + + private String mchId; + + private String mchKey; + + private String notifyUrl; + + private String keyPath; + + public String getNotifyUrl() { + return notifyUrl; + } + + public void setNotifyUrl(String notifyUrl) { + this.notifyUrl = notifyUrl; + } + + public String getMchKey() { + return mchKey; + } + + public void setMchKey(String mchKey) { + this.mchKey = mchKey; + } + + public String getAppId() { + return this.appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getAppSecret() { + return appSecret; + } + + public void setAppSecret(String appSecret) { + this.appSecret = appSecret; + } + + public String getMchId() { + return mchId; + } + + public void setMchId(String mchId) { + this.mchId = mchId; + } + + public String getKeyPath() { + return keyPath; + } + + public void setKeyPath(String keyPath) { + this.keyPath = keyPath; + } +} diff --git a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/mobile/controller/OrderController.java b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/mobile/controller/OrderController.java index 9b4822688bac1788dec4bdf6adb939b180f5b7d0..e5311b7b4acacf2a9c3122226ecea566517ab8f8 100644 --- a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/mobile/controller/OrderController.java +++ b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/mobile/controller/OrderController.java @@ -1,165 +1,167 @@ -package cn.enilu.flash.mobile.controller; - -import cn.enilu.flash.bean.constant.CfgKey; -import cn.enilu.flash.bean.constant.factory.PageFactory; -import cn.enilu.flash.bean.entity.shop.Address; -import cn.enilu.flash.bean.entity.shop.Cart; -import cn.enilu.flash.bean.entity.shop.Order; -import cn.enilu.flash.bean.entity.shop.OrderItem; -import cn.enilu.flash.bean.enumeration.shop.OrderEnum; -import cn.enilu.flash.bean.exception.ApplicationException; -import cn.enilu.flash.bean.exception.ApplicationExceptionEnum; -import cn.enilu.flash.bean.vo.front.Rets; -import cn.enilu.flash.bean.vo.query.SearchFilter; -import cn.enilu.flash.service.api.KdniaoResponse; -import cn.enilu.flash.service.api.KdniaoService; -import cn.enilu.flash.service.shop.AddressService; -import cn.enilu.flash.service.shop.CartService; -import cn.enilu.flash.service.shop.OrderService; -import cn.enilu.flash.service.system.CfgService; -import cn.enilu.flash.utils.HttpUtil; -import cn.enilu.flash.utils.Lists; -import cn.enilu.flash.utils.Maps; -import cn.enilu.flash.utils.StringUtil; -import cn.enilu.flash.utils.factory.Page; -import cn.enilu.flash.web.controller.BaseController; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Sort; -import org.springframework.web.bind.annotation.*; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -/** - * @author :enilu - * @date :Created in 11/6/2019 5:07 PM - */ -@RestController -@RequestMapping("/user/order") -public class OrderController extends BaseController { - private Logger logger = LoggerFactory.getLogger(getClass()); - @Autowired - private OrderService orderService; - @Autowired - private CartService cartService; - @Autowired - private AddressService addressService; - @Autowired - private CfgService cfgService; - @Autowired - private KdniaoService kdniaoService; - - @RequestMapping(value = "{orderSn}", method = RequestMethod.GET) - public Object get(@PathVariable(value = "orderSn") String orderSn) { - Order order = orderService.getByOrderSn(orderSn); - return Rets.success(order); - } - - @RequestMapping(value = "getOrders", method = RequestMethod.GET) - public Object getOrders(@RequestParam(value = "status", required = false) Integer status) { - Long idUser = getIdUser(HttpUtil.getRequest()); - Page page = new PageFactory().defaultPage(); - page.addFilter(SearchFilter.build("idUser", SearchFilter.Operator.EQ, idUser)); - page.setSort(Sort.by(Sort.Direction.DESC, "id")); - if (status != null && status != 0) { - page.addFilter(SearchFilter.build("status", SearchFilter.Operator.EQ, status)); - } - page = orderService.queryPage(page); - return Rets.success(page); - } - - @RequestMapping(value = "prepareCheckout", method = RequestMethod.GET) - public Object prepareCheckout(@RequestParam(value = "chosenAddressId", required = false) Long chosenAddressId, - @RequestParam(value = "idCarts") String idCarts) { - Long idUser = getIdUser(HttpUtil.getRequest()); - List filters = Lists.newArrayList( - SearchFilter.build("idUser", SearchFilter.Operator.EQ, idUser), - SearchFilter.build("id", SearchFilter.Operator.IN, StringUtil.splitForLong(idCarts, ",")) - ); - List list = cartService.queryAll(filters); - Address address = null; - logger.info("chosenAddressId:{}", chosenAddressId); - if (chosenAddressId == null || chosenAddressId == 0) { - address = addressService.getDefaultAddr(idUser); - } else { - address = addressService.get(chosenAddressId); - } - return Rets.success(Maps.newHashMap( - "list", list, "addr", address - )); - } - - @RequestMapping(value = "save", method = RequestMethod.POST) - public Object save( - @RequestParam("idAddress") Long idAddress, - @RequestParam(value = "message", required = false) String message, - @RequestParam(value = "idCarts") String idCarts - ) { - - Long idUser = getIdUser(); - List filters = Lists.newArrayList( - SearchFilter.build("idUser", SearchFilter.Operator.EQ, idUser), - SearchFilter.build("id", SearchFilter.Operator.IN, StringUtil.splitForLong(idCarts, ",")) - ); - List cartList = cartService.queryAll(filters); - - Order order = new Order(); - order.setIdUser(idUser); - Address address = addressService.get(idAddress); - order.setIdAddress(idAddress); - order.setConsignee(address.getName()); - order.setConsigneeAddress(address.getWholeAddressInfo()); - order.setMobile(address.getTel()); - BigDecimal totalPrice = new BigDecimal(0); - List itemList = Lists.newArrayList(); - for (Cart cart : cartList) { - OrderItem orderItem = new OrderItem(); - orderItem.setIdGoods(cart.getIdGoods()); - orderItem.setIdSku(cart.getIdSku()); - orderItem.setPrice(cart.getPrice()); - orderItem.setCount(cart.getCount()); - orderItem.setTotalPrice(orderItem.getPrice().multiply(orderItem.getCount())); - totalPrice = totalPrice.add(orderItem.getTotalPrice()); - itemList.add(orderItem); - } - order.setMessage(message); - order.setTotalPrice(totalPrice); - order.setRealPrice(totalPrice); - order.setStatus(OrderEnum.OrderStatusEnum.UN_PAY.getId()); - order.setPayStatus(OrderEnum.PayStatusEnum.UN_PAY.getId()); - orderService.save(order, itemList); - cartService.deleteAll(cartList); - return Rets.success(order); - } - - @RequestMapping(value = "cancel/{orderSn}", method = RequestMethod.POST) - public Object cancel(@PathVariable("orderSn") String orderSn) { - orderService.cancel(orderSn); - return Rets.success(); - } - - @RequestMapping(value = "confirm/{orderSn}", method = RequestMethod.POST) - public Object confirm(@PathVariable("orderSn") String orderSn) { - Order order = orderService.confirmReceive(orderSn); - return Rets.success(order); - } - - @RequestMapping(value = "getExpressInfo/{orderSn}", method = RequestMethod.GET) - public Object getExpressInfo(@PathVariable(value = "orderSn") String orderSn) { - Order order = orderService.getByOrderSn(orderSn); - String apiKdniaoUserid = cfgService.getCfgValue(CfgKey.API_KDNIAO_USERID); - if (StringUtil.isEmpty(apiKdniaoUserid)) { - //该商城暂无配置物流查询服务 - throw new ApplicationException(ApplicationExceptionEnum.SERVER_ERROR); - } - KdniaoResponse response = kdniaoService.realTimeQuery(order.getShippingSn(), order.getExpress().getCode()); - Map data = Maps.newHashMap( - "order", order, - "expressInfo", response - ); - return Rets.success(data); - } -} +package cn.enilu.flash.mobile.controller; + +import cn.enilu.flash.bean.constant.CfgKey; +import cn.enilu.flash.bean.constant.factory.PageFactory; +import cn.enilu.flash.bean.entity.shop.Address; +import cn.enilu.flash.bean.entity.shop.Cart; +import cn.enilu.flash.bean.entity.shop.Order; +import cn.enilu.flash.bean.entity.shop.OrderItem; +import cn.enilu.flash.bean.enumeration.shop.OrderEnum; +import cn.enilu.flash.bean.exception.ApplicationException; +import cn.enilu.flash.bean.exception.ApplicationExceptionEnum; +import cn.enilu.flash.bean.vo.front.Rets; +import cn.enilu.flash.bean.vo.query.SearchFilter; +import cn.enilu.flash.service.api.KdniaoResponse; +import cn.enilu.flash.service.api.KdniaoService; +import cn.enilu.flash.service.shop.AddressService; +import cn.enilu.flash.service.shop.CartService; +import cn.enilu.flash.service.shop.OrderService; +import cn.enilu.flash.service.system.CfgService; +import cn.enilu.flash.utils.HttpUtil; +import cn.enilu.flash.utils.Lists; +import cn.enilu.flash.utils.Maps; +import cn.enilu.flash.utils.StringUtil; +import cn.enilu.flash.utils.factory.Page; +import cn.enilu.flash.web.controller.BaseController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * @author :enilu + * @date :Created in 11/6/2019 5:07 PM + */ +@RestController +@RequestMapping("/user/order") +public class OrderController extends BaseController { + private Logger logger = LoggerFactory.getLogger(getClass()); + @Autowired + private OrderService orderService; + @Autowired + private CartService cartService; + @Autowired + private AddressService addressService; + @Autowired + private CfgService cfgService; + @Autowired + private KdniaoService kdniaoService; + + @RequestMapping(value = "{orderSn}", method = RequestMethod.GET) + public Object get(@PathVariable(value = "orderSn") String orderSn) { + Order order = orderService.getByOrderSn(orderSn); + return Rets.success(order); + } + + @RequestMapping(value = "getOrders", method = RequestMethod.GET) + public Object getOrders(@RequestParam(value = "status", required = false) Integer status) { + Long idUser = getIdUser(HttpUtil.getRequest()); + Page page = new PageFactory().defaultPage(); + page.addFilter(SearchFilter.build("idUser", SearchFilter.Operator.EQ, idUser)); + page.setSort(Sort.by(Sort.Direction.DESC, "id")); + if (status != null && status != 0) { + page.addFilter(SearchFilter.build("status", SearchFilter.Operator.EQ, status)); + } + page = orderService.queryPage(page); + return Rets.success(page); + } + + @RequestMapping(value = "prepareCheckout", method = RequestMethod.GET) + public Object prepareCheckout(@RequestParam(value = "chosenAddressId", required = false) Long chosenAddressId, + @RequestParam(value = "idCarts") String idCarts) { + Long idUser = getIdUser(HttpUtil.getRequest()); + List filters = Lists.newArrayList( + SearchFilter.build("idUser", SearchFilter.Operator.EQ, idUser), + SearchFilter.build("id", SearchFilter.Operator.IN, StringUtil.splitForLong(idCarts, ",")) + ); + List list = cartService.queryAll(filters); + Address address = null; + logger.info("chosenAddressId:{}", chosenAddressId); + if (chosenAddressId == null || chosenAddressId == 0) { + address = addressService.getDefaultAddr(idUser); + } else { + address = addressService.get(chosenAddressId); + } + return Rets.success(Maps.newHashMap( + "list", list, "addr", address + )); + } + + @RequestMapping(value = "save", method = RequestMethod.POST) + public Object save( + @RequestParam("idAddress") Long idAddress, + @RequestParam(value = "message", required = false) String message, + @RequestParam(value = "idCarts") String idCarts + ) { + + Long idUser = getIdUser(); + List filters = Lists.newArrayList( + SearchFilter.build("idUser", SearchFilter.Operator.EQ, idUser), + SearchFilter.build("id", SearchFilter.Operator.IN, StringUtil.splitForLong(idCarts, ",")) + ); + List cartList = cartService.queryAll(filters); + + Order order = new Order(); + order.setIdUser(idUser); + Address address = addressService.get(idAddress); + order.setIdAddress(idAddress); + order.setConsignee(address.getName()); + order.setConsigneeAddress(address.getWholeAddressInfo()); + order.setMobile(address.getTel()); + BigDecimal totalPrice = new BigDecimal(0); + List itemList = Lists.newArrayList(); + for (Cart cart : cartList) { + OrderItem orderItem = new OrderItem(); + orderItem.setIdGoods(cart.getIdGoods()); + orderItem.setIdSku(cart.getIdSku()); + orderItem.setPrice(cart.getPrice()); + orderItem.setCount(cart.getCount()); + orderItem.setTotalPrice(orderItem.getPrice().multiply(orderItem.getCount())); + totalPrice = totalPrice.add(orderItem.getTotalPrice()); + itemList.add(orderItem); + } + order.setMessage(message); + order.setTotalPrice(totalPrice); + order.setRealPrice(totalPrice); + order.setStatus(OrderEnum.OrderStatusEnum.UN_PAY.getId()); + order.setPayStatus(OrderEnum.PayStatusEnum.UN_PAY.getId()); + //添加订单 + orderService.save(order, itemList); + //减除购物车已下单的物品 + cartService.deleteAll(cartList); + return Rets.success(order); + } + + @RequestMapping(value = "cancel/{orderSn}", method = RequestMethod.POST) + public Object cancel(@PathVariable("orderSn") String orderSn) { + orderService.cancel(orderSn); + return Rets.success(); + } + + @RequestMapping(value = "confirm/{orderSn}", method = RequestMethod.POST) + public Object confirm(@PathVariable("orderSn") String orderSn) { + Order order = orderService.confirmReceive(orderSn); + return Rets.success(order); + } + + @RequestMapping(value = "getExpressInfo/{orderSn}", method = RequestMethod.GET) + public Object getExpressInfo(@PathVariable(value = "orderSn") String orderSn) { + Order order = orderService.getByOrderSn(orderSn); + String apiKdniaoUserid = cfgService.getCfgValue(CfgKey.API_KDNIAO_USERID); + if (StringUtil.isEmpty(apiKdniaoUserid)) { + //该商城暂无配置物流查询服务 + throw new ApplicationException(ApplicationExceptionEnum.SERVER_ERROR); + } + KdniaoResponse response = kdniaoService.realTimeQuery(order.getShippingSn(), order.getExpress().getCode()); + Map data = Maps.newHashMap( + "order", order, + "expressInfo", response + ); + return Rets.success(data); + } +} diff --git a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/mobile/controller/PayController.java b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/mobile/controller/PayController.java index 6186983fee2ffd3e65f9ec7402ce35f6f9fd2bbd..d8ebb0b7057ceeddccb7cedb46568e07c00fce4d 100644 --- a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/mobile/controller/PayController.java +++ b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/mobile/controller/PayController.java @@ -1,65 +1,94 @@ -package cn.enilu.flash.mobile.controller; - -import cn.enilu.flash.bean.entity.shop.Order; -import cn.enilu.flash.bean.entity.shop.ShopUser; -import cn.enilu.flash.bean.enumeration.shop.OrderEnum; -import cn.enilu.flash.bean.vo.front.Rets; -import cn.enilu.flash.service.WeixinPayService; -import cn.enilu.flash.service.shop.OrderService; -import cn.enilu.flash.service.shop.ShopUserService; -import cn.enilu.flash.utils.StringUtil; -import cn.enilu.flash.web.controller.BaseController; -import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -/** - * @author :enilu - * @date :Created in 2020/3/17 20:15 - */ -@RestController -@RequestMapping("/pay") -public class PayController extends BaseController { - @Autowired - private ShopUserService shopUserService; - @Autowired - private WeixinPayService weixinPayService; - @Autowired - private OrderService orderService; - @RequestMapping(value = "wx/prepare",method = RequestMethod.POST) - public Object wxPrepare(@RequestParam("orderSn")String orderSn){ - ShopUser user = shopUserService.getCurrentUser(); - if(StringUtil.isEmpty(user.getWechatOpenId())){ - return Rets.failure("非微信用户"); - } - Order order = orderService.getByOrderSn(orderSn); - WxPayMpOrderResult wxOrder = weixinPayService.prepare(user,order); - if(wxOrder!=null) { - return Rets.success(wxOrder); - } - return Rets.failure("数据准备异常"); - } - - /** - * 微信支付回调 - * @return - */ - @RequestMapping(value = "wx/notify",method = RequestMethod.POST) - public Object wxNotify(){ - String msg = weixinPayService.resultNotify(); - return msg; - } - - /** - * 查询支付结果 - * @param orderSn - * @return - */ - @RequestMapping(value = "queryResult/{orderSn}",method = RequestMethod.GET) - public Object wxNotify(@PathVariable("orderSn") String orderSn){ - Order order = orderService.getByOrderSn(orderSn); - Boolean payResult = OrderEnum.PayStatusEnum.UN_SEND.getId().equals(order.getPayStatus()) - && OrderEnum.PayStatusEnum.UN_SEND.getId().equals(order.getStatus()); - return Rets.success(payResult); - } -} +package cn.enilu.flash.mobile.controller; + +import cn.enilu.flash.bean.entity.shop.Order; +import cn.enilu.flash.bean.entity.shop.ShopUser; +import cn.enilu.flash.bean.enumeration.shop.OrderEnum; +import cn.enilu.flash.bean.vo.front.Rets; +import cn.enilu.flash.config.ProPayProperties; +import cn.enilu.flash.config.WxProperties; +import cn.enilu.flash.service.WeixinPayService; +import cn.enilu.flash.service.shop.OrderService; +import cn.enilu.flash.service.shop.ShopUserService; +import cn.enilu.flash.utils.StringUtil; +import cn.enilu.flash.web.controller.BaseController; + +import com.github.binarywang.wxpay.bean.order.WxPayAppOrderResult; +import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; +import com.github.binarywang.wxpay.util.SignUtils; + +import java.math.BigDecimal; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author :enilu + * @date :Created in 2020/3/17 20:15 + */ +@RestController +@RequestMapping("/pay") +public class PayController extends BaseController { + @Autowired + private ProPayProperties proPayProperties; + @Autowired + private ShopUserService shopUserService; + @Autowired + private WeixinPayService weixinPayService; + @Autowired + private OrderService orderService; + + @RequestMapping(value = "wx/prepare", method = RequestMethod.POST) + public Object wxPrepare(@RequestParam("orderSn") String orderSn) { + ShopUser user = shopUserService.getCurrentUser(); + + //支付测试 + if(!proPayProperties.isPay()) { + Order order = orderService.getByOrderSn(orderSn); + order.setPayId(orderSn); + orderService.paySuccess(order, OrderEnum.PayTypeEnum.UN_SEND.getKey()); + final WxPayAppOrderResult wxOrder = WxPayAppOrderResult.builder().build(); + return Rets.success(wxOrder); + } + + if (StringUtil.isEmpty(user.getWechatOpenId())) { + return Rets.failure("非微信用户"); + } + + Order order = orderService.getByOrderSn(orderSn); + //是否支付测试金额判断 + if(proPayProperties.isPayTest()) { + order.setTotalPrice(new BigDecimal(0.01)); + } + + WxPayMpOrderResult wxOrder = weixinPayService.prepare(user, order); + if (wxOrder != null) { + return Rets.success(wxOrder); + } + return Rets.failure("数据准备异常"); + } + + /** + * 微信支付回调 + * + * @return + */ + @RequestMapping(value = "wx/notify", method = RequestMethod.POST) + public Object wxNotify() { + String msg = weixinPayService.resultNotify(); + return msg; + } + + /** + * 查询支付结果 + * + * @param orderSn + * @return + */ + @RequestMapping(value = "queryResult/{orderSn}", method = RequestMethod.GET) + public Object wxNotify(@PathVariable("orderSn") String orderSn) { + Order order = orderService.getByOrderSn(orderSn); + Boolean payResult = OrderEnum.PayStatusEnum.UN_SEND.getId().equals(order.getPayStatus()) + && OrderEnum.PayStatusEnum.UN_SEND.getId().equals(order.getStatus()); + return Rets.success(payResult); + } +} diff --git a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/service/WeixinPayService.java b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/service/WeixinPayService.java index 3be6ec24eddb19cec3827b6af845bcdd3a5e8c09..98adc6b10bc69d900385e5e55562335fdac19c05 100644 --- a/linjiashop-mobile-api/src/main/java/cn/enilu/flash/service/WeixinPayService.java +++ b/linjiashop-mobile-api/src/main/java/cn/enilu/flash/service/WeixinPayService.java @@ -1,115 +1,126 @@ -package cn.enilu.flash.service; - -import cn.enilu.flash.bean.entity.shop.Order; -import cn.enilu.flash.bean.entity.shop.ShopUser; -import cn.enilu.flash.bean.enumeration.shop.OrderEnum; -import cn.enilu.flash.service.shop.OrderService; -import cn.enilu.flash.utils.HttpUtil; -import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; -import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; -import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; -import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; -import com.github.binarywang.wxpay.constant.WxPayConstants; -import com.github.binarywang.wxpay.exception.WxPayException; -import com.github.binarywang.wxpay.service.WxPayService; -import org.apache.commons.io.IOUtils; -import org.nutz.json.Json; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.math.BigDecimal; - -/** - * 微信支付 - * @author :enilu - * @date :Created in 2020/3/17 20:26 - */ -@Service -public class WeixinPayService { - @Autowired - private WxPayService wxPayService; - @Autowired - private OrderService orderService; - private Logger logger = LoggerFactory.getLogger(WeixinPayService.class); - public WxPayMpOrderResult prepare(ShopUser user, Order order){ - - WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); - orderRequest.setOutTradeNo(order.getOrderSn()); - orderRequest.setOpenid(user.getWechatOpenId()); - orderRequest.setBody("订单:" + order.getOrderSn()); - BigDecimal totalPrice = order.getTotalPrice(); - orderRequest.setTotalFee(totalPrice.intValue()); - orderRequest.setSpbillCreateIp(HttpUtil.getIp()); - - try { - WxPayMpOrderResult result = wxPayService.createOrder(orderRequest); - orderService.startPay(order); - return result; - } catch (WxPayException e) { - logger.error("微信支付异常",e); - - } - return null; - } - - public String resultNotify() { - String xmlResult = null; - - try { - HttpServletRequest request = HttpUtil.getRequest(); - xmlResult = IOUtils.toString(request.getInputStream(), request.getCharacterEncoding()); - - } catch (IOException e) { - logger.error("解析微信支付结果通知异常",e); - return WxPayNotifyResponse.fail(e.getMessage()); - } - - WxPayOrderNotifyResult result = null; - try { - result = wxPayService.parseOrderNotifyResult(xmlResult); - - if(!WxPayConstants.ResultCode.SUCCESS.equals(result.getResultCode())){ - logger.error(xmlResult); - throw new WxPayException("微信通知支付失败!"); - } - if(!WxPayConstants.ResultCode.SUCCESS.equals(result.getReturnCode())){ - logger.error(xmlResult); - throw new WxPayException("微信通知支付失败!"); - } - } catch (WxPayException e) { - e.printStackTrace(); - return WxPayNotifyResponse.fail(e.getMessage()); - } - - logger.info("处理腾讯支付平台的订单支付", Json.toJson(result)); - - String orderSn = result.getOutTradeNo(); - String payId = result.getTransactionId(); - - Integer totalFee = result.getTotalFee(); - Order order = orderService.getByOrderSn(orderSn); - if (order == null) { - return WxPayNotifyResponse.fail("订单不存在 sn=" + orderSn); - } - - // 检查这个订单是否已经处理过 - if (order.hasPayed()) { - return WxPayNotifyResponse.success("订单已经处理成功!"); - } - - // 检查支付订单金额 - if (totalFee.intValue()!=order.getTotalPrice().intValue()) { - return WxPayNotifyResponse.fail(order.getOrderSn() + " : 支付金额不符合 totalFee=" + totalFee); - } - - order.setPayId(payId); - orderService.paySuccess(order, OrderEnum.PayTypeEnum.UN_SEND.getKey()); - //todo 发送短信通知 - //todo 发送微信模板消息 - return WxPayNotifyResponse.success("支付成功!"); - } -} +package cn.enilu.flash.service; + +import cn.enilu.flash.bean.entity.shop.Order; +import cn.enilu.flash.bean.entity.shop.ShopUser; +import cn.enilu.flash.bean.enumeration.shop.OrderEnum; +import cn.enilu.flash.config.ProPayProperties; +import cn.enilu.flash.service.shop.OrderService; +import cn.enilu.flash.utils.HttpUtil; +import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; +import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; +import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; +import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; +import com.github.binarywang.wxpay.constant.WxPayConstants; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.WxPayService; +import org.apache.commons.io.IOUtils; +import org.nutz.json.Json; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.math.BigDecimal; + +/** + * 微信支付 + * + * @author :enilu + * @date :Created in 2020/3/17 20:26 + */ +@Service +public class WeixinPayService { + @Autowired + private ProPayProperties proPayProperties; + @Autowired + private WxPayService wxPayService; + @Autowired + private OrderService orderService; + private Logger logger = LoggerFactory.getLogger(WeixinPayService.class); + + public WxPayMpOrderResult prepare(ShopUser user, Order order) { + + WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); + orderRequest.setOutTradeNo(order.getOrderSn()); + orderRequest.setOpenid(user.getWechatOpenId()); + orderRequest.setBody("订单:" + order.getOrderSn()); + BigDecimal totalPrice = order.getTotalPrice(); + orderRequest.setTotalFee(totalPrice.intValue()); + orderRequest.setSpbillCreateIp(HttpUtil.getIp()); + + try { + WxPayMpOrderResult result = wxPayService.createOrder(orderRequest); + orderService.startPay(order); + return result; + } catch (WxPayException e) { + logger.error("微信支付异常", e); + + } + return null; + } + + public String resultNotify() { + String xmlResult = null; + + try { + HttpServletRequest request = HttpUtil.getRequest(); + xmlResult = IOUtils.toString(request.getInputStream(), request.getCharacterEncoding()); + + } catch (IOException e) { + logger.error("解析微信支付结果通知异常", e); + return WxPayNotifyResponse.fail(e.getMessage()); + } + + WxPayOrderNotifyResult result = null; + try { + result = wxPayService.parseOrderNotifyResult(xmlResult); + + if (!WxPayConstants.ResultCode.SUCCESS.equals(result.getResultCode())) { + logger.error(xmlResult); + throw new WxPayException("微信通知支付失败!"); + } + if (!WxPayConstants.ResultCode.SUCCESS.equals(result.getReturnCode())) { + logger.error(xmlResult); + throw new WxPayException("微信通知支付失败!"); + } + } catch (WxPayException e) { + e.printStackTrace(); + return WxPayNotifyResponse.fail(e.getMessage()); + } + + logger.info("处理腾讯支付平台的订单支付", Json.toJson(result)); + + String orderSn = result.getOutTradeNo(); + String payId = result.getTransactionId(); + + Integer totalFee = result.getTotalFee(); + Order order = orderService.getByOrderSn(orderSn); + + // 是否支付测试金额判断 + if (proPayProperties.isPayTest()) { + order.setTotalPrice(new BigDecimal(0.01)); + } + + if (order == null) { + return WxPayNotifyResponse.fail("订单不存在 sn=" + orderSn); + } + + // 检查这个订单是否已经处理过 + if (order.hasPayed()) { + return WxPayNotifyResponse.success("订单已经处理成功!"); + } + + // 检查支付订单金额 + if (totalFee.intValue() != order.getTotalPrice().intValue()) { + return WxPayNotifyResponse.fail(order.getOrderSn() + " : 支付金额不符合 totalFee=" + totalFee); + } + + order.setPayId(payId); + orderService.paySuccess(order, OrderEnum.PayTypeEnum.UN_SEND.getKey()); + // todo 发送短信通知 + // todo 发送微信模板消息 + return WxPayNotifyResponse.success("支付成功!"); + } +} diff --git a/linjiashop-mobile-api/src/main/resources/application-dev.properties b/linjiashop-mobile-api/src/main/resources/application-dev.properties index 82bc5c1f5e30d9cb0295a2a1cac8bb28bfe663e5..8fd3849be580e1f899880211b23b0fde38687968 100644 --- a/linjiashop-mobile-api/src/main/resources/application-dev.properties +++ b/linjiashop-mobile-api/src/main/resources/application-dev.properties @@ -1,19 +1,19 @@ -## 开发环境配置 -debug=true - -spring.datasource.url=jdbc:mysql://enilu-db:3306/linjiashop?useUnicode=true&characterEncoding=UTF8 -spring.datasource.username=root -spring.datasource.password=sheseerzuo123@ABC - -#默认使用InnoDB引擎 -spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect -spring.datasource.sql-script-encoding=utf-8 -spring.jpa.show-sql=true -wx.app-id=服务商的APPID -wx.app-secret=APPID对应的接口密码 -wx.mch-id=商户号 -wx.mch-key=API密钥 -wx.notify-url=http://linjiashop.microapp.store/pay/wx/notify -# 商户证书文件路径 -wx.key-path= xxxxx -#server.servlet.context-path=/api +## 开发环境配置 +debug=true + +spring.datasource.url=jdbc:mysql://127.0.0.1:3308/linjiashop?useUnicode=true&characterEncoding=UTF8 +spring.datasource.username=root +spring.datasource.password=root + +#默认使用InnoDB引擎 +spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect +spring.datasource.sql-script-encoding=utf-8 +spring.jpa.show-sql=true +wx.app-id=服务商的APPID +wx.app-secret=APPID对应的接口密码 +wx.mch-id=商户号 +wx.mch-key=API密钥 +wx.notify-url=http://linjiashop.microapp.store/pay/wx/notify +# 商户证书文件路径 +wx.key-path= xxxxx +#server.servlet.context-path=/api diff --git a/linjiashop-mobile-api/src/main/resources/application.properties b/linjiashop-mobile-api/src/main/resources/application.properties index 6f60ee6ce89a8388376751b39e00525a5d0a2bf4..259252fd6372f2c03cc5f21ddcb84a30bcb0155b 100644 --- a/linjiashop-mobile-api/src/main/resources/application.properties +++ b/linjiashop-mobile-api/src/main/resources/application.properties @@ -1,49 +1,58 @@ -##打包部署的时候将该配置更改为prod -spring.profiles.active=dev - -server.port=8081 -server.tomcat.max-threads=800 - -spring.main.allow-bean-definition-overriding=true -spring.jpa.hibernate.use-new-id-generator-mappings=false -# token有效期:单位(分钟),默认为30天 -jwt.token.expire.time=43200 -# 1表示前端用户,不要更改 -jwt.user.type=1 - -###监控配置 begin### -# WebStatFilter配置,说明请参考Druid Wiki,配置WebStatFilter -spring.datasource.druid.web-stat-filter.enabled=true -spring.datasource.druid.web-stat-filter.url-pattern=/* -spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* -# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置 -spring.datasource.druid.stat-view-servlet.enabled= true -spring.datasource.druid.stat-view-servlet.url-pattern= /druid/* -spring.datasource.druid.stat-view-servlet.reset-enable= false -spring.datasource.druid.stat-view-servlet.login-username= druiduser -spring.datasource.druid.stat-view-servlet.login-password= druidpassword -spring.datasource.druid.stat-view-servlet.allow= 127.0.0.1 -###监控配置 end### - -spring.datasource.driverClassName=com.mysql.jdbc.Driver -spring.cache.ehcache.config=classpath:ehcache.xml - -################### spring配置 ################### -spring.jackson.date-format=yyyy-MM-dd HH:mm:ss -spring.jackson.time-zone=GMT+8 -spring.jackson.serialization.write-dates-as-timestamps=false -#是否开启开发者工具(true/false) -spring.devtools.restart.enabled=false -spring.devtools.restart.additional-paths=src/main/java -#false为启用jdk默认动态代理,true为cglib动态代理 -spring.aop.proxy-target-class=true -logging.level.org.springframework.boot.autoconfigure=ERROR - -################### 邮件服务配置 ################### -spring.mail.host=smtp.qq.com -spring.mail.username=enidfdluzt@qq.com -spring.mail.password=wnsdfsdfsdfbfbjhc -spring.mail.port=465 -spring.mail.protocol=smtp -spring.mail.properties.mail.smtp.auth=true -spring.mail.properties.mail.smtp.ssl.enable=true +##打包部署的时候将该配置更改为prod +spring.profiles.active=dev + +server.port=8081 +server.tomcat.max-threads=800 + +spring.main.allow-bean-definition-overriding=true +spring.jpa.hibernate.use-new-id-generator-mappings=false +# token有效期:单位(分钟),默认为30天 +jwt.token.expire.time=43200 +# 1表示前端用户,不要更改 +jwt.user.type=1 + +###监控配置 begin### +# WebStatFilter配置,说明请参考Druid Wiki,配置WebStatFilter +spring.datasource.druid.web-stat-filter.enabled=true +spring.datasource.druid.web-stat-filter.url-pattern=/* +spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* +# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置 +spring.datasource.druid.stat-view-servlet.enabled= true +spring.datasource.druid.stat-view-servlet.url-pattern= /druid/* +spring.datasource.druid.stat-view-servlet.reset-enable= false +spring.datasource.druid.stat-view-servlet.login-username= druiduser +spring.datasource.druid.stat-view-servlet.login-password= druidpassword +spring.datasource.druid.stat-view-servlet.allow= 127.0.0.1 +###监控配置 end### + +spring.datasource.driverClassName=com.mysql.jdbc.Driver +spring.cache.ehcache.config=classpath:ehcache.xml + +################### spring配置 ################### +spring.jackson.date-format=yyyy-MM-dd HH:mm:ss +spring.jackson.time-zone=GMT+8 +spring.jackson.serialization.write-dates-as-timestamps=false +#是否开启开发者工具(true/false) +spring.devtools.restart.enabled=false +spring.devtools.restart.additional-paths=src/main/java +#false为启用jdk默认动态代理,true为cglib动态代理 +spring.aop.proxy-target-class=true +logging.level.org.springframework.boot.autoconfigure=ERROR + +################### 邮件服务配置 ################### +spring.mail.host=smtp.qq.com +spring.mail.username=enidfdluzt@qq.com +spring.mail.password=wnsdfsdfsdfbfbjhc +spring.mail.port=465 +spring.mail.protocol=smtp +spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.ssl.enable=true + +################### 运行信息配置 ################### +#是否真实支付 +propay.is-pay=false +#是否支付测试 开启则支付0.01元进行测试 +propay.is-pay-test=false + + + diff --git a/linjiashop-mobile/.npmrc b/linjiashop-mobile/.npmrc new file mode 100644 index 0000000000000000000000000000000000000000..de3f0e95b9883f1a5cccc45ef66e1dc5ef51a50e --- /dev/null +++ b/linjiashop-mobile/.npmrc @@ -0,0 +1,3 @@ +sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ +registry=https://registry.npm.taobao.org +ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/ \ No newline at end of file diff --git a/linjiashop-mobile/src/view/order/payment/payment.js b/linjiashop-mobile/src/view/order/payment/payment.js index c0da89f4cf76f7e9a52c4f36d6ca64df14f83a03..a57e5461f3d82f718037e8b17954a1fe49601419 100644 --- a/linjiashop-mobile/src/view/order/payment/payment.js +++ b/linjiashop-mobile/src/view/order/payment/payment.js @@ -40,9 +40,17 @@ export default { return (price / 100).toFixed(2); }, wxPrepare () { + const that = this; payApi.wxPrepare({orderSn:this.order.orderSn}).then(res => { + debugger // 存储微信支付数据data - let data = res.data + let data = res.data; + if(data == null || data.appId == null){ + // 支付成功后的回调函数 + that.$router.push('/payment/callback/'+that.order.orderSn); + return; + } + //函数为分装过得 (就是调用微信支付) this.wxPay( { diff --git a/linjiashop-wxapp/.npmrc b/linjiashop-wxapp/.npmrc new file mode 100644 index 0000000000000000000000000000000000000000..de3f0e95b9883f1a5cccc45ef66e1dc5ef51a50e --- /dev/null +++ b/linjiashop-wxapp/.npmrc @@ -0,0 +1,3 @@ +sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ +registry=https://registry.npm.taobao.org +ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/ \ No newline at end of file diff --git a/linjiashop-wxapp/config/index.js b/linjiashop-wxapp/config/index.js index 00ed16a14bdc3d236e84724bb91ea74918af0696..a26a9fc713ad230b39fcd58ecd1a0d0ae6c80695 100644 --- a/linjiashop-wxapp/config/index.js +++ b/linjiashop-wxapp/config/index.js @@ -53,7 +53,7 @@ module.exports = { env: require('./dev.env'), port: 8080, // 在小程序开发者工具中不需要自动打开浏览器 - autoOpenBrowser: false, + autoOpenBrowser: true, assetsSubDirectory: '', assetsPublicPath: '/', proxyTable: {}, diff --git a/upload0113/upload/00950b78-0fc6-4e88-b663-07dc46a2b6df.jpg b/upload0113/upload/00950b78-0fc6-4e88-b663-07dc46a2b6df.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c992580d3a78a62836324207f52770074ba1212b Binary files /dev/null and b/upload0113/upload/00950b78-0fc6-4e88-b663-07dc46a2b6df.jpg differ diff --git a/upload0113/upload/01d2db50-7091-4299-b5d2-2cee0eec006c.jpg b/upload0113/upload/01d2db50-7091-4299-b5d2-2cee0eec006c.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4453a12eb16a186dcba4ab99defaeafa5f2486ca Binary files /dev/null and b/upload0113/upload/01d2db50-7091-4299-b5d2-2cee0eec006c.jpg differ diff --git a/upload0113/upload/03eae8fc-7835-486e-b682-ded7dad51cf6.jpg b/upload0113/upload/03eae8fc-7835-486e-b682-ded7dad51cf6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..232f7980473f7568f3bfcd2695b9e80de4ae26ea Binary files /dev/null and b/upload0113/upload/03eae8fc-7835-486e-b682-ded7dad51cf6.jpg differ diff --git a/upload0113/upload/065ce7db-07a2-4331-858e-9ad6c4625c3f.jpg b/upload0113/upload/065ce7db-07a2-4331-858e-9ad6c4625c3f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2681efc4d31875ad8e6166b7b7dba58ad9c0d5a1 Binary files /dev/null and b/upload0113/upload/065ce7db-07a2-4331-858e-9ad6c4625c3f.jpg differ diff --git a/upload0113/upload/08eff5b6-69b6-411d-9d1e-7f6a97d5c6ea.jpg b/upload0113/upload/08eff5b6-69b6-411d-9d1e-7f6a97d5c6ea.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32e9b510bafb82ac435308aa7f8bb9089632f933 Binary files /dev/null and b/upload0113/upload/08eff5b6-69b6-411d-9d1e-7f6a97d5c6ea.jpg differ diff --git "a/upload0113/upload/0a6ebee6-42bf-4b20-a81e-7f516c7dae1e.6\350\213\261\345\257\2703.jpg" "b/upload0113/upload/0a6ebee6-42bf-4b20-a81e-7f516c7dae1e.6\350\213\261\345\257\2703.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..ae716720a41a23b403494dbf24e72086b3b36d02 Binary files /dev/null and "b/upload0113/upload/0a6ebee6-42bf-4b20-a81e-7f516c7dae1e.6\350\213\261\345\257\2703.jpg" differ diff --git "a/upload0113/upload/0b71273e-ef45-4ccd-b146-459be1e793a7.6\350\213\261\345\257\2703.jpg" "b/upload0113/upload/0b71273e-ef45-4ccd-b146-459be1e793a7.6\350\213\261\345\257\2703.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..bcd6c170e246a98fa42267aca30bb2d2608d2d2b Binary files /dev/null and "b/upload0113/upload/0b71273e-ef45-4ccd-b146-459be1e793a7.6\350\213\261\345\257\2703.jpg" differ diff --git a/upload0113/upload/0c313b82-6814-408c-ab37-0dde82172fc6.jpg b/upload0113/upload/0c313b82-6814-408c-ab37-0dde82172fc6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb5519a0549ffd13aa8d0c40c7db53d12f606fd5 Binary files /dev/null and b/upload0113/upload/0c313b82-6814-408c-ab37-0dde82172fc6.jpg differ diff --git a/upload0113/upload/0cbeb359-39de-42a9-9d19-96e9887a819e.jpg b/upload0113/upload/0cbeb359-39de-42a9-9d19-96e9887a819e.jpg new file mode 100644 index 0000000000000000000000000000000000000000..076b405cb999ea76116a0efc20bcc1b79039f5f0 Binary files /dev/null and b/upload0113/upload/0cbeb359-39de-42a9-9d19-96e9887a819e.jpg differ diff --git a/upload0113/upload/0ff25d14-4a85-4af7-9556-8f461b7437c3.jpg b/upload0113/upload/0ff25d14-4a85-4af7-9556-8f461b7437c3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..207a57666f0f7fcb85198e30951061ffdb28ba88 Binary files /dev/null and b/upload0113/upload/0ff25d14-4a85-4af7-9556-8f461b7437c3.jpg differ diff --git a/upload0113/upload/10188f57-915b-40c4-9eb9-9248895b1d78.jpg b/upload0113/upload/10188f57-915b-40c4-9eb9-9248895b1d78.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8eaf29990c794b620c6bc6881527b252f72dfd8c Binary files /dev/null and b/upload0113/upload/10188f57-915b-40c4-9eb9-9248895b1d78.jpg differ diff --git a/upload0113/upload/105eb759-5c5a-4741-ac43-eb3caa910088.jpg b/upload0113/upload/105eb759-5c5a-4741-ac43-eb3caa910088.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2be4b8252f90367f120d10d7efb649b06cda4fed Binary files /dev/null and b/upload0113/upload/105eb759-5c5a-4741-ac43-eb3caa910088.jpg differ diff --git "a/upload0113/upload/123b59b1-13e6-4729-8621-d2f3ad9ecb41.6\350\213\261\345\257\2701.jpg" "b/upload0113/upload/123b59b1-13e6-4729-8621-d2f3ad9ecb41.6\350\213\261\345\257\2701.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..00ea0f17be6c7e5691c2843382810bdbb4b698f1 Binary files /dev/null and "b/upload0113/upload/123b59b1-13e6-4729-8621-d2f3ad9ecb41.6\350\213\261\345\257\2701.jpg" differ diff --git a/upload0113/upload/14f9ce27-f133-4321-aeb5-aed470b794d6.jpg b/upload0113/upload/14f9ce27-f133-4321-aeb5-aed470b794d6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2d6715b3efe90c7858dcb97de7b1fb8872368d4 Binary files /dev/null and b/upload0113/upload/14f9ce27-f133-4321-aeb5-aed470b794d6.jpg differ diff --git a/upload0113/upload/154ccdaa-a112-434b-a56b-5e1ee1a10ee6.jpg b/upload0113/upload/154ccdaa-a112-434b-a56b-5e1ee1a10ee6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..44a36f721d0381652429594eb6cbe7a95c1ad922 Binary files /dev/null and b/upload0113/upload/154ccdaa-a112-434b-a56b-5e1ee1a10ee6.jpg differ diff --git a/upload0113/upload/15516e0b-7787-4223-8c21-927d5cd3c1b2.jpg b/upload0113/upload/15516e0b-7787-4223-8c21-927d5cd3c1b2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed8720eddc8b6bc917d15555add756177df3a6f8 Binary files /dev/null and b/upload0113/upload/15516e0b-7787-4223-8c21-927d5cd3c1b2.jpg differ diff --git a/upload0113/upload/1b129a47-cda2-4722-ab02-d8646552ffaa.jpg b/upload0113/upload/1b129a47-cda2-4722-ab02-d8646552ffaa.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7183d5f3f180ca965dd9e385c8e7eb8a4f28c9ca Binary files /dev/null and b/upload0113/upload/1b129a47-cda2-4722-ab02-d8646552ffaa.jpg differ diff --git a/upload0113/upload/1cd9b0b1-a12b-47ed-bdf6-98be9a899b26.jpg b/upload0113/upload/1cd9b0b1-a12b-47ed-bdf6-98be9a899b26.jpg new file mode 100644 index 0000000000000000000000000000000000000000..86f4c5eee61d16aca44f52d286c9e49d336693d9 Binary files /dev/null and b/upload0113/upload/1cd9b0b1-a12b-47ed-bdf6-98be9a899b26.jpg differ diff --git a/upload0113/upload/1ceb9b33-1299-4f8a-a724-7078e96a0dd4.jpg b/upload0113/upload/1ceb9b33-1299-4f8a-a724-7078e96a0dd4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a13746b407b0a3ba476c241ae7018f85f4a70f7 Binary files /dev/null and b/upload0113/upload/1ceb9b33-1299-4f8a-a724-7078e96a0dd4.jpg differ diff --git a/upload0113/upload/1d06bb1f-cadb-49fa-a88c-dee33d48aa4f.jpg b/upload0113/upload/1d06bb1f-cadb-49fa-a88c-dee33d48aa4f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4a55ece9e4f5b8d3038413327320d43efa7ebfee Binary files /dev/null and b/upload0113/upload/1d06bb1f-cadb-49fa-a88c-dee33d48aa4f.jpg differ diff --git a/upload0113/upload/22119bd1-1326-4c56-916c-71608b457928.jpg b/upload0113/upload/22119bd1-1326-4c56-916c-71608b457928.jpg new file mode 100644 index 0000000000000000000000000000000000000000..acd959e3dd0e1bbf22a59b9e2ca4175f687de448 Binary files /dev/null and b/upload0113/upload/22119bd1-1326-4c56-916c-71608b457928.jpg differ diff --git a/upload0113/upload/2508b502-db36-45c5-92af-00ab7a7ef61a.jpg b/upload0113/upload/2508b502-db36-45c5-92af-00ab7a7ef61a.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f860d362e14b74907139e3f2a1788c7e30d1c47 Binary files /dev/null and b/upload0113/upload/2508b502-db36-45c5-92af-00ab7a7ef61a.jpg differ diff --git a/upload0113/upload/2928da26-f3a7-4109-b2cf-7d9b7f68c354.jpg b/upload0113/upload/2928da26-f3a7-4109-b2cf-7d9b7f68c354.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06cc2c34f49eecd08596e9602b23790236b416fe Binary files /dev/null and b/upload0113/upload/2928da26-f3a7-4109-b2cf-7d9b7f68c354.jpg differ diff --git a/upload0113/upload/298a3c72-8e71-400b-a1ef-e75264c53e11.jpg b/upload0113/upload/298a3c72-8e71-400b-a1ef-e75264c53e11.jpg new file mode 100644 index 0000000000000000000000000000000000000000..baa0d659d47821960ef1290cb7df014e1341cead Binary files /dev/null and b/upload0113/upload/298a3c72-8e71-400b-a1ef-e75264c53e11.jpg differ diff --git a/upload0113/upload/2b075ae4-1476-458f-b2c3-ae3cb9d0425b.jpg b/upload0113/upload/2b075ae4-1476-458f-b2c3-ae3cb9d0425b.jpg new file mode 100644 index 0000000000000000000000000000000000000000..454adf3f5004bf0d3fb8ef3191a8fad0755e23e8 Binary files /dev/null and b/upload0113/upload/2b075ae4-1476-458f-b2c3-ae3cb9d0425b.jpg differ diff --git a/upload0113/upload/2ba1e87f-f04e-40b5-8d99-63e035a9d752.jpg b/upload0113/upload/2ba1e87f-f04e-40b5-8d99-63e035a9d752.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06cc2c34f49eecd08596e9602b23790236b416fe Binary files /dev/null and b/upload0113/upload/2ba1e87f-f04e-40b5-8d99-63e035a9d752.jpg differ diff --git a/upload0113/upload/2c4fa9d5-3d4b-4964-bfb5-7a63f3e25aeb.jpg b/upload0113/upload/2c4fa9d5-3d4b-4964-bfb5-7a63f3e25aeb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e16f98729e1951fb8a0718ea1b60355ab167c3c Binary files /dev/null and b/upload0113/upload/2c4fa9d5-3d4b-4964-bfb5-7a63f3e25aeb.jpg differ diff --git a/upload0113/upload/2ceb5539-7a66-4c4c-835d-b383dd85cab6.jpg b/upload0113/upload/2ceb5539-7a66-4c4c-835d-b383dd85cab6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03081f440c0a7d850527b38d8b4ac5f34b7a5068 Binary files /dev/null and b/upload0113/upload/2ceb5539-7a66-4c4c-835d-b383dd85cab6.jpg differ diff --git a/upload0113/upload/2db4fc3e-57da-42fb-a8e7-d66957318b04.jpg b/upload0113/upload/2db4fc3e-57da-42fb-a8e7-d66957318b04.jpg new file mode 100644 index 0000000000000000000000000000000000000000..68112fe3be7b1e43a6f19346ce68724acc935c92 Binary files /dev/null and b/upload0113/upload/2db4fc3e-57da-42fb-a8e7-d66957318b04.jpg differ diff --git a/upload0113/upload/34a87291-8922-4be3-9757-ed0f6777babc.jpg b/upload0113/upload/34a87291-8922-4be3-9757-ed0f6777babc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee8c3e1bc3568eb8361e1d649043b9574d04d19c Binary files /dev/null and b/upload0113/upload/34a87291-8922-4be3-9757-ed0f6777babc.jpg differ diff --git a/upload0113/upload/37f5710e-1fe3-48f0-b063-838593fbb2b9.jpg b/upload0113/upload/37f5710e-1fe3-48f0-b063-838593fbb2b9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e5c20f7f149bb18a7e7bfa7c3e8b80ed8bfb0dd Binary files /dev/null and b/upload0113/upload/37f5710e-1fe3-48f0-b063-838593fbb2b9.jpg differ diff --git "a/upload0113/upload/40ce1fe7-5f60-4a35-958c-96fe9fa5dcda.6\350\213\261\345\257\2704.jpg" "b/upload0113/upload/40ce1fe7-5f60-4a35-958c-96fe9fa5dcda.6\350\213\261\345\257\2704.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..d5a1e82651068438c96f7faa0a78b624029ed58a Binary files /dev/null and "b/upload0113/upload/40ce1fe7-5f60-4a35-958c-96fe9fa5dcda.6\350\213\261\345\257\2704.jpg" differ diff --git a/upload0113/upload/411e618d-36ae-4b4b-aa77-cf4f91f61d79.jpg b/upload0113/upload/411e618d-36ae-4b4b-aa77-cf4f91f61d79.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2b37050bccda5d94e00fbe04ab69e05ed6a7c812 Binary files /dev/null and b/upload0113/upload/411e618d-36ae-4b4b-aa77-cf4f91f61d79.jpg differ diff --git a/upload0113/upload/4306017b-1c30-4fd0-b5e4-3ddf0e3b8e5c.jpg b/upload0113/upload/4306017b-1c30-4fd0-b5e4-3ddf0e3b8e5c.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e091402c4bf9bc86f108bd2e6f1e39d0b339db4c Binary files /dev/null and b/upload0113/upload/4306017b-1c30-4fd0-b5e4-3ddf0e3b8e5c.jpg differ diff --git a/upload0113/upload/432ddf59-c823-494c-aba7-a94c2b83093d.jpg b/upload0113/upload/432ddf59-c823-494c-aba7-a94c2b83093d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d073005c677330b5789f703994d3dbd034344f17 Binary files /dev/null and b/upload0113/upload/432ddf59-c823-494c-aba7-a94c2b83093d.jpg differ diff --git a/upload0113/upload/43cd9071-1653-4e1e-8ae8-9cf25f0255f1.3.jpg b/upload0113/upload/43cd9071-1653-4e1e-8ae8-9cf25f0255f1.3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb92c407599efe52f36574569f36dc34bb20fdc8 Binary files /dev/null and b/upload0113/upload/43cd9071-1653-4e1e-8ae8-9cf25f0255f1.3.jpg differ diff --git a/upload0113/upload/477bc0ea-60a8-4edb-b115-6ae6c92bd678.jpg b/upload0113/upload/477bc0ea-60a8-4edb-b115-6ae6c92bd678.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54910bde86f5db35397fb7c5fc384e82414e474c Binary files /dev/null and b/upload0113/upload/477bc0ea-60a8-4edb-b115-6ae6c92bd678.jpg differ diff --git "a/upload0113/upload/4afa34b3-d44f-4322-a969-8f6b88b6027d.6\350\213\261\345\257\2702.jpg" "b/upload0113/upload/4afa34b3-d44f-4322-a969-8f6b88b6027d.6\350\213\261\345\257\2702.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..2b2fe83e0ce79d79e9b0cda155fed9875df0ecfe Binary files /dev/null and "b/upload0113/upload/4afa34b3-d44f-4322-a969-8f6b88b6027d.6\350\213\261\345\257\2702.jpg" differ diff --git a/upload0113/upload/4b1f6265-f751-44eb-86d6-8f2f5d4725ab.jpg b/upload0113/upload/4b1f6265-f751-44eb-86d6-8f2f5d4725ab.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d820e0c035d82b1520b55aad1a61fc65ab810806 Binary files /dev/null and b/upload0113/upload/4b1f6265-f751-44eb-86d6-8f2f5d4725ab.jpg differ diff --git a/upload0113/upload/4e63b4d9-d21a-42cf-bd72-51f2e1adc7e9.jpg b/upload0113/upload/4e63b4d9-d21a-42cf-bd72-51f2e1adc7e9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9545616d337719bca71c31eeff5bf5779583ad4e Binary files /dev/null and b/upload0113/upload/4e63b4d9-d21a-42cf-bd72-51f2e1adc7e9.jpg differ diff --git "a/upload0113/upload/4e7b78fa-9b24-4d6a-beaf-31cc644515ea.5\350\213\261\345\257\2701.jpg" "b/upload0113/upload/4e7b78fa-9b24-4d6a-beaf-31cc644515ea.5\350\213\261\345\257\2701.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..8af7df9f89736a79c63f728926b60fc4190f6896 Binary files /dev/null and "b/upload0113/upload/4e7b78fa-9b24-4d6a-beaf-31cc644515ea.5\350\213\261\345\257\2701.jpg" differ diff --git a/upload0113/upload/502be2c9-bbf0-40ed-af89-4bd5c1df94d5.jpg b/upload0113/upload/502be2c9-bbf0-40ed-af89-4bd5c1df94d5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c90a026eda9c3ed8a8c04997dec53b617ee9a6f Binary files /dev/null and b/upload0113/upload/502be2c9-bbf0-40ed-af89-4bd5c1df94d5.jpg differ diff --git a/upload0113/upload/50f43ad5-5d39-4c26-b698-e34f6768f1c8.jpg b/upload0113/upload/50f43ad5-5d39-4c26-b698-e34f6768f1c8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32e43c5f87dfb40f8a5744196b0594060f1fa9c6 Binary files /dev/null and b/upload0113/upload/50f43ad5-5d39-4c26-b698-e34f6768f1c8.jpg differ diff --git a/upload0113/upload/53d377be-ff01-4fb8-8e8b-e8d3c97678f6.jpg b/upload0113/upload/53d377be-ff01-4fb8-8e8b-e8d3c97678f6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff4c3b2f0094fc66b9d16567a5a9ca1e40863fcc Binary files /dev/null and b/upload0113/upload/53d377be-ff01-4fb8-8e8b-e8d3c97678f6.jpg differ diff --git a/upload0113/upload/57a299c0-6c3f-4d2b-b5a1-8c22a6b1b625.jpg b/upload0113/upload/57a299c0-6c3f-4d2b-b5a1-8c22a6b1b625.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ce4e6805a539209cfe3185ab2b7bd9f3dcf41bf Binary files /dev/null and b/upload0113/upload/57a299c0-6c3f-4d2b-b5a1-8c22a6b1b625.jpg differ diff --git "a/upload0113/upload/5822699c-35a1-4950-8670-fb4ca817dd62.3\350\213\261\345\257\2703.jpg" "b/upload0113/upload/5822699c-35a1-4950-8670-fb4ca817dd62.3\350\213\261\345\257\2703.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..d256a8264db786a07d6ab6cc4d2de3efadfdf4f9 Binary files /dev/null and "b/upload0113/upload/5822699c-35a1-4950-8670-fb4ca817dd62.3\350\213\261\345\257\2703.jpg" differ diff --git a/upload0113/upload/59d2fb68-a8a4-4f35-b3a8-7f3bdcaf3ab9.6.jpg b/upload0113/upload/59d2fb68-a8a4-4f35-b3a8-7f3bdcaf3ab9.6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f4b244fcd7bb7423718fb8f98b76aa7b7db92cf4 Binary files /dev/null and b/upload0113/upload/59d2fb68-a8a4-4f35-b3a8-7f3bdcaf3ab9.6.jpg differ diff --git a/upload0113/upload/5ad73a65-3ae1-4a62-8d90-3cd4f5a48ef1.jpg b/upload0113/upload/5ad73a65-3ae1-4a62-8d90-3cd4f5a48ef1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9709e92f971163b95fa2ce2de7198e2d0e9775cd Binary files /dev/null and b/upload0113/upload/5ad73a65-3ae1-4a62-8d90-3cd4f5a48ef1.jpg differ diff --git a/upload0113/upload/5ba1aa87-3758-4a5b-b76c-4d5b3cefdf4b.jpg b/upload0113/upload/5ba1aa87-3758-4a5b-b76c-4d5b3cefdf4b.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce99c8247df28c1504a24e1c14b7ae281638e51d Binary files /dev/null and b/upload0113/upload/5ba1aa87-3758-4a5b-b76c-4d5b3cefdf4b.jpg differ diff --git a/upload0113/upload/5d29c2e1-cb7b-4d66-9054-3afd56379894.jpg b/upload0113/upload/5d29c2e1-cb7b-4d66-9054-3afd56379894.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37c995ea1e670351e77212a39255ca06c833b4c2 Binary files /dev/null and b/upload0113/upload/5d29c2e1-cb7b-4d66-9054-3afd56379894.jpg differ diff --git a/upload0113/upload/5f4d38b6-3d4e-43c5-869d-bd9ea51340f2.jpg b/upload0113/upload/5f4d38b6-3d4e-43c5-869d-bd9ea51340f2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..757fec222bfeb1fcd0beb9abeba956a23033ed6b Binary files /dev/null and b/upload0113/upload/5f4d38b6-3d4e-43c5-869d-bd9ea51340f2.jpg differ diff --git a/upload0113/upload/65a7d4f0-fa1e-49b0-bc6e-517f0c0d5b9a.jpg b/upload0113/upload/65a7d4f0-fa1e-49b0-bc6e-517f0c0d5b9a.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ebcf8354456c27c38a8491a4121b6e80e3467791 Binary files /dev/null and b/upload0113/upload/65a7d4f0-fa1e-49b0-bc6e-517f0c0d5b9a.jpg differ diff --git a/upload0113/upload/673de692-7ced-4402-93aa-9965fcd0c344.png b/upload0113/upload/673de692-7ced-4402-93aa-9965fcd0c344.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2433b0f03f59a0e2755b778f0893da954f0e54 Binary files /dev/null and b/upload0113/upload/673de692-7ced-4402-93aa-9965fcd0c344.png differ diff --git "a/upload0113/upload/6af94ec5-2542-41b1-ab4b-2c07bf4d7774.3\350\213\261\345\257\2704.jpg" "b/upload0113/upload/6af94ec5-2542-41b1-ab4b-2c07bf4d7774.3\350\213\261\345\257\2704.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..495ee7c246e4efff10c2d86963301022edfb6136 Binary files /dev/null and "b/upload0113/upload/6af94ec5-2542-41b1-ab4b-2c07bf4d7774.3\350\213\261\345\257\2704.jpg" differ diff --git a/upload0113/upload/709136ce-19aa-450f-a48f-ef502f07ed2e.jpg b/upload0113/upload/709136ce-19aa-450f-a48f-ef502f07ed2e.jpg new file mode 100644 index 0000000000000000000000000000000000000000..24c0732d93222abb89753c54384fb3d7b793127d Binary files /dev/null and b/upload0113/upload/709136ce-19aa-450f-a48f-ef502f07ed2e.jpg differ diff --git a/upload0113/upload/7174c1b3-aaea-4c0c-9942-57804dea69b6.jpg b/upload0113/upload/7174c1b3-aaea-4c0c-9942-57804dea69b6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e0235d791840c20aafc2be55c665b8741a85747 Binary files /dev/null and b/upload0113/upload/7174c1b3-aaea-4c0c-9942-57804dea69b6.jpg differ diff --git a/upload0113/upload/7322230b-b1bf-46a0-85ab-87a1e2a6d83a.jpg b/upload0113/upload/7322230b-b1bf-46a0-85ab-87a1e2a6d83a.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f01131ae97fdfe899df05535a05168793a63335 Binary files /dev/null and b/upload0113/upload/7322230b-b1bf-46a0-85ab-87a1e2a6d83a.jpg differ diff --git a/upload0113/upload/74ae1ec2-9e00-4189-bbfe-9ac916375506.6gtx.jpg b/upload0113/upload/74ae1ec2-9e00-4189-bbfe-9ac916375506.6gtx.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c4f1d3c7d9f75c1efd22c60b763a964b7c743bb Binary files /dev/null and b/upload0113/upload/74ae1ec2-9e00-4189-bbfe-9ac916375506.6gtx.jpg differ diff --git a/upload0113/upload/75b1e658-161e-4b12-83b0-abd2c1bead39.jpg b/upload0113/upload/75b1e658-161e-4b12-83b0-abd2c1bead39.jpg new file mode 100644 index 0000000000000000000000000000000000000000..757fec222bfeb1fcd0beb9abeba956a23033ed6b Binary files /dev/null and b/upload0113/upload/75b1e658-161e-4b12-83b0-abd2c1bead39.jpg differ diff --git "a/upload0113/upload/75f54336-fe51-42ee-a4fe-534abe9f5833.6\350\213\261\345\257\2704.jpg" "b/upload0113/upload/75f54336-fe51-42ee-a4fe-534abe9f5833.6\350\213\261\345\257\2704.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..4d326e32d1b1a347214b36eafc04d9e9803a80ee Binary files /dev/null and "b/upload0113/upload/75f54336-fe51-42ee-a4fe-534abe9f5833.6\350\213\261\345\257\2704.jpg" differ diff --git a/upload0113/upload/76101509-4ef4-4da1-946a-852a2f655cc2.jpg b/upload0113/upload/76101509-4ef4-4da1-946a-852a2f655cc2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..759df714e5c753cfe8aec549cfe65d73947d0977 Binary files /dev/null and b/upload0113/upload/76101509-4ef4-4da1-946a-852a2f655cc2.jpg differ diff --git a/upload0113/upload/774927e3-a98e-4936-87ad-9cf30c864331.jpg b/upload0113/upload/774927e3-a98e-4936-87ad-9cf30c864331.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a89d7e544c8acacef323482325b9efc85ee396b Binary files /dev/null and b/upload0113/upload/774927e3-a98e-4936-87ad-9cf30c864331.jpg differ diff --git a/upload0113/upload/77c51323-027d-434c-bed4-18ca7d532b6f.jpg b/upload0113/upload/77c51323-027d-434c-bed4-18ca7d532b6f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2ee018e741e03dee2136d4475da63a8ef7d884e Binary files /dev/null and b/upload0113/upload/77c51323-027d-434c-bed4-18ca7d532b6f.jpg differ diff --git a/upload0113/upload/7c75ad57-4f1f-41cd-93c3-ec04b704e8bd.jpg b/upload0113/upload/7c75ad57-4f1f-41cd-93c3-ec04b704e8bd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..095113f7d2de024cc958a9b06aa96143cf5099d4 Binary files /dev/null and b/upload0113/upload/7c75ad57-4f1f-41cd-93c3-ec04b704e8bd.jpg differ diff --git a/upload0113/upload/7d4f5887-f243-4478-b892-9fff830d02d4.jpg b/upload0113/upload/7d4f5887-f243-4478-b892-9fff830d02d4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..93be3323ed5de37562ada75fcaff68f8b5c75ecc Binary files /dev/null and b/upload0113/upload/7d4f5887-f243-4478-b892-9fff830d02d4.jpg differ diff --git a/upload0113/upload/7e195bf0-b450-4a1c-934d-80df766581a0.jpg b/upload0113/upload/7e195bf0-b450-4a1c-934d-80df766581a0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..730d2243b44ed2a849bb1ec14431d6620bdeb69d Binary files /dev/null and b/upload0113/upload/7e195bf0-b450-4a1c-934d-80df766581a0.jpg differ diff --git a/upload0113/upload/7e9ebc08-b194-4f85-8997-d97ccb0d2c2d.png b/upload0113/upload/7e9ebc08-b194-4f85-8997-d97ccb0d2c2d.png new file mode 100644 index 0000000000000000000000000000000000000000..9709e92f971163b95fa2ce2de7198e2d0e9775cd Binary files /dev/null and b/upload0113/upload/7e9ebc08-b194-4f85-8997-d97ccb0d2c2d.png differ diff --git a/upload0113/upload/81296c2b-649a-48c3-b692-7b0d262f1f0b.jpg b/upload0113/upload/81296c2b-649a-48c3-b692-7b0d262f1f0b.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c2dc1cff8e454e41e65b665ff15051142a9c54f Binary files /dev/null and b/upload0113/upload/81296c2b-649a-48c3-b692-7b0d262f1f0b.jpg differ diff --git "a/upload0113/upload/857c7096-9948-4106-90a4-70df5f2124c9.3\350\213\261\345\257\2705.jpg" "b/upload0113/upload/857c7096-9948-4106-90a4-70df5f2124c9.3\350\213\261\345\257\2705.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..1ceb9e99bf7cb1efc50d528ef040d47899959b51 Binary files /dev/null and "b/upload0113/upload/857c7096-9948-4106-90a4-70df5f2124c9.3\350\213\261\345\257\2705.jpg" differ diff --git a/upload0113/upload/8974ee52-c261-440a-84d3-8f8c1bd43a6a.jpg b/upload0113/upload/8974ee52-c261-440a-84d3-8f8c1bd43a6a.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f5b1957d07de3525f5459eb831f0f611491fadf0 Binary files /dev/null and b/upload0113/upload/8974ee52-c261-440a-84d3-8f8c1bd43a6a.jpg differ diff --git a/upload0113/upload/8d02883f-ad75-4578-9153-ce872613e7b3.jpg b/upload0113/upload/8d02883f-ad75-4578-9153-ce872613e7b3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d85079b39b8ff008ca853e7ee4f16e01abe6641 Binary files /dev/null and b/upload0113/upload/8d02883f-ad75-4578-9153-ce872613e7b3.jpg differ diff --git a/upload0113/upload/8d3e4a09-9be5-42da-b028-653291bd6bee.jpg b/upload0113/upload/8d3e4a09-9be5-42da-b028-653291bd6bee.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9709e92f971163b95fa2ce2de7198e2d0e9775cd Binary files /dev/null and b/upload0113/upload/8d3e4a09-9be5-42da-b028-653291bd6bee.jpg differ diff --git a/upload0113/upload/8f42bccb-0550-4e60-9b54-663c274669e9.jpg b/upload0113/upload/8f42bccb-0550-4e60-9b54-663c274669e9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..521008de46315e4f68bd14448bedcd395a136ce3 Binary files /dev/null and b/upload0113/upload/8f42bccb-0550-4e60-9b54-663c274669e9.jpg differ diff --git a/upload0113/upload/91b9b06d-c157-4ba2-bdc4-8f21fd2820c8.jpg b/upload0113/upload/91b9b06d-c157-4ba2-bdc4-8f21fd2820c8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..500e4b0c1bc388ee3105df35b104cfd94c51ecc4 Binary files /dev/null and b/upload0113/upload/91b9b06d-c157-4ba2-bdc4-8f21fd2820c8.jpg differ diff --git a/upload0113/upload/924792ff-e20f-440c-837d-6e476c19e470.jpg b/upload0113/upload/924792ff-e20f-440c-837d-6e476c19e470.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7530ba71d544a1f9d74094cefcbe38513bc10344 Binary files /dev/null and b/upload0113/upload/924792ff-e20f-440c-837d-6e476c19e470.jpg differ diff --git a/upload0113/upload/95542191-fb1e-4afb-abcf-ef71c4364c3c.jpg b/upload0113/upload/95542191-fb1e-4afb-abcf-ef71c4364c3c.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b82d29f2002139aa5fcf9240fda55b07be69d50f Binary files /dev/null and b/upload0113/upload/95542191-fb1e-4afb-abcf-ef71c4364c3c.jpg differ diff --git "a/upload0113/upload/956407d6-c9ba-46a0-804f-c744d7eb836e.3\350\213\261\345\257\2702.jpg" "b/upload0113/upload/956407d6-c9ba-46a0-804f-c744d7eb836e.3\350\213\261\345\257\2702.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..ddc1cbc875f01858cc7e0a6aa0650e6b6bb74511 Binary files /dev/null and "b/upload0113/upload/956407d6-c9ba-46a0-804f-c744d7eb836e.3\350\213\261\345\257\2702.jpg" differ diff --git a/upload0113/upload/95a1e558-cc2f-430b-b023-dac6659f4315.jpg b/upload0113/upload/95a1e558-cc2f-430b-b023-dac6659f4315.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6fd17bbe8c826cda6e8eb7ce3d4de4bae1cae0e8 Binary files /dev/null and b/upload0113/upload/95a1e558-cc2f-430b-b023-dac6659f4315.jpg differ diff --git a/upload0113/upload/9dab6724-632a-4482-87a7-9bbc0d1524b9.jpg b/upload0113/upload/9dab6724-632a-4482-87a7-9bbc0d1524b9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4b7514161d9033a9f7116b4c18b909548c5f56b Binary files /dev/null and b/upload0113/upload/9dab6724-632a-4482-87a7-9bbc0d1524b9.jpg differ diff --git a/upload0113/upload/9e18f183-0de6-4137-9ce7-3d5d1bc33bc0.jpg b/upload0113/upload/9e18f183-0de6-4137-9ce7-3d5d1bc33bc0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..35d7c99ab7f9195b41f54fc34b71828f14025f3e Binary files /dev/null and b/upload0113/upload/9e18f183-0de6-4137-9ce7-3d5d1bc33bc0.jpg differ diff --git a/upload0113/upload/9f6604ff-2f3a-456c-aab3-dc2979ae0406.jpg b/upload0113/upload/9f6604ff-2f3a-456c-aab3-dc2979ae0406.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4636b702a44d281c3dd51e007b6386fce0b221c4 Binary files /dev/null and b/upload0113/upload/9f6604ff-2f3a-456c-aab3-dc2979ae0406.jpg differ diff --git a/upload0113/upload/9fc649a0-e1c6-4ddc-9b60-18205136e90b.jpg b/upload0113/upload/9fc649a0-e1c6-4ddc-9b60-18205136e90b.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df6c6814ee939354765d4c7bbf5fd26c3d997f35 Binary files /dev/null and b/upload0113/upload/9fc649a0-e1c6-4ddc-9b60-18205136e90b.jpg differ diff --git "a/upload0113/upload/a4e2a1e1-05e1-45a7-b2b3-acd099a8e130.5\350\213\261\345\257\2703.jpg" "b/upload0113/upload/a4e2a1e1-05e1-45a7-b2b3-acd099a8e130.5\350\213\261\345\257\2703.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a310bbc87f5dbf3ec7cc7eb8d91a0c96a756a2ad Binary files /dev/null and "b/upload0113/upload/a4e2a1e1-05e1-45a7-b2b3-acd099a8e130.5\350\213\261\345\257\2703.jpg" differ diff --git a/upload0113/upload/a54cf50a-a2fc-4bb5-bf3d-5a9edc54a9a8.jpg b/upload0113/upload/a54cf50a-a2fc-4bb5-bf3d-5a9edc54a9a8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53f8faaa364f137653abfdfc054fbbd9b706dfb9 Binary files /dev/null and b/upload0113/upload/a54cf50a-a2fc-4bb5-bf3d-5a9edc54a9a8.jpg differ diff --git a/upload0113/upload/a6e96c16-b267-4a0c-9203-e8adbc239824.jpg b/upload0113/upload/a6e96c16-b267-4a0c-9203-e8adbc239824.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3414740667d53d1072873024141045db63efac69 Binary files /dev/null and b/upload0113/upload/a6e96c16-b267-4a0c-9203-e8adbc239824.jpg differ diff --git a/upload0113/upload/b1b53d00-e7c7-460e-b953-64ac2a05768c.jpg b/upload0113/upload/b1b53d00-e7c7-460e-b953-64ac2a05768c.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94df3629a185d411f0a8beefeb627b294db5116c Binary files /dev/null and b/upload0113/upload/b1b53d00-e7c7-460e-b953-64ac2a05768c.jpg differ diff --git a/upload0113/upload/b2cfd917-50ea-4721-8a7b-092b2909b8eb.jpg b/upload0113/upload/b2cfd917-50ea-4721-8a7b-092b2909b8eb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..87039b34a0cd2d7f8ed700ca484a9b7cb87324e3 Binary files /dev/null and b/upload0113/upload/b2cfd917-50ea-4721-8a7b-092b2909b8eb.jpg differ diff --git a/upload0113/upload/b45f336e-983a-4ebf-aa3a-528e6aa2f390.jpg b/upload0113/upload/b45f336e-983a-4ebf-aa3a-528e6aa2f390.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a5ca4da5c10b1b3cc29ba175d9039d5126387e5c Binary files /dev/null and b/upload0113/upload/b45f336e-983a-4ebf-aa3a-528e6aa2f390.jpg differ diff --git a/upload0113/upload/b64493ab-ab97-4b9c-84d6-5c0516d5e218.jpg b/upload0113/upload/b64493ab-ab97-4b9c-84d6-5c0516d5e218.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd3569448a17c063d9860faf8187343dfe4893f8 Binary files /dev/null and b/upload0113/upload/b64493ab-ab97-4b9c-84d6-5c0516d5e218.jpg differ diff --git "a/upload0113/upload/b7b60643-5989-4643-abf9-77ed0680c889.3\350\213\261\345\257\2706.jpg" "b/upload0113/upload/b7b60643-5989-4643-abf9-77ed0680c889.3\350\213\261\345\257\2706.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..ed4822db65480c1a165280b7b367a4fd44e45c37 Binary files /dev/null and "b/upload0113/upload/b7b60643-5989-4643-abf9-77ed0680c889.3\350\213\261\345\257\2706.jpg" differ diff --git a/upload0113/upload/b7d52cd5-6182-4e23-a468-0866997c2f06.jpg b/upload0113/upload/b7d52cd5-6182-4e23-a468-0866997c2f06.jpg new file mode 100644 index 0000000000000000000000000000000000000000..729e38b3ded8354efeef37fbfc3af214af684d77 Binary files /dev/null and b/upload0113/upload/b7d52cd5-6182-4e23-a468-0866997c2f06.jpg differ diff --git a/upload0113/upload/b87fdaac-6925-4c6e-ba50-1f9d4a07440a.jpg b/upload0113/upload/b87fdaac-6925-4c6e-ba50-1f9d4a07440a.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11563687186a5892979b3570a23c4cb5fe612134 Binary files /dev/null and b/upload0113/upload/b87fdaac-6925-4c6e-ba50-1f9d4a07440a.jpg differ diff --git "a/upload0113/upload/b9407f5a-9be3-4513-8136-a8c1dcc9e23f.5\350\213\261\345\257\2702.jpg" "b/upload0113/upload/b9407f5a-9be3-4513-8136-a8c1dcc9e23f.5\350\213\261\345\257\2702.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..5aa98112c3a913c22865ecdcfea08d22dd685d81 Binary files /dev/null and "b/upload0113/upload/b9407f5a-9be3-4513-8136-a8c1dcc9e23f.5\350\213\261\345\257\2702.jpg" differ diff --git a/upload0113/upload/b96c12d5-444c-47fe-8ea9-e08ba18fe500.jpg b/upload0113/upload/b96c12d5-444c-47fe-8ea9-e08ba18fe500.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a61a0c9a75b1d54f10d5989920c83699a4567be Binary files /dev/null and b/upload0113/upload/b96c12d5-444c-47fe-8ea9-e08ba18fe500.jpg differ diff --git a/upload0113/upload/b9a648c7-0305-45b3-b10a-d1dbd6ca7bf6.jpg b/upload0113/upload/b9a648c7-0305-45b3-b10a-d1dbd6ca7bf6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c401da74f8fc0e7a1deb9349d3e4cf9b7aa5039 Binary files /dev/null and b/upload0113/upload/b9a648c7-0305-45b3-b10a-d1dbd6ca7bf6.jpg differ diff --git a/upload0113/upload/bcfd1fea-f484-4c85-b08d-46bbca55f07f.jpg b/upload0113/upload/bcfd1fea-f484-4c85-b08d-46bbca55f07f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e4bcf35f66d7df8bdeaf9fd1b363a1a46446fa8 Binary files /dev/null and b/upload0113/upload/bcfd1fea-f484-4c85-b08d-46bbca55f07f.jpg differ diff --git a/upload0113/upload/c1b97aeb-e15d-4297-a96f-dadeac8d1104.jpg b/upload0113/upload/c1b97aeb-e15d-4297-a96f-dadeac8d1104.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d5b5f2666caa6a1f8bcffd8397043af59c5fafa1 Binary files /dev/null and b/upload0113/upload/c1b97aeb-e15d-4297-a96f-dadeac8d1104.jpg differ diff --git a/upload0113/upload/c2e2a916-ae91-4033-8996-db74e2d78872.jpg b/upload0113/upload/c2e2a916-ae91-4033-8996-db74e2d78872.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2b259f46a670f4fc7a38d315a5473736c7ef440d Binary files /dev/null and b/upload0113/upload/c2e2a916-ae91-4033-8996-db74e2d78872.jpg differ diff --git a/upload0113/upload/c341af05-8ca4-410d-b17d-5bd40c48c151.jpg b/upload0113/upload/c341af05-8ca4-410d-b17d-5bd40c48c151.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0cb390c5a0cb3abfdd83c599cc3edd2233bcdea6 Binary files /dev/null and b/upload0113/upload/c341af05-8ca4-410d-b17d-5bd40c48c151.jpg differ diff --git "a/upload0113/upload/c384e530-2b6a-4637-82dc-022261c7c407.6\350\213\261\345\257\2702.jpg" "b/upload0113/upload/c384e530-2b6a-4637-82dc-022261c7c407.6\350\213\261\345\257\2702.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..11471463159da7639181e405c8b8f4d7d0c32757 Binary files /dev/null and "b/upload0113/upload/c384e530-2b6a-4637-82dc-022261c7c407.6\350\213\261\345\257\2702.jpg" differ diff --git a/upload0113/upload/c3bd387e-1138-4b8c-8aaf-ed93347fde57.png b/upload0113/upload/c3bd387e-1138-4b8c-8aaf-ed93347fde57.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2433b0f03f59a0e2755b778f0893da954f0e54 Binary files /dev/null and b/upload0113/upload/c3bd387e-1138-4b8c-8aaf-ed93347fde57.png differ diff --git a/upload0113/upload/c516fdca-a220-4af7-abcb-e4218cabb956.webp b/upload0113/upload/c516fdca-a220-4af7-abcb-e4218cabb956.webp new file mode 100644 index 0000000000000000000000000000000000000000..b8faa1ffc1cc84d34927d3cf306fe4af248fc671 Binary files /dev/null and b/upload0113/upload/c516fdca-a220-4af7-abcb-e4218cabb956.webp differ diff --git a/upload0113/upload/c5a5a9fc-ff98-4c46-8c95-39216be4bfcc.jpg b/upload0113/upload/c5a5a9fc-ff98-4c46-8c95-39216be4bfcc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..10f2e7d9a5c6aa8bd4431aa137ff7a354e743f38 Binary files /dev/null and b/upload0113/upload/c5a5a9fc-ff98-4c46-8c95-39216be4bfcc.jpg differ diff --git a/upload0113/upload/c9de090b-166c-4d23-a52e-a4959fa636d9.jpg b/upload0113/upload/c9de090b-166c-4d23-a52e-a4959fa636d9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af1849e448941413de048835891c79426bdc1d81 Binary files /dev/null and b/upload0113/upload/c9de090b-166c-4d23-a52e-a4959fa636d9.jpg differ diff --git a/upload0113/upload/cd8bfa63-d77d-4b20-beda-b2f57774c149.jpg b/upload0113/upload/cd8bfa63-d77d-4b20-beda-b2f57774c149.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8cb22ce2af09e12211939098c4942de0298d3eab Binary files /dev/null and b/upload0113/upload/cd8bfa63-d77d-4b20-beda-b2f57774c149.jpg differ diff --git a/upload0113/upload/ce382391-acea-4545-a358-deb5b709c505.jpg b/upload0113/upload/ce382391-acea-4545-a358-deb5b709c505.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6bf168706dbf669ce4ede06bd71a2dc3edca97c Binary files /dev/null and b/upload0113/upload/ce382391-acea-4545-a358-deb5b709c505.jpg differ diff --git a/upload0113/upload/cfd733e0-4a8a-4b87-8f30-fb909025c647.jpg b/upload0113/upload/cfd733e0-4a8a-4b87-8f30-fb909025c647.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e091402c4bf9bc86f108bd2e6f1e39d0b339db4c Binary files /dev/null and b/upload0113/upload/cfd733e0-4a8a-4b87-8f30-fb909025c647.jpg differ diff --git a/upload0113/upload/d05c4bd7-2c16-4ca9-9ab9-fc31f7000795.jpg b/upload0113/upload/d05c4bd7-2c16-4ca9-9ab9-fc31f7000795.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8448ec7a0e68f7090b7878d9d7216cca3cfbdb3d Binary files /dev/null and b/upload0113/upload/d05c4bd7-2c16-4ca9-9ab9-fc31f7000795.jpg differ diff --git a/upload0113/upload/d0dc9531-94a1-4236-98c8-7f8fdcaa79c0.jpg b/upload0113/upload/d0dc9531-94a1-4236-98c8-7f8fdcaa79c0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..05031623ad982a08f9b111b7163c91631db04e25 Binary files /dev/null and b/upload0113/upload/d0dc9531-94a1-4236-98c8-7f8fdcaa79c0.jpg differ diff --git a/upload0113/upload/d2c3b8a4-1ece-4f1f-a222-9f9e0ee11b15.jpg b/upload0113/upload/d2c3b8a4-1ece-4f1f-a222-9f9e0ee11b15.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5b72c843097e786cddf842f2784a0fb6e977bbba Binary files /dev/null and b/upload0113/upload/d2c3b8a4-1ece-4f1f-a222-9f9e0ee11b15.jpg differ diff --git a/upload0113/upload/d6bb51c1-856e-4134-abbc-a59c4ce46603.jpg b/upload0113/upload/d6bb51c1-856e-4134-abbc-a59c4ce46603.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b7349802119416655b4d6ed16a3e694bac7bc648 Binary files /dev/null and b/upload0113/upload/d6bb51c1-856e-4134-abbc-a59c4ce46603.jpg differ diff --git a/upload0113/upload/d7680fd5-03e0-4c62-92b8-a154bca050cc.jpg b/upload0113/upload/d7680fd5-03e0-4c62-92b8-a154bca050cc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c44883e81a18de5115ae6df5a0feb8ca2c5fb1f5 Binary files /dev/null and b/upload0113/upload/d7680fd5-03e0-4c62-92b8-a154bca050cc.jpg differ diff --git a/upload0113/upload/d7edab0c-6f77-4eaa-8312-b7dc8cb682a1.jpg b/upload0113/upload/d7edab0c-6f77-4eaa-8312-b7dc8cb682a1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37d2577e09a014bf0ef41a31722a7705573d0828 Binary files /dev/null and b/upload0113/upload/d7edab0c-6f77-4eaa-8312-b7dc8cb682a1.jpg differ diff --git a/upload0113/upload/d9d5ac78-8e14-4f6d-992f-b2ffc4eb4afd.jpg b/upload0113/upload/d9d5ac78-8e14-4f6d-992f-b2ffc4eb4afd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4f6ba6765429e26a25ea8cdb1234ffa301e7bc0 Binary files /dev/null and b/upload0113/upload/d9d5ac78-8e14-4f6d-992f-b2ffc4eb4afd.jpg differ diff --git a/upload0113/upload/de767e22-bb4b-4d6a-8b31-0d0f002f4f51.jpg b/upload0113/upload/de767e22-bb4b-4d6a-8b31-0d0f002f4f51.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e21d9359e50a3cd2b3a9dccec8fdb8fe0eb1e946 Binary files /dev/null and b/upload0113/upload/de767e22-bb4b-4d6a-8b31-0d0f002f4f51.jpg differ diff --git a/upload0113/upload/df14460f-6282-48ad-8a8d-d478deafaf73.jpg b/upload0113/upload/df14460f-6282-48ad-8a8d-d478deafaf73.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec8d2cae476b0c04e71a4b02edfa9bc8080dd87d Binary files /dev/null and b/upload0113/upload/df14460f-6282-48ad-8a8d-d478deafaf73.jpg differ diff --git a/upload0113/upload/e0e358ac-9ff2-455c-a745-48a83d3f1fd6.jpg b/upload0113/upload/e0e358ac-9ff2-455c-a745-48a83d3f1fd6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4cedbbbe09add382d3abdcda473b8cdb50d6f43d Binary files /dev/null and b/upload0113/upload/e0e358ac-9ff2-455c-a745-48a83d3f1fd6.jpg differ diff --git a/upload0113/upload/e15c2c57-4862-48fb-ac0e-ee7124fdf36f.5.jpg b/upload0113/upload/e15c2c57-4862-48fb-ac0e-ee7124fdf36f.5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..49f5a2aa08099a5d38867362e1676878e5dcf693 Binary files /dev/null and b/upload0113/upload/e15c2c57-4862-48fb-ac0e-ee7124fdf36f.5.jpg differ diff --git a/upload0113/upload/ea110379-87ec-42b2-aeaf-5e27410902f5.jpg b/upload0113/upload/ea110379-87ec-42b2-aeaf-5e27410902f5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6bf168706dbf669ce4ede06bd71a2dc3edca97c Binary files /dev/null and b/upload0113/upload/ea110379-87ec-42b2-aeaf-5e27410902f5.jpg differ diff --git "a/upload0113/upload/ea2d1f35-d825-433a-ba5e-a098214a106a.6\350\213\261\345\257\2701.jpg" "b/upload0113/upload/ea2d1f35-d825-433a-ba5e-a098214a106a.6\350\213\261\345\257\2701.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..aa7aec87a964ccb67cc764e0ff96329e5bf3d595 Binary files /dev/null and "b/upload0113/upload/ea2d1f35-d825-433a-ba5e-a098214a106a.6\350\213\261\345\257\2701.jpg" differ diff --git "a/upload0113/upload/ea6ffb3a-6f10-4062-b71a-22f5e6f7375f.3\350\213\261\345\257\2701.jpg" "b/upload0113/upload/ea6ffb3a-6f10-4062-b71a-22f5e6f7375f.3\350\213\261\345\257\2701.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..23cb007fb6e099d654cf7ad0ae2812306fe86251 Binary files /dev/null and "b/upload0113/upload/ea6ffb3a-6f10-4062-b71a-22f5e6f7375f.3\350\213\261\345\257\2701.jpg" differ diff --git a/upload0113/upload/ede83076-804d-4140-b3b3-fdae640793d9.jpg b/upload0113/upload/ede83076-804d-4140-b3b3-fdae640793d9.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e74cc4f00531ab895c7d17b7f8eebaba06f278d3 Binary files /dev/null and b/upload0113/upload/ede83076-804d-4140-b3b3-fdae640793d9.jpg differ diff --git a/upload0113/upload/f1ad08e7-ea7c-4ba7-9354-9d5eded26c62.jpg b/upload0113/upload/f1ad08e7-ea7c-4ba7-9354-9d5eded26c62.jpg new file mode 100644 index 0000000000000000000000000000000000000000..013ffbde9fb644892ac6075a0893a6a183dbb817 Binary files /dev/null and b/upload0113/upload/f1ad08e7-ea7c-4ba7-9354-9d5eded26c62.jpg differ diff --git "a/upload0113/upload/f28dea0d-a50b-47c2-8792-10f66441a5d2.5\350\213\261\345\257\2704.jpg" "b/upload0113/upload/f28dea0d-a50b-47c2-8792-10f66441a5d2.5\350\213\261\345\257\2704.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..067a4e0b21dd40cbc76a0597aaa520b50d1d3dd8 Binary files /dev/null and "b/upload0113/upload/f28dea0d-a50b-47c2-8792-10f66441a5d2.5\350\213\261\345\257\2704.jpg" differ diff --git a/upload0113/upload/f2cb462e-a381-4f99-b572-f63c45821d17.jpg b/upload0113/upload/f2cb462e-a381-4f99-b572-f63c45821d17.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80a2b7540dbcac89e9cbc59d2501d4a073632a48 Binary files /dev/null and b/upload0113/upload/f2cb462e-a381-4f99-b572-f63c45821d17.jpg differ diff --git a/upload0113/upload/f335148e-d583-47c3-ad91-0b062ef3885d.jpg b/upload0113/upload/f335148e-d583-47c3-ad91-0b062ef3885d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f23dc5959e01c5d3b64c826a6c57ab228eded773 Binary files /dev/null and b/upload0113/upload/f335148e-d583-47c3-ad91-0b062ef3885d.jpg differ diff --git a/upload0113/upload/f5a918a8-c820-4d4b-b976-bf19348e24d4.jpg b/upload0113/upload/f5a918a8-c820-4d4b-b976-bf19348e24d4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33837dc7e29e9aff9d2a7b3066cfa385c73631ef Binary files /dev/null and b/upload0113/upload/f5a918a8-c820-4d4b-b976-bf19348e24d4.jpg differ diff --git a/upload0113/upload/f74e5bc6-a0c7-4e1b-ab9b-7efb60ec21c2.jpg b/upload0113/upload/f74e5bc6-a0c7-4e1b-ab9b-7efb60ec21c2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d07a22860ba37b1bd4f0e5adfe91966e989029b9 Binary files /dev/null and b/upload0113/upload/f74e5bc6-a0c7-4e1b-ab9b-7efb60ec21c2.jpg differ diff --git a/upload0113/upload/f7ba31c4-fce8-4d95-a8a0-e70f7f76063d.jpg b/upload0113/upload/f7ba31c4-fce8-4d95-a8a0-e70f7f76063d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..19412ef55a9b84a8ce1084249dda432483c095e7 Binary files /dev/null and b/upload0113/upload/f7ba31c4-fce8-4d95-a8a0-e70f7f76063d.jpg differ diff --git a/upload0113/upload/f9792402-f28a-4ca1-bea4-a982fcd86d40.jpg b/upload0113/upload/f9792402-f28a-4ca1-bea4-a982fcd86d40.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b4efa65082213ec2005ec346b62eec3ecfaa3016 Binary files /dev/null and b/upload0113/upload/f9792402-f28a-4ca1-bea4-a982fcd86d40.jpg differ diff --git a/upload0113/upload/f98cf0d2-2a08-4709-b393-831315659efa.jpg b/upload0113/upload/f98cf0d2-2a08-4709-b393-831315659efa.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e94e9b9b0517dc132ac3532bff91f0d4ee77635 Binary files /dev/null and b/upload0113/upload/f98cf0d2-2a08-4709-b393-831315659efa.jpg differ diff --git a/upload0113/upload/fb4902b6-e570-454a-97f9-6fb92f65e636.jpg b/upload0113/upload/fb4902b6-e570-454a-97f9-6fb92f65e636.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e3c6b103565c41bd1f77ca01aa4efecdcfbe270 Binary files /dev/null and b/upload0113/upload/fb4902b6-e570-454a-97f9-6fb92f65e636.jpg differ diff --git a/upload0113/upload/fdc78c42-e0ee-41c5-b813-4fb86be4b6ad.jpg b/upload0113/upload/fdc78c42-e0ee-41c5-b813-4fb86be4b6ad.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f80d57a0d06af76e4c5fdf9a2a7cc22d48d5f789 Binary files /dev/null and b/upload0113/upload/fdc78c42-e0ee-41c5-b813-4fb86be4b6ad.jpg differ