|
@@ -25,11 +25,13 @@ import com.qxgmat.dto.request.*;
|
|
|
import com.qxgmat.dto.response.UserOrderDetailDto;
|
|
|
import com.qxgmat.dto.response.UserOrderRecordListDto;
|
|
|
import com.qxgmat.help.ShiroHelp;
|
|
|
+import com.qxgmat.service.extend.CourseExtendService;
|
|
|
import com.qxgmat.service.extend.OrderFlowService;
|
|
|
import com.qxgmat.service.extend.TradeService;
|
|
|
import com.qxgmat.service.inline.*;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
+import org.apache.tomcat.websocket.TransformationResult;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
@@ -80,6 +82,9 @@ public class OrderController {
|
|
|
private CourseDataService courseDataService;
|
|
|
|
|
|
@Autowired
|
|
|
+ private CourseExtendService courseExtendService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private UserInvoiceService userInvoiceService;
|
|
|
|
|
|
@RequestMapping(value = "/checkout/all", method = RequestMethod.GET)
|
|
@@ -102,20 +107,21 @@ public class OrderController {
|
|
|
return ResponseHelp.success(number);
|
|
|
}
|
|
|
|
|
|
- @RequestMapping(value = "/checkout/number", method = RequestMethod.POST)
|
|
|
- @ApiOperation(value = "修改购物车", notes = "修改购物车", httpMethod = "POST")
|
|
|
+ @RequestMapping(value = "/checkout/number", method = RequestMethod.PUT)
|
|
|
+ @ApiOperation(value = "修改购物车", notes = "修改购物车", httpMethod = "PUT")
|
|
|
public Response<Integer> changeCheckout(@RequestBody @Validated RecordChangeDto dto, HttpServletRequest request) {
|
|
|
User user = (User) shiroHelp.getLoginUser();
|
|
|
- UserOrderCheckout checkout = Transform.dtoToEntity(dto);
|
|
|
+ UserOrderCheckout checkout = userOrderCheckoutService.get(dto.getId());
|
|
|
+ checkout.setNumber(dto.getNumber());
|
|
|
int number = orderFlowService.changeCheckout(user.getId(), checkout);
|
|
|
return ResponseHelp.success(number);
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/checkout/delete", method = RequestMethod.DELETE)
|
|
|
@ApiOperation(value = "删除购物车", notes = "删除购物车", httpMethod = "DELETE")
|
|
|
- public Response<Integer> deleteCheckout(@RequestParam int checkoutId, HttpServletRequest request) throws Exception {
|
|
|
+ public Response<Integer> deleteCheckout(@RequestParam int id, HttpServletRequest request) throws Exception {
|
|
|
User user = (User) shiroHelp.getLoginUser();
|
|
|
- int number = orderFlowService.removeCheckout(checkoutId, user.getId());
|
|
|
+ int number = orderFlowService.removeCheckout(id, user.getId());
|
|
|
return ResponseHelp.success(number);
|
|
|
}
|
|
|
|
|
@@ -134,7 +140,6 @@ public class OrderController {
|
|
|
User user = (User) shiroHelp.getLoginUser();
|
|
|
UserOrderCheckout checkout = Transform.dtoToEntity(dto);
|
|
|
UserOrder order = orderFlowService.makeOrderWithSpeed(user.getId(), checkout);
|
|
|
- orderFlowService.payed(order.getId(), user.getId(), 123123123L, new Date(), PayMethod.WECHAT, "ceshi");
|
|
|
return ResponseHelp.success(detail(user.getId(), order, null));
|
|
|
}
|
|
|
|
|
@@ -149,7 +154,7 @@ public class OrderController {
|
|
|
if (!order.getUserId().equals(user.getId())){
|
|
|
throw new ParameterException("订单不存在");
|
|
|
}
|
|
|
- PayResponseData data = tradeService.pay(user.getId(), "千行GMAT", "千行服务购买", PayModule.ORDER, order.getId(), order.getMoney(), PayChannel.WECHAT_QR, request);
|
|
|
+ PayResponseData data = tradeService.pay(user.getId(), "千行GMAT", "千行服务购买", PayModule.ORDER, order.getId(), BigDecimal.valueOf(0.1), PayChannel.WECHAT_QR, request);
|
|
|
return ResponseHelp.success(data);
|
|
|
}
|
|
|
|
|
@@ -164,7 +169,7 @@ public class OrderController {
|
|
|
if (!order.getUserId().equals(user.getId())){
|
|
|
throw new ParameterException("订单不存在");
|
|
|
}
|
|
|
- PayResponseData data = tradeService.pay(user.getId(), "千行GMAT", "千行服务购买", PayModule.ORDER, order.getId(), order.getMoney(), PayChannel.WECHAT_JS, request);
|
|
|
+ PayResponseData data = tradeService.pay(user.getId(), "千行GMAT", "千行服务购买", PayModule.ORDER, order.getId(), BigDecimal.valueOf(0.1), PayChannel.WECHAT_JS, request);
|
|
|
return ResponseHelp.success(data);
|
|
|
}
|
|
|
|
|
@@ -179,14 +184,14 @@ public class OrderController {
|
|
|
if (!order.getUserId().equals(user.getId())){
|
|
|
throw new ParameterException("订单不存在");
|
|
|
}
|
|
|
- PayResponseData data = tradeService.pay(user.getId(), "千行GMAT", "千行服务购买", PayModule.ORDER, order.getId(), order.getMoney(), PayChannel.ALIPAY_QR, request);
|
|
|
+ PayResponseData data = tradeService.pay(user.getId(), "千行GMAT", "千行服务购买", PayModule.ORDER, order.getId(), BigDecimal.valueOf(0.1), PayChannel.ALIPAY_QR, request);
|
|
|
return ResponseHelp.success(data);
|
|
|
}
|
|
|
|
|
|
@RequestMapping(value = "/pay/query", method = RequestMethod.GET)
|
|
|
@ApiOperation(value = "支付结果查询", notes = "支付结果查询", httpMethod = "GET")
|
|
|
public Response<Boolean> response(
|
|
|
- @RequestParam(required = true, name="id") Long orderId
|
|
|
+ @RequestParam(required = true) Long orderId
|
|
|
) {
|
|
|
User user = (User) shiroHelp.getLoginUser();
|
|
|
UserOrder order = userOrderService.get(orderId);
|
|
@@ -218,10 +223,8 @@ public class OrderController {
|
|
|
List<UserOrderDetailDto> pr = Transform.convert(p, UserOrderDetailDto.class);
|
|
|
Collection orderIds = Transform.getIds(p, UserOrder.class, "id");
|
|
|
|
|
|
- List<UserOrderRecord> recordList = userOrderRecordService.allByUser(user.getId(), orderIds).stream().filter(row->row.getParentId()==0).collect(Collectors.toList());
|
|
|
- List<UserOrderRecordListDto> records = Transform.convert(recordList, UserOrderRecordListDto.class);
|
|
|
- Map<Object, List<UserOrderRecordListDto>> recordMap = Transform.getMapList(records, UserOrderRecordListDto.class, "orderId");
|
|
|
- Transform.combine(pr, recordMap, UserOrderDetailDto.class, "id", "checkouts");
|
|
|
+ List<UserOrderRecord> recordList = userOrderRecordService.allByUser(user.getId(), orderIds);
|
|
|
+ List<UserOrderRecordExtendDto> records = Transform.convert(recordList, UserOrderRecordExtendDto.class);
|
|
|
|
|
|
// 绑定服务
|
|
|
Map<Object, JSONObject> serviceList = new HashMap<Object, JSONObject>(){{
|
|
@@ -232,20 +235,29 @@ public class OrderController {
|
|
|
Setting qxCatSetting = settingService.getByKey(SettingKey.SERVICE_QX_CAT);
|
|
|
put(ServiceKey.QX_CAT.key, qxCatSetting.getValue());
|
|
|
}};
|
|
|
- List<UserOrderRecordListDto> prService = records.stream().filter((row)-> row.getProductType().equals(ProductType.SERVICE.key)).collect(Collectors.toList());
|
|
|
- Transform.combine(prService, serviceList, UserOrderRecordListDto.class, "service", "serviceInfo");
|
|
|
+ List<UserOrderRecordExtendDto> prService = records.stream().filter((row)-> row.getProductType().equals(ProductType.SERVICE.key)).collect(Collectors.toList());
|
|
|
+ Transform.combine(prService, serviceList, UserOrderRecordExtendDto.class, "service", "serviceInfo");
|
|
|
|
|
|
// 绑定课程
|
|
|
- List<UserOrderRecordListDto> prCourse = records.stream().filter((row)-> row.getProductType().equals(ProductType.COURSE.key)).collect(Collectors.toList());
|
|
|
- Collection courseIds = Transform.getIds(prCourse, UserOrderRecordListDto.class, "productId");
|
|
|
+ List<UserOrderRecordExtendDto> prCourse = records.stream().filter((row)-> row.getProductType().equals(ProductType.COURSE.key)).collect(Collectors.toList());
|
|
|
+ Collection courseIds = Transform.getIds(prCourse, UserOrderRecordExtendDto.class, "productId");
|
|
|
List<Course> courseList = courseService.select(courseIds);
|
|
|
- Transform.combine(prCourse, courseList, UserOrderRecordListDto.class, "productId", "course", Course.class, "id", CourseExtendDto.class);
|
|
|
+ Transform.combine(prCourse, courseList, UserOrderRecordExtendDto.class, "productId", "course", Course.class, "id", CourseExtendDto.class);
|
|
|
|
|
|
// 绑定资料
|
|
|
- List<UserOrderRecordListDto> prData = records.stream().filter((row)-> row.getProductType().equals(ProductType.DATA.key)).collect(Collectors.toList());
|
|
|
- Collection dataIds = Transform.getIds(prData, UserOrderRecordListDto.class, "productId");
|
|
|
+ List<UserOrderRecordExtendDto> prData = records.stream().filter((row)-> row.getProductType().equals(ProductType.DATA.key)).collect(Collectors.toList());
|
|
|
+ Collection dataIds = Transform.getIds(prData, UserOrderRecordExtendDto.class, "productId");
|
|
|
List<CourseData> dataList = courseDataService.select(dataIds);
|
|
|
- Transform.combine(prData, dataList, UserOrderRecordListDto.class, "productId", "data", CourseData.class, "id", CourseDataExtendDto.class);
|
|
|
+ Transform.combine(prData, dataList, UserOrderRecordExtendDto.class, "productId", "data", CourseData.class, "id", CourseDataExtendDto.class);
|
|
|
+
|
|
|
+ // 绑定套餐
|
|
|
+ List<UserOrderRecordExtendDto> prPackage = records.stream().filter((row)-> row.getProductType().equals(ProductType.COURSE_PACKAGE.key)).collect(Collectors.toList());
|
|
|
+ Collection packageIds = Transform.getIds(prPackage, UserOrderRecordExtendDto.class, "productId");
|
|
|
+ List<CoursePackage> packageList = coursePackageService.select(packageIds);
|
|
|
+ Transform.combine(prPackage, packageList, UserOrderRecordExtendDto.class, "productId", "coursePackage", CoursePackage.class, "id", CoursePackageExtendDto.class);
|
|
|
+
|
|
|
+ Map<Object, List<UserOrderRecordExtendDto>> recordMap = Transform.getMapList(group(records), UserOrderRecordExtendDto.class, "orderId");
|
|
|
+ Transform.combine(pr, recordMap, UserOrderDetailDto.class, "id", "checkouts");
|
|
|
|
|
|
// 绑定发票
|
|
|
List<UserInvoice> userInvoiceList = userInvoiceService.listByOrder(user.getId(), orderIds);
|
|
@@ -270,11 +282,19 @@ public class OrderController {
|
|
|
) {
|
|
|
User user = (User) shiroHelp.getLoginUser();
|
|
|
UserOrder order = userOrderService.get(id);
|
|
|
+ System.out.println(user.getId());
|
|
|
if (!order.getUserId().equals(user.getId())){
|
|
|
throw new ParameterException("记录不存在");
|
|
|
}
|
|
|
+ List<UserOrderRecordExtendDto> dtos;
|
|
|
+
|
|
|
List<UserOrderRecord> list = userOrderRecordService.allByUser(user.getId(), id);
|
|
|
- List<UserOrderRecordExtendDto> dtos = Transform.convert(list, UserOrderRecordExtendDto.class);
|
|
|
+ if (list.size() == 0){
|
|
|
+ List<UserOrderCheckout> checkouts = userOrderCheckoutService.allByUser(user.getId(), id);
|
|
|
+ dtos = Transform.convert(checkouts, UserOrderRecordExtendDto.class);
|
|
|
+ }else{
|
|
|
+ dtos = Transform.convert(list, UserOrderRecordExtendDto.class);
|
|
|
+ }
|
|
|
|
|
|
return ResponseHelp.success(detail(user.getId(), order, dtos));
|
|
|
}
|
|
@@ -323,6 +343,12 @@ public class OrderController {
|
|
|
List<CourseData> dataList = courseDataService.select(dataIds);
|
|
|
Transform.combine(prData, dataList, UserOrderRecordListDto.class, "productId", "data", CourseData.class, "id", CourseDataExtendDto.class);
|
|
|
|
|
|
+ // 绑定套餐
|
|
|
+ List<UserOrderRecordListDto> prPackage = pr.stream().filter((row)-> row.getProductType().equals(ProductType.COURSE_PACKAGE.key)).collect(Collectors.toList());
|
|
|
+ Collection packageIds = Transform.getIds(prPackage, UserOrderRecordListDto.class, "productId");
|
|
|
+ List<CoursePackage> packageList = coursePackageService.select(packageIds);
|
|
|
+ Transform.combine(prPackage, packageList, UserOrderRecordListDto.class, "productId", "coursePackage", CoursePackage.class, "id", CoursePackageExtendDto.class);
|
|
|
+
|
|
|
|
|
|
return ResponseHelp.success(pr, page, size, p.getTotal());
|
|
|
}
|
|
@@ -371,43 +397,71 @@ public class OrderController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 根据parentId分组
|
|
|
+ * @param records
|
|
|
+ */
|
|
|
+ public List<UserOrderRecordExtendDto> group(List<UserOrderRecordExtendDto> records){
|
|
|
+ List<UserOrderRecordExtendDto> parents = records.stream().filter((row)-> row.getParentId() == 0).collect(Collectors.toList());
|
|
|
+ Map recordMap = Transform.getMapList(records, UserOrderRecordExtendDto.class, "parentId");
|
|
|
+ Transform.combine(parents, recordMap, UserOrderRecordExtendDto.class, "id", "children");
|
|
|
+ return parents;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 统一处理订单以及完整购物车返回信息
|
|
|
* @param userId
|
|
|
* @param order
|
|
|
- * @param list
|
|
|
+ * @param records
|
|
|
* @return
|
|
|
*/
|
|
|
- public UserOrderDetailDto detail(Integer userId, UserOrder order, List<UserOrderRecordExtendDto> list) {
|
|
|
+ public UserOrderDetailDto detail(Integer userId, UserOrder order, List<UserOrderRecordExtendDto> records) {
|
|
|
UserOrderDetailDto dto = Transform.convert(order, UserOrderDetailDto.class);
|
|
|
- if (list == null){
|
|
|
- list = Transform.convert(userOrderCheckoutService.allByUser(userId, order.getId()), UserOrderRecordExtendDto.class);
|
|
|
+ if (records == null){
|
|
|
+ records = Transform.convert(userOrderCheckoutService.allByUser(userId, order.getId()), UserOrderRecordExtendDto.class);
|
|
|
}
|
|
|
- dto.setCheckouts(list);
|
|
|
|
|
|
- // 获取所有课程信息
|
|
|
- List<UserOrderRecordExtendDto> courseCheckout = list.stream().filter((checkout)-> checkout.getProductType().equals(ProductType.COURSE.key)).collect(Collectors.toList());
|
|
|
- Collection courseIds = Transform.getIds(courseCheckout, UserOrderRecordExtendDto.class, "productId");
|
|
|
+ // 绑定服务
|
|
|
+ Map<Object, JSONObject> serviceList = new HashMap<Object, JSONObject>(){{
|
|
|
+ Setting vipSetting = settingService.getByKey(SettingKey.SERVICE_VIP);
|
|
|
+ put(ServiceKey.VIP.key, vipSetting.getValue());
|
|
|
+ Setting textbookSetting = settingService.getByKey(SettingKey.SERVICE_TEXTBOOK);
|
|
|
+ put(ServiceKey.TEXTBOOK.key, textbookSetting.getValue());
|
|
|
+ Setting qxCatSetting = settingService.getByKey(SettingKey.SERVICE_QX_CAT);
|
|
|
+ put(ServiceKey.QX_CAT.key, qxCatSetting.getValue());
|
|
|
+ }};
|
|
|
+ List<UserOrderRecordExtendDto> prService = records.stream().filter((row)-> row.getProductType().equals(ProductType.SERVICE.key)).collect(Collectors.toList());
|
|
|
+ Transform.combine(prService, serviceList, UserOrderRecordExtendDto.class, "service", "serviceInfo");
|
|
|
+
|
|
|
+ // 绑定课程
|
|
|
+ List<UserOrderRecordExtendDto> prCourse = records.stream().filter((row)-> row.getProductType().equals(ProductType.COURSE.key)).collect(Collectors.toList());
|
|
|
+ Collection courseIds = Transform.getIds(prCourse, UserOrderRecordExtendDto.class, "productId");
|
|
|
List<Course> courseList = courseService.select(courseIds);
|
|
|
- dto.setCourses(Transform.convert(courseList, CourseExtendDto.class));
|
|
|
+ Transform.combine(prCourse, courseList, UserOrderRecordExtendDto.class, "productId", "course", Course.class, "id", CourseExtendDto.class);
|
|
|
|
|
|
- // 获取所有资料信息
|
|
|
- List<UserOrderRecordExtendDto> dataCheckout = list.stream().filter((checkout)-> checkout.getProductType().equals(ProductType.DATA.key)).collect(Collectors.toList());
|
|
|
- Collection dataIds = Transform.getIds(dataCheckout, UserOrderRecordExtendDto.class, "productId");
|
|
|
+ // 绑定资料
|
|
|
+ List<UserOrderRecordExtendDto> prData = records.stream().filter((row)-> row.getProductType().equals(ProductType.DATA.key)).collect(Collectors.toList());
|
|
|
+ Collection dataIds = Transform.getIds(prData, UserOrderRecordExtendDto.class, "productId");
|
|
|
List<CourseData> dataList = courseDataService.select(dataIds);
|
|
|
- dto.setDatas(Transform.convert(dataList, CourseDataExtendDto.class));
|
|
|
+ if (order.getPayStatus()==null||order.getPayStatus()==0){
|
|
|
+ courseExtendService.refreshDataResource(null, dataList);
|
|
|
+ }
|
|
|
+ Transform.combine(prData, dataList, UserOrderRecordExtendDto.class, "productId", "data", CourseData.class, "id", CourseDataExtendDto.class);
|
|
|
|
|
|
- // 获取所有套餐信息
|
|
|
- List<UserOrderRecordExtendDto> packageCheckout = list.stream().filter((checkout)-> checkout.getProductType().equals(ProductType.COURSE_PACKAGE.key)).collect(Collectors.toList());
|
|
|
- Collection packageIds = Transform.getIds(packageCheckout, UserOrderRecordExtendDto.class, "productId");
|
|
|
+ // 绑定套餐
|
|
|
+ List<UserOrderRecordExtendDto> prPackage = records.stream().filter((row)-> row.getProductType().equals(ProductType.COURSE_PACKAGE.key)).collect(Collectors.toList());
|
|
|
+ Collection packageIds = Transform.getIds(prPackage, UserOrderRecordExtendDto.class, "productId");
|
|
|
List<CoursePackage> packageList = coursePackageService.select(packageIds);
|
|
|
- dto.setPackages(Transform.convert(packageList, CoursePackageExtendDto.class));
|
|
|
+ Transform.combine(prPackage, packageList, UserOrderRecordExtendDto.class, "productId", "coursePackage", CoursePackage.class, "id", CoursePackageExtendDto.class);
|
|
|
+
|
|
|
+ dto.setCheckouts(group(records));
|
|
|
|
|
|
// 发票
|
|
|
UserInvoice invoice = userInvoiceService.getByOrder(userId, order.getId());
|
|
|
dto.setHasInvoice(invoice != null);
|
|
|
- if (courseCheckout.size() > 0){
|
|
|
+ if (prCourse.size() > 0){
|
|
|
dto.setCanInvoice(true);
|
|
|
}
|
|
|
+
|
|
|
return dto;
|
|
|
}
|
|
|
}
|