yshop1.4.2 商品新增多图评价,订单新增快递查询,导出最新sql

This commit is contained in:
hupeng
2019-12-09 18:04:26 +08:00
parent 696928eaf9
commit fe9bd6c901
16 changed files with 359 additions and 307 deletions

View File

@ -2,7 +2,7 @@
#### 项目简介
yshop基于当前流行技术组合的前后端分离商城系统 SpringBoot2+Jpa+MybatisPlus+SpringSecurity+jwt+redis+Vue的前后端分离的商城系统 包含商城、拼团、砍价、商户管理、 秒杀、优惠券、积分、分销等功能,更适合企业或个人二次开发;;
yshop基于当前流行技术组合的前后端分离商城系统 SpringBoot2+Jpa+MybatisPlus+SpringSecurity+jwt+redis+Vue的前后端分离的商城系统 包含商城、拼团、砍价、商户管理、 秒杀、优惠券、积分、分销、会员等功能,更适合企业或个人二次开发;;
**开发文档** 【[查看文档](https://gitee.com/guchengwuyue/yshopmall/wikis/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83?sort_id=1718722)】
@ -141,6 +141,9 @@ yshop基于当前流行技术组合的前后端分离商城系统 SpringBoot2
- 1.7、会员后台新增余额调整
- 1.8、修复新增配置数据有时候不成功问题等
- 1.4.1个人中心新增账单流水
- yshop1.4.2 发布更新如下:
-1.商品新增多图评价
-2.订单新增快递查询
#### 反馈交流

File diff suppressed because one or more lines are too long

View File

@ -116,6 +116,8 @@ public class YxStoreOrder extends BaseEntity {
@ApiModelProperty(value = "快递名称/送货人姓名")
private String deliveryName;
private String deliverySn;
@ApiModelProperty(value = "发货类型")
private String deliveryType;

View File

@ -7,6 +7,8 @@ import co.yixiang.common.web.controller.BaseController;
import co.yixiang.common.web.param.IdParam;
import co.yixiang.common.web.vo.Paging;
import co.yixiang.exception.ErrorRequestException;
import co.yixiang.express.ExpressService;
import co.yixiang.express.dao.ExpressInfo;
import co.yixiang.modules.activity.service.YxStorePinkService;
import co.yixiang.modules.order.entity.YxStoreOrder;
import co.yixiang.modules.order.entity.YxStoreOrderCartInfo;
@ -14,10 +16,7 @@ import co.yixiang.modules.order.service.YxStoreOrderCartInfoService;
import co.yixiang.modules.order.service.YxStoreOrderService;
import co.yixiang.modules.order.service.YxStoreOrderStatusService;
import co.yixiang.modules.order.web.dto.*;
import co.yixiang.modules.order.web.param.OrderParam;
import co.yixiang.modules.order.web.param.PayParam;
import co.yixiang.modules.order.web.param.RefundParam;
import co.yixiang.modules.order.web.param.YxStoreOrderQueryParam;
import co.yixiang.modules.order.web.param.*;
import co.yixiang.modules.order.web.vo.YxStoreOrderQueryVo;
import co.yixiang.modules.shop.entity.YxStoreProductReply;
import co.yixiang.modules.shop.service.YxStoreCartService;
@ -68,6 +67,7 @@ public class StoreOrderController extends BaseController {
private final YxStoreCouponUserService couponUserService;
private final YxSystemConfigService systemConfigService;
private final YxStorePinkService storePinkService;
private final ExpressService expressService;
/**
@ -510,5 +510,19 @@ public class StoreOrderController extends BaseController {
return ApiResult.ok("ok");
}
/**@Valid
* 获取物流信息,根据传的订单编号 ShipperCode快递公司编号 和物流单号,
*/
@PostMapping("/order/express")
@ApiOperation(value = "获取物流信息",notes = "获取物流信息",response = ExpressParam.class)
public ApiResult<Object> express( @RequestBody ExpressParam expressInfoDo){
ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(),
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode());
if(!expressInfo.isSuccess()) return ApiResult.fail(expressInfo.getReason());
return ApiResult.ok(expressInfo);
}
}

View File

@ -0,0 +1,19 @@
package co.yixiang.modules.order.web.param;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @ClassName ExpressParam
* @Author hupeng <610796224@qq.com>
* @Date 2019/12/9
**/
@Data
public class ExpressParam implements Serializable {
//@NotBlank()
private String orderCode;
private String shipperCode;
private String logisticCode;
}

View File

@ -116,6 +116,8 @@ public class YxStoreOrderQueryVo implements Serializable {
@ApiModelProperty(value = "快递名称/送货人姓名")
private String deliveryName;
private String deliverySn;
@ApiModelProperty(value = "发货类型")
private String deliveryType;

View File

@ -26,7 +26,7 @@ public interface YxStoreProductReplyMapper extends BaseMapper<YxStoreProductRepl
@Select("select A.product_score as productScore,A.service_score as serviceScore," +
"A.comment,A.merchant_reply_content as merchantReplyContent," +
"A.merchant_reply_time as merchantReplyTime,A.pics,A.add_time as addTime," +
"A.merchant_reply_time as merchantReplyTime,A.pics as pictures,A.add_time as addTime," +
"B.nickname,B.avatar,C.cart_info as cartInfo" +
" from yx_store_product_reply A left join yx_user B " +
"on A.uid = B.uid left join yx_store_order_cart_info C on A.unique = C.unique" +

View File

@ -1,5 +1,6 @@
package co.yixiang.modules.shop.web.vo;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -7,6 +8,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
/**
@ -44,6 +46,19 @@ public class YxStoreProductReplyQueryVo implements Serializable {
@ApiModelProperty(value = "评论图片")
private String[] pics;
private String pictures;
private String[] picturesArr;
public String[] getPicturesArr() {
if(StrUtil.isNotEmpty(pictures)){
return pictures.split(",");
}else{
return new String[]{};
}
}
@ApiModelProperty(value = "评论时间")
private Integer addTime;
@ -63,7 +78,6 @@ public class YxStoreProductReplyQueryVo implements Serializable {
private String suk;
private String pictures;
@JsonIgnore
private String cartInfo;

View File

@ -133,9 +133,9 @@ yshop:
# 快鸟物流查询配置
express:
enable: false
appId: "XXXXXXXXX"
appKey: "XXXXXXXXXXXXXXXXXXXXXXXXX"
enable: true
appId:
appKey:
vendors:
- code: "ZTO"
name: "中通快递"

View File

@ -142,9 +142,9 @@ yshop:
# 快鸟物流查询配置
express:
enable: false
appId: "XXXXXXXXX"
appKey: "XXXXXXXXXXXXXXXXXXXXXXXXX"
enable: true
appId: 1607734
appKey:
vendors:
- code: "ZTO"
name: "中通快递"

View File

@ -134,6 +134,10 @@ public class YxStoreOrder implements Serializable {
@Column(name = "delivery_name")
private String deliveryName;
@Column(name = "delivery_sn")
private String deliverySn;
// 发货类型
@Column(name = "delivery_type")
private String deliveryType;

View File

@ -1,5 +1,6 @@
package co.yixiang.modules.shop.rest;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import co.yixiang.exception.BadRequestException;
import co.yixiang.modules.shop.domain.YxStoreOrder;
@ -8,6 +9,8 @@ import co.yixiang.modules.shop.service.YxStoreOrderService;
import co.yixiang.aop.log.Log;
import co.yixiang.modules.shop.service.YxStoreOrderStatusService;
import co.yixiang.modules.shop.service.dto.YxStoreOrderQueryCriteria;
import co.yixiang.modules.system.service.DictDetailService;
import co.yixiang.modules.system.service.dto.DictDetailDTO;
import co.yixiang.utils.OrderUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
@ -33,6 +36,9 @@ public class YxStoreOrderController {
@Autowired
private YxStoreOrderStatusService yxStoreOrderStatusService;
@Autowired
private DictDetailService dictDetailService;
@GetMapping(value = "/data/count")
//@PreAuthorize("hasAnyRole('ADMIN','YXSTOREORDER_ALL','YXSTOREORDER_SELECT')")
public ResponseEntity getCount(){
@ -114,8 +120,17 @@ public class YxStoreOrderController {
@PutMapping(value = "/yxStoreOrder")
@PreAuthorize("hasAnyRole('ADMIN','YXSTOREORDER_ALL','YXSTOREORDER_EDIT')")
public ResponseEntity update(@Validated @RequestBody YxStoreOrder resources){
DictDetailDTO dictDetailDTO = dictDetailService.findById(Long.valueOf(resources
.getDeliveryName()));
if(ObjectUtil.isNull(dictDetailDTO)){
throw new BadRequestException("请先添加快递公司");
}
resources.setStatus(1);
resources.setDeliveryType("express");
resources.setDeliveryName(dictDetailDTO.getLabel());
resources.setDeliverySn(dictDetailDTO.getValue());
yxStoreOrderService.update(resources);
YxStoreOrderStatus storeOrderStatus = new YxStoreOrderStatus();

View File

@ -1,5 +1,6 @@
package co.yixiang.modules.system.rest;
import cn.hutool.core.util.StrUtil;
import co.yixiang.exception.BadRequestException;
import co.yixiang.aop.log.Log;
import co.yixiang.modules.system.domain.Dict;
@ -37,6 +38,7 @@ public class DictController {
@PostMapping(value = "/dict")
@PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')")
public ResponseEntity create(@Validated @RequestBody Dict resources){
//if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作");
if (resources.getId() != null) {
throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
}
@ -47,6 +49,7 @@ public class DictController {
@PutMapping(value = "/dict")
@PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')")
public ResponseEntity update(@Validated(Dict.Update.class) @RequestBody Dict resources){
//if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作");
dictService.update(resources);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@ -55,6 +58,7 @@ public class DictController {
@DeleteMapping(value = "/dict/{id}")
@PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')")
public ResponseEntity delete(@PathVariable Long id){
//if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作");
dictService.delete(id);
return new ResponseEntity(HttpStatus.OK);
}

View File

@ -1,5 +1,6 @@
package co.yixiang.modules.system.rest;
import cn.hutool.core.util.StrUtil;
import co.yixiang.exception.BadRequestException;
import co.yixiang.aop.log.Log;
import co.yixiang.modules.system.domain.DictDetail;
@ -56,6 +57,7 @@ public class DictDetailController {
@PostMapping(value = "/dictDetail")
@PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')")
public ResponseEntity create(@Validated @RequestBody DictDetail resources){
//if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作");
if (resources.getId() != null) {
throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
}
@ -66,6 +68,7 @@ public class DictDetailController {
@PutMapping(value = "/dictDetail")
@PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')")
public ResponseEntity update(@Validated(DictDetail.Update.class) @RequestBody DictDetail resources){
//if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作");
dictDetailService.update(resources);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@ -74,6 +77,7 @@ public class DictDetailController {
@DeleteMapping(value = "/dictDetail/{id}")
@PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')")
public ResponseEntity delete(@PathVariable Long id){
//if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作");
dictDetailService.delete(id);
return new ResponseEntity(HttpStatus.OK);
}

View File

@ -51,16 +51,16 @@ public class ExpressService {
/**
* 获取物流信息
*
* @param expCode
* @param expNo
* @param OrderCode
* @param ShipperCode
* @return
*/
public ExpressInfo getExpressInfo(String expCode, String expNo) {
public ExpressInfo getExpressInfo(String OrderCode,String ShipperCode, String LogisticCode) {
try {
String result = getOrderTracesByJson(expCode, expNo);
String result = getOrderTracesByJson(OrderCode,ShipperCode, LogisticCode);
ObjectMapper objMap = new ObjectMapper();
ExpressInfo ei = objMap.readValue(result, ExpressInfo.class);
ei.setShipperName(getVendorName(expCode));
ei.setShipperName(getVendorName(ShipperCode));
return ei;
} catch (Exception e) {
logger.error(e.getMessage(), e);
@ -74,12 +74,12 @@ public class ExpressService {
*
* @throws Exception
*/
private String getOrderTracesByJson(String expCode, String expNo) throws Exception {
private String getOrderTracesByJson(String OrderCode,String ShipperCode, String LogisticCode) throws Exception {
if (!properties.isEnable()) {
return null;
}
String requestData = "{'OrderCode':'','ShipperCode':'" + expCode + "','LogisticCode':'" + expNo + "'}";
String requestData = "{'OrderCode':'"+OrderCode+"','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "'}";
Map<String, Object> params = new HashMap<>();
params.put("RequestData", URLEncoder.encode(requestData, "UTF-8"));

View File

@ -4,6 +4,7 @@
package co.yixiang.express.dao;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@ -13,6 +14,7 @@ import java.util.List;
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class ExpressInfo {
@JsonProperty("LogisticCode")
@ -32,81 +34,8 @@ public class ExpressInfo {
private String ShipperName;
public String getLogisticCode() {
return LogisticCode;
}
@JsonProperty("OrderCode")
private String OrderCode;
public void setLogisticCode(String LogisticCode) {
this.LogisticCode = LogisticCode;
}
public String getShipperCode() {
return ShipperCode;
}
public void setShipperCode(String ShipperCode) {
this.ShipperCode = ShipperCode;
}
public List<Traces> getTraces() {
return Traces;
}
public void setTraces(List<Traces> Traces) {
this.Traces = Traces;
}
public String getState() {
return State;
}
public void setState(String State) {
this.State = State;
}
public String getEBusinessID() {
return EBusinessID;
}
public void setEBusinessID(String EBusinessID) {
this.EBusinessID = EBusinessID;
}
public boolean getSuccess() {
return Success;
}
public void setSuccess(boolean Success) {
this.Success = Success;
}
public String getReason() {
return Reason;
}
public void setReason(String Reason) {
this.Reason = Reason;
}
public String getShipperName() {
return ShipperName;
}
public void setShipperName(String shipperName) {
ShipperName = shipperName;
}
@Override
public String toString() {
return "ExpressInfo{" +
"LogisticCode='" + LogisticCode + '\'' +
", ShipperCode='" + ShipperCode + '\'' +
", Traces=" + Traces +
", State='" + State + '\'' +
", EBusinessID='" + EBusinessID + '\'' +
", Success=" + Success +
", Reason=" + Reason +
", ShipperName='" + ShipperName + '\'' +
'}';
}
}