Compare commits
5 Commits
6ab39d84f2
...
a9dd3986b7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9dd3986b7 | ||
|
|
e1cfa8e6bb | ||
|
|
b3346765e4 | ||
|
|
94c94dd1be | ||
|
|
9cd4f4e1f8 |
@ -14,7 +14,7 @@ public enum OrderSource {
|
||||
MALL("Mall",0.002),
|
||||
|
||||
/**
|
||||
* 一次性支付
|
||||
* 放心学
|
||||
*/
|
||||
EASY_LEARN("EasyLearn",0.002),
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ public class CpopGenerator {
|
||||
* 数据库 URL
|
||||
*/
|
||||
// private static final String URL = "jdbc:mysql://localhost:3306/cpop-dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
|
||||
private static final String URL = "jdbc:mysql://localhost:3306/cpop_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
|
||||
private static final String URL = "jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/cpop_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
|
||||
/**
|
||||
* 数据库用户名
|
||||
*/
|
||||
@ -34,23 +34,23 @@ public class CpopGenerator {
|
||||
/**
|
||||
* 数据库密码
|
||||
*/
|
||||
private static final String PASSWORD = "Admin@123";
|
||||
private static final String PASSWORD = "Customer0401";
|
||||
//private static final String PASSWORD = "Customer0401";
|
||||
|
||||
/**
|
||||
* 输出路径
|
||||
*/
|
||||
private static final String EXPORT_URL = "/Cpop-Jambox";
|
||||
private static final String EXPORT_URL = "/Cpop-Mall";
|
||||
|
||||
/**
|
||||
* 模块
|
||||
*/
|
||||
private static final String EXPORT_ITEM = "jambox";
|
||||
private static final String EXPORT_ITEM = "mall";
|
||||
|
||||
/**
|
||||
* 表前缀
|
||||
*/
|
||||
private static final String TABLE_PREFIX = "cp_j_";
|
||||
private static final String TABLE_PREFIX = "cp_mall_";
|
||||
|
||||
/**
|
||||
* 主入口
|
||||
|
||||
@ -65,7 +65,7 @@ public class EasyLearnUnionPayBo {
|
||||
* 订单类型
|
||||
*/
|
||||
@NotBlank(message = "联合支付类型不能为空")
|
||||
@ApiModelProperty(value = "联合支付类型(WX_PAY:微信支付;PREPAYMENT:预付;REPAYMENT:还款;MEMBER:会员)",required = true)
|
||||
@ApiModelProperty(value = "联合支付类型(WX_PAY:微信支付;PREPAYMENT:预付;REPAYMENT:还款;MEMBER:会员;GROUP_BOOKING:拼团)",required = true)
|
||||
private String easyLearnUnionPay;
|
||||
|
||||
/**
|
||||
|
||||
@ -116,6 +116,4 @@ public class WebsiteController {
|
||||
return websiteService.getDevelopmentCourse();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -46,6 +46,11 @@ public class EasyLearnOrderDetail extends BaseEntity implements Serializable {
|
||||
*/
|
||||
private String outOrderNo;
|
||||
|
||||
/**
|
||||
* 外部订单号
|
||||
*/
|
||||
private String transactionId;
|
||||
|
||||
/**
|
||||
* 期号
|
||||
*/
|
||||
|
||||
@ -615,7 +615,7 @@ public class EasyLearnOrderServiceImpl extends ServiceImpl<EasyLearnOrderMapper,
|
||||
.setBody("联合支付")
|
||||
.setOutTradeNo(easyLearnOrder.getId())
|
||||
//元转分
|
||||
.setTotalFee(easyLearnOrder.getTotalAmount().scaleByPowerOfTen(2).intValue())
|
||||
.setTotalFee(StringUtils.equals(SpringUtils.getActiveProfile(), "prod") ? easyLearnOrder.getTotalAmount().scaleByPowerOfTen(2).intValue() : 1)
|
||||
.setTradeType("JSAPI");
|
||||
return wxPayService.createOrder(orderRequest);
|
||||
}
|
||||
@ -667,7 +667,8 @@ public class EasyLearnOrderServiceImpl extends ServiceImpl<EasyLearnOrderMapper,
|
||||
//需要分账
|
||||
String subMchId = wxPayHandler.getSubMchId(easyLearnOrder.getBrandId(), easyLearnOrder.getStoreId());
|
||||
config.setSubMchId(subMchId);
|
||||
wxPayAsyncTask.asyncWxPayProfitSharing(orderId, notifyResult, wxPayService, OrderSource.EASY_LEARN, easyLearnOrder.getRate());
|
||||
wxPayAsyncTask.asyncWxPayProfitSharing(orderId, notifyResult, wxPayService,
|
||||
easyLearnOrder.getOrderType().equals(EasyLearnPayPayEnum.GROUP_BOOKING.getOrderType()) ? OrderSource.MALL : OrderSource.EASY_LEARN, easyLearnOrder.getRate());
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
EasyLearnPayPayEnum easyLearnPayPayEnum = EasyLearnPayPayEnum.getEasyLearnPayPayEnum(easyLearnOrder.getOrderType());
|
||||
|
||||
@ -43,7 +43,13 @@ public enum EasyLearnPayPayEnum {
|
||||
/**
|
||||
* 会员
|
||||
*/
|
||||
MEMBER("MEMBER",7);
|
||||
MEMBER("MEMBER",7),
|
||||
|
||||
/**
|
||||
* 拼团
|
||||
*/
|
||||
GROUP_BOOKING("GROUP_BOOKING",8);
|
||||
|
||||
|
||||
EasyLearnPayPayEnum(String name, Integer orderType) {
|
||||
this.orderType = orderType;
|
||||
|
||||
@ -56,9 +56,9 @@ mybatis-flex:
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
datasource:
|
||||
mall:
|
||||
url: jdbc:mysql://localhost:3306/cpop_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/cpop_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: root
|
||||
password: Admin@123
|
||||
password: Customer0401
|
||||
jambox:
|
||||
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/jambox_test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
|
||||
username: root
|
||||
|
||||
@ -56,14 +56,14 @@ public class CpopWxPayTests {
|
||||
amount.setRefund(refund)
|
||||
.setTotal(refund)
|
||||
.setCurrency("CNY");
|
||||
request.setTransactionId("4200002123202402194880609914")
|
||||
request.setTransactionId("4200002176202404245283534577")
|
||||
//.setOutTradeNo("1000000000202401121937112562856")
|
||||
//.setTransactionId(order.getOutOrderNo())
|
||||
//.setOutTradeNo(order.getId())
|
||||
.setNotifyUrl(wxPayProperties.getNotifyRefund())
|
||||
.setOutRefundNo(IdUtil.getSnowflakeNextIdStr())
|
||||
.setSubMchid("1618925571")
|
||||
.setReason("先学后付测试退款")
|
||||
.setSubMchid("1670749045")
|
||||
.setReason("拼团测试退款")
|
||||
.setAmount(amount);
|
||||
WxPayRefundV3Result result = wxPayService.refundV3(request);
|
||||
System.out.println(result);
|
||||
@ -136,8 +136,8 @@ public class CpopWxPayTests {
|
||||
@Test
|
||||
public void getOrderInfo() throws WxPayException {
|
||||
WxPayConfig config = wxPayService.getConfig();
|
||||
config.setSubMchId("1661323640");
|
||||
WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder("4200002096202401188599394121", null);
|
||||
config.setSubMchId("1670749045");
|
||||
WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder("4200002205202404240308986697", null);
|
||||
System.out.println(JSONObject.toJSONString(wxPayOrderQueryResult));
|
||||
}
|
||||
|
||||
@ -175,10 +175,10 @@ public class CpopWxPayTests {
|
||||
@Test
|
||||
public void profitSharingFinish() throws WxPayException {
|
||||
ProfitSharingUnfreezeRequest profitSharingFinishRequest = new ProfitSharingUnfreezeRequest();
|
||||
profitSharingFinishRequest.setTransactionId("4200002122202401129346519359");
|
||||
profitSharingFinishRequest.setOutOrderNo("1745820005743910912");
|
||||
profitSharingFinishRequest.setTransactionId("4200002205202404240308986697");
|
||||
profitSharingFinishRequest.setOutOrderNo("140678614679425024");
|
||||
profitSharingFinishRequest.setDescription("结束分账");
|
||||
profitSharingFinishRequest.setSubMchId("1661323640");
|
||||
profitSharingFinishRequest.setSubMchId("1670749045");
|
||||
wxPayService.getProfitSharingService().profitSharingFinish(profitSharingFinishRequest);
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,106 @@
|
||||
package com.cpop.mall.business.controller.backstage;
|
||||
|
||||
import com.cpop.core.base.R;
|
||||
import com.cpop.mall.business.entity.Activity;
|
||||
import com.cpop.mall.business.service.ActivityService;
|
||||
import com.cpop.mall.business.vo.ActivityPageVo;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商城活动 控制层。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "商城活动接口")
|
||||
@RequestMapping("/backstage/activity")
|
||||
public class BackstageActivityController {
|
||||
|
||||
@Autowired
|
||||
private ActivityService activityService;
|
||||
|
||||
/**
|
||||
* 分页查询商城活动。
|
||||
* @param brandId 品牌id
|
||||
* @param isUp 是否上架
|
||||
* @return 分页对象
|
||||
*/
|
||||
@GetMapping("/getActivityPage")
|
||||
@ApiOperation("分页查询商城活动")
|
||||
public R<Page<ActivityPageVo>> getActivityPage(@RequestParam(required = false) @ApiParam("品牌id") String brandId,
|
||||
@RequestParam(required = false) @ApiParam("品牌id") Boolean isUp) {
|
||||
Page<ActivityPageVo> page = activityService.getActivityPage(brandId, isUp);
|
||||
return R.ok(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加商城活动。
|
||||
*
|
||||
* @param activity 商城活动
|
||||
* @return {@code true} 添加成功,{@code false} 添加失败
|
||||
*/
|
||||
@PostMapping("/save")
|
||||
@ApiOperation("保存商城活动")
|
||||
public boolean save(@RequestBody @ApiParam("商城活动") Activity activity) {
|
||||
return activityService.save(activity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据主键删除商城活动。
|
||||
*
|
||||
* @param id 主键
|
||||
* @return {@code true} 删除成功,{@code false} 删除失败
|
||||
*/
|
||||
@DeleteMapping("/remove/{id}")
|
||||
@ApiOperation("根据主键商城活动")
|
||||
public boolean remove(@PathVariable @ApiParam("商城活动主键") Serializable id) {
|
||||
return activityService.removeById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据主键更新商城活动。
|
||||
*
|
||||
* @param activity 商城活动
|
||||
* @return {@code true} 更新成功,{@code false} 更新失败
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
@ApiOperation("根据主键更新商城活动")
|
||||
public boolean update(@RequestBody @ApiParam("商城活动主键") Activity activity) {
|
||||
return activityService.updateById(activity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有商城活动。
|
||||
*
|
||||
* @return 所有数据
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("查询所有商城活动")
|
||||
public List<Activity> list() {
|
||||
return activityService.list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据商城活动主键获取详细信息。
|
||||
*
|
||||
* @param id 商城活动主键
|
||||
* @return 商城活动详情
|
||||
*/
|
||||
@GetMapping("/getInfo/{id}")
|
||||
@ApiOperation("根据主键获取商城活动")
|
||||
public Activity getInfo(@PathVariable @ApiParam("商城活动主键") Serializable id) {
|
||||
return activityService.getById(id);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
package com.cpop.mall.business.controller.mini;
|
||||
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import com.cpop.mall.business.entity.Activity;
|
||||
import com.cpop.mall.business.service.ActivityService;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商城活动 控制层。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "商城活动接口")
|
||||
@RequestMapping("/mini/activity")
|
||||
public class MiniActivityController {
|
||||
|
||||
@Autowired
|
||||
private ActivityService activityService;
|
||||
|
||||
/**
|
||||
* 添加商城活动。
|
||||
*
|
||||
* @param activity 商城活动
|
||||
* @return {@code true} 添加成功,{@code false} 添加失败
|
||||
*/
|
||||
@PostMapping("/save")
|
||||
@ApiOperation("保存商城活动")
|
||||
public boolean save(@RequestBody @ApiParam("商城活动") Activity activity) {
|
||||
return activityService.save(activity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据主键删除商城活动。
|
||||
*
|
||||
* @param id 主键
|
||||
* @return {@code true} 删除成功,{@code false} 删除失败
|
||||
*/
|
||||
@DeleteMapping("/remove/{id}")
|
||||
@ApiOperation("根据主键商城活动")
|
||||
public boolean remove(@PathVariable @ApiParam("商城活动主键") Serializable id) {
|
||||
return activityService.removeById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据主键更新商城活动。
|
||||
*
|
||||
* @param activity 商城活动
|
||||
* @return {@code true} 更新成功,{@code false} 更新失败
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
@ApiOperation("根据主键更新商城活动")
|
||||
public boolean update(@RequestBody @ApiParam("商城活动主键") Activity activity) {
|
||||
return activityService.updateById(activity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有商城活动。
|
||||
*
|
||||
* @return 所有数据
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("查询所有商城活动")
|
||||
public List<Activity> list() {
|
||||
return activityService.list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据商城活动主键获取详细信息。
|
||||
*
|
||||
* @param id 商城活动主键
|
||||
* @return 商城活动详情
|
||||
*/
|
||||
@GetMapping("/getInfo/{id}")
|
||||
@ApiOperation("根据主键获取商城活动")
|
||||
public Activity getInfo(@PathVariable @ApiParam("商城活动主键") Serializable id) {
|
||||
return activityService.getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询商城活动。
|
||||
*
|
||||
* @param page 分页对象
|
||||
* @return 分页对象
|
||||
*/
|
||||
@GetMapping("/page")
|
||||
@ApiOperation("分页查询商城活动")
|
||||
public Page<Activity> page(@ApiParam("分页信息") Page<Activity> page) {
|
||||
return activityService.page(page);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,134 @@
|
||||
package com.cpop.mall.business.entity;
|
||||
|
||||
import com.cpop.core.base.entity.BaseEntity;
|
||||
import com.cpop.core.base.entity.BaseInsertListener;
|
||||
import com.cpop.core.base.entity.BaseUpdateListener;
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 商城活动 实体类。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@Table(value = "cp_mall_activity", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
|
||||
public class Activity extends BaseEntity implements Serializable {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@Id
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 品牌id
|
||||
*/
|
||||
private String brandId;
|
||||
|
||||
/**
|
||||
* 活动类型 1拼团,2秒杀
|
||||
*/
|
||||
private Integer activityType;
|
||||
|
||||
/**
|
||||
* 活动名称
|
||||
*/
|
||||
private String activityName;
|
||||
|
||||
/**
|
||||
* 颜色
|
||||
*/
|
||||
private String color;
|
||||
|
||||
/**
|
||||
* 活动头图
|
||||
*/
|
||||
private String headPic;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 活动详情图
|
||||
*/
|
||||
private String detailPic;
|
||||
|
||||
/**
|
||||
* 关联商品
|
||||
*/
|
||||
private String productList;
|
||||
|
||||
/**
|
||||
* 拼团人数
|
||||
*/
|
||||
private Integer groupNum;
|
||||
|
||||
/**
|
||||
* 单买价格
|
||||
*/
|
||||
private BigDecimal singlePrice;
|
||||
|
||||
/**
|
||||
* 拼团价格
|
||||
*/
|
||||
private BigDecimal groupPrice;
|
||||
|
||||
/**
|
||||
* 是否上架
|
||||
*/
|
||||
private Boolean isUp;
|
||||
|
||||
/**
|
||||
* 是否置顶
|
||||
*/
|
||||
private Boolean isTop;
|
||||
|
||||
/**
|
||||
* 秒杀开始时间
|
||||
*/
|
||||
private LocalDateTime secKillStartTime;
|
||||
|
||||
/**
|
||||
* 秒杀结束时间
|
||||
*/
|
||||
private LocalDateTime secKillEndTime;
|
||||
|
||||
/**
|
||||
* 活动开始时间
|
||||
*/
|
||||
private LocalDateTime activityStartTime;
|
||||
|
||||
/**
|
||||
* 活动结束时间
|
||||
*/
|
||||
private LocalDateTime activityEndTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 是否删除(0否1是)
|
||||
*/
|
||||
@Column(isLogicDelete = true)
|
||||
private Boolean isDelete;
|
||||
|
||||
}
|
||||
@ -0,0 +1,51 @@
|
||||
package com.cpop.mall.business.entity;
|
||||
|
||||
import com.cpop.core.base.entity.BaseEntity;
|
||||
import com.cpop.core.base.entity.BaseInsertListener;
|
||||
import com.cpop.core.base.entity.BaseUpdateListener;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 商城活动组 实体类。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@Table(value = "cp_mall_activity_group", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
|
||||
public class ActivityGroup extends BaseEntity implements Serializable {
|
||||
|
||||
/**
|
||||
* 活动组id
|
||||
*/
|
||||
@Id
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 活动组名
|
||||
*/
|
||||
private String activityGroupName;
|
||||
|
||||
/**
|
||||
* 活动id
|
||||
*/
|
||||
private String activityId;
|
||||
|
||||
/**
|
||||
* 商品id
|
||||
*/
|
||||
private String productId;
|
||||
|
||||
}
|
||||
@ -0,0 +1,42 @@
|
||||
package com.cpop.mall.business.entity;
|
||||
|
||||
import com.cpop.core.base.entity.BaseEntity;
|
||||
import com.cpop.core.base.entity.BaseInsertListener;
|
||||
import com.cpop.core.base.entity.BaseUpdateListener;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 拼团活动-校区 实体类。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@Table(value = "cp_mall_activity_store", onInsert = BaseInsertListener.class, onUpdate = BaseUpdateListener.class, mapperGenerateEnable = false)
|
||||
public class ActivityStore extends BaseEntity implements Serializable {
|
||||
|
||||
/**
|
||||
* 活动id
|
||||
*/
|
||||
@Id
|
||||
private String activityId;
|
||||
|
||||
/**
|
||||
* 校区id
|
||||
*/
|
||||
@Id
|
||||
private String storeId;
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.cpop.mall.business.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.cpop.mall.business.entity.ActivityGroup;
|
||||
|
||||
/**
|
||||
* 商城活动组 映射层。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
public interface ActivityGroupMapper extends BaseMapper<ActivityGroup> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.cpop.mall.business.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.cpop.mall.business.entity.Activity;
|
||||
|
||||
/**
|
||||
* 商城活动 映射层。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
public interface ActivityMapper extends BaseMapper<Activity> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.cpop.mall.business.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.cpop.mall.business.entity.ActivityStore;
|
||||
|
||||
/**
|
||||
* 拼团活动-校区 映射层。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-19
|
||||
*/
|
||||
public interface ActivityStoreMapper extends BaseMapper<ActivityStore> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.cpop.mall.business.service;
|
||||
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.cpop.mall.business.entity.ActivityGroup;
|
||||
|
||||
/**
|
||||
* 商城活动组 服务层。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
public interface ActivityGroupService extends IService<ActivityGroup> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
package com.cpop.mall.business.service;
|
||||
|
||||
import com.cpop.mall.business.vo.ActivityPageVo;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.cpop.mall.business.entity.Activity;
|
||||
|
||||
/**
|
||||
* 商城活动 服务层。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
public interface ActivityService extends IService<Activity> {
|
||||
|
||||
/**
|
||||
* 分页查询商城活动
|
||||
* @author DB
|
||||
* @since 2024/4/18
|
||||
* @param brandId 品牌id
|
||||
* @param isUp 是否上架
|
||||
* @return Page<ActivityPageVo>
|
||||
*/
|
||||
Page<ActivityPageVo> getActivityPage(String brandId, Boolean isUp);
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.cpop.mall.business.service;
|
||||
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.cpop.mall.business.entity.ActivityStore;
|
||||
|
||||
/**
|
||||
* 拼团活动-校区 服务层。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-19
|
||||
*/
|
||||
public interface ActivityStoreService extends IService<ActivityStore> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package com.cpop.mall.business.service.impl;
|
||||
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.cpop.mall.business.entity.ActivityGroup;
|
||||
import com.cpop.mall.business.mapper.ActivityGroupMapper;
|
||||
import com.cpop.mall.business.service.ActivityGroupService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 商城活动组 服务层实现。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
@Service("activityGroupService")
|
||||
public class ActivityGroupServiceImpl extends ServiceImpl<ActivityGroupMapper, ActivityGroup> implements ActivityGroupService {
|
||||
|
||||
}
|
||||
@ -0,0 +1,57 @@
|
||||
package com.cpop.mall.business.service.impl;
|
||||
|
||||
import com.cpop.core.base.entity.PageDomain;
|
||||
import com.cpop.core.utils.sql.SqlUtils;
|
||||
import com.cpop.mall.business.vo.ActivityPageVo;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.cpop.mall.business.entity.Activity;
|
||||
import com.cpop.mall.business.mapper.ActivityMapper;
|
||||
import com.cpop.mall.business.service.ActivityService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.cpop.mall.business.entity.table.ActivityTableDef.ACTIVITY;
|
||||
|
||||
/**
|
||||
* 商城活动 服务层实现。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-18
|
||||
*/
|
||||
@Service("activityService")
|
||||
public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> implements ActivityService {
|
||||
|
||||
/**
|
||||
* 分页查询商城活动
|
||||
* @author DB
|
||||
* @since 2024/4/18
|
||||
* @param brandId 品牌id
|
||||
* @param isUp 分页对象
|
||||
* @return Page<ActivityPageVo>
|
||||
*/
|
||||
@Override
|
||||
public Page<ActivityPageVo> getActivityPage(String brandId, Boolean isUp) {
|
||||
/*LambdaQueryWrapper<ActivityInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(brandId != null, ActivityInfo::getBrandId, brandId);
|
||||
queryWrapper.eq(ActivityInfo::getShelve, shelve);
|
||||
queryWrapper.eq(ActivityInfo::getDeleted, "1");
|
||||
queryWrapper.orderByDesc(ActivityInfo::getStick).orderByDesc(ActivityInfo::getLastModificationDate);
|
||||
IPage activityInfoPage = this.page(pageinfo, queryWrapper);
|
||||
|
||||
List<ActivityInfo> activityInfos= activityInfoPage.getRecords();
|
||||
for (ActivityInfo activityInfo : activityInfos) {
|
||||
List<ActivityStore> activityStores=activityStoreMapper.selectStoreName(activityInfo.getActivityId());
|
||||
activityInfo.setStoreList(activityStores);
|
||||
}*/
|
||||
|
||||
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
||||
return this.pageAs(Page.of(pageDomain.getPageNum(),pageDomain.getPageSize()), QueryWrapper.create()
|
||||
.where(ACTIVITY.BRAND_ID.eq(brandId))
|
||||
.and(ACTIVITY.IS_UP.eq(isUp))
|
||||
.orderBy(ACTIVITY.IS_TOP.desc(), ACTIVITY.UPDATE_TIME.desc())
|
||||
, ActivityPageVo.class);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package com.cpop.mall.business.service.impl;
|
||||
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.cpop.mall.business.entity.ActivityStore;
|
||||
import com.cpop.mall.business.mapper.ActivityStoreMapper;
|
||||
import com.cpop.mall.business.service.ActivityStoreService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 拼团活动-校区 服务层实现。
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024-04-19
|
||||
*/
|
||||
@Service("activityStoreService")
|
||||
public class ActivityStoreServiceImpl extends ServiceImpl<ActivityStoreMapper, ActivityStore> implements ActivityStoreService {
|
||||
|
||||
}
|
||||
@ -0,0 +1,152 @@
|
||||
package com.cpop.mall.business.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2024-04-18 18:02
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "拼团活动分页", description = "拼团活动分页")
|
||||
public class ActivityPageVo {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 活动类型 1拼团,2秒杀
|
||||
*/
|
||||
@ApiModelProperty(value = "活动类型 1拼团,2秒杀")
|
||||
private Integer activityType;
|
||||
|
||||
/**
|
||||
* 交易数量
|
||||
*/
|
||||
@ApiModelProperty(value = "交易数量")
|
||||
private Integer tradeNum;
|
||||
|
||||
/**
|
||||
* 交易金额
|
||||
*/
|
||||
@ApiModelProperty(value = "交易金额")
|
||||
private BigDecimal tradeAmount;
|
||||
|
||||
/**
|
||||
* 商品id
|
||||
*/
|
||||
@ApiModelProperty(value = "商品id")
|
||||
private String productId;
|
||||
|
||||
/**
|
||||
* 关联商品
|
||||
*/
|
||||
@ApiModelProperty(value = "关联商品")
|
||||
private String productName;
|
||||
|
||||
/**
|
||||
* 品牌id
|
||||
*/
|
||||
@ApiModelProperty(value = "品牌id")
|
||||
private String brandId;
|
||||
|
||||
/**
|
||||
* 品牌名
|
||||
*/
|
||||
@ApiModelProperty(value = "品牌名")
|
||||
private String brandName;
|
||||
|
||||
/**
|
||||
* 活动名称
|
||||
*/
|
||||
@ApiModelProperty(value = "活动名称")
|
||||
private String activityName;
|
||||
|
||||
/**
|
||||
* 颜色
|
||||
*/
|
||||
@ApiModelProperty(value = "颜色")
|
||||
private String color;
|
||||
|
||||
/**
|
||||
* 活动头图
|
||||
*/
|
||||
@ApiModelProperty(value = "活动头图")
|
||||
private String headPic;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
@ApiModelProperty(value = "描述")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 活动详情图
|
||||
*/
|
||||
@ApiModelProperty(value = "活动详情图")
|
||||
private String detailPic;
|
||||
|
||||
/**
|
||||
* 拼团人数
|
||||
*/
|
||||
@ApiModelProperty(value = "拼团人数")
|
||||
private Integer groupNum;
|
||||
|
||||
/**
|
||||
* 单买价格
|
||||
*/
|
||||
@ApiModelProperty(value = "单买价格")
|
||||
private BigDecimal singlePrice;
|
||||
|
||||
/**
|
||||
* 拼团价格
|
||||
*/
|
||||
@ApiModelProperty(value = "拼团价格")
|
||||
private BigDecimal groupPrice;
|
||||
|
||||
/**
|
||||
* 是否上架
|
||||
*/
|
||||
@ApiModelProperty(value = "是否上架")
|
||||
private Boolean isUp;
|
||||
|
||||
/**
|
||||
* 是否置顶
|
||||
*/
|
||||
@ApiModelProperty(value = "是否置顶")
|
||||
private Boolean isTop;
|
||||
|
||||
/**
|
||||
* 秒杀开始时间
|
||||
*/
|
||||
@ApiModelProperty(value = "秒杀开始时间")
|
||||
private LocalDateTime secKillStartTime;
|
||||
|
||||
/**
|
||||
* 秒杀结束时间
|
||||
*/
|
||||
@ApiModelProperty(value = "秒杀结束时间")
|
||||
private LocalDateTime secKillEndTime;
|
||||
|
||||
/**
|
||||
* 活动开始时间
|
||||
*/
|
||||
@ApiModelProperty(value = "活动开始时间")
|
||||
private LocalDateTime activityStartTime;
|
||||
|
||||
/**
|
||||
* 活动结束时间
|
||||
*/
|
||||
@ApiModelProperty(value = "活动结束时间")
|
||||
private LocalDateTime activityEndTime;
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.cpop.mall.business.mapper.ActivityGroupMapper">
|
||||
|
||||
</mapper>
|
||||
7
Cpop-Mall/src/main/resources/mapper/ActivityMapper.xml
Normal file
7
Cpop-Mall/src/main/resources/mapper/ActivityMapper.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.cpop.mall.business.mapper.ActivityMapper">
|
||||
|
||||
</mapper>
|
||||
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.cpop.mall.business.mapper.ActivityStoreMapper">
|
||||
|
||||
</mapper>
|
||||
@ -1,61 +0,0 @@
|
||||
[2024-01-22 15:21:23.553] INFO [background-preinit] Version.java:21 - HV000001: Hibernate Validator 6.2.5.Final
|
||||
[2024-01-22 15:21:23.563] INFO [main] StartupInfoLogger.java:55 - Starting CpopDataSyncTests using Java 1.8.0_231 on DESKTOP-PIJFD5O with PID 22368 (started by Lost in E:\Cpop\Cpop-Union\Cpop-Oam\Cpop-Oam-Web)
|
||||
[2024-01-22 15:21:23.564] INFO [main] SpringApplication.java:637 - The following 3 profiles are active: "prod", "core", "pay"
|
||||
[2024-01-22 15:21:24.940] INFO [main] RepositoryConfigurationDelegate.java:262 - Multiple Spring Data modules found, entering strict repository configuration mode
|
||||
[2024-01-22 15:21:24.945] INFO [main] RepositoryConfigurationDelegate.java:132 - Bootstrapping Spring Data Redis repositories in DEFAULT mode.
|
||||
[2024-01-22 15:21:24.967] INFO [main] RepositoryConfigurationDelegate.java:201 - Finished Spring Data repository scanning in 6 ms. Found 0 Redis repository interfaces.
|
||||
[2024-01-22 15:21:25.206] INFO [main] LogAccessor.java:292 - No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
|
||||
[2024-01-22 15:21:25.221] INFO [main] LogAccessor.java:292 - No bean named 'integrationHeaderChannelRegistry' has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created.
|
||||
[2024-01-22 15:21:25.688] INFO [main] PostProcessorRegistrationDelegate.java:376 - Bean 'com.mybatisflex.spring.boot.FlexTransactionAutoConfiguration' of type [com.mybatisflex.spring.boot.FlexTransactionAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
|
||||
[2024-01-22 15:21:25.997] INFO [main] PostProcessorRegistrationDelegate.java:376 - Bean 'mybatis-flex-com.mybatisflex.spring.boot.MybatisFlexProperties' of type [com.mybatisflex.spring.boot.MybatisFlexProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
|
||||
[2024-01-22 15:21:26.008] INFO [main] PostProcessorRegistrationDelegate.java:376 - Bean 'com.mybatisflex.spring.boot.MultiDataSourceAutoConfiguration' of type [com.mybatisflex.spring.boot.MultiDataSourceAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
|
||||
[2024-01-22 15:21:26.135] INFO [main] PostProcessorRegistrationDelegate.java:376 - Bean 'redisConfig' of type [com.cpop.core.config.RedisConfig$$EnhancerBySpringCGLIB$$979fa58a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
|
||||
[2024-01-22 15:21:27.184] INFO [main] TomcatWebServer.java:108 - Tomcat initialized with port(s): 0 (http)
|
||||
[2024-01-22 15:21:27.194] INFO [main] DirectJDKLog.java:173 - Initializing ProtocolHandler ["http-nio-auto-1"]
|
||||
[2024-01-22 15:21:27.197] INFO [main] DirectJDKLog.java:173 - Starting service [Tomcat]
|
||||
[2024-01-22 15:21:27.197] INFO [main] DirectJDKLog.java:173 - Starting Servlet engine: [Apache Tomcat/9.0.79]
|
||||
[2024-01-22 15:21:27.417] INFO [main] DirectJDKLog.java:173 - Initializing Spring embedded WebApplicationContext
|
||||
[2024-01-22 15:21:27.417] INFO [main] ServletWebServerApplicationContext.java:292 - Root WebApplicationContext: initialization completed in 3825 ms
|
||||
[2024-01-22 15:21:28.467] INFO [main] HikariDataSource.java:110 - HikariPool-1 - Starting...
|
||||
[2024-01-22 15:21:29.147] INFO [main] HikariDataSource.java:123 - HikariPool-1 - Start completed.
|
||||
[2024-01-22 15:21:32.104] INFO [main] StdSchedulerFactory.java:1220 - Using default implementation for ThreadExecutor
|
||||
[2024-01-22 15:21:32.106] INFO [main] SimpleThreadPool.java:268 - Job execution threads will use class loader of thread: main
|
||||
[2024-01-22 15:21:32.118] INFO [main] SchedulerSignalerImpl.java:61 - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
|
||||
[2024-01-22 15:21:32.119] INFO [main] QuartzScheduler.java:229 - Quartz Scheduler v.2.3.2 created.
|
||||
[2024-01-22 15:21:32.122] INFO [main] JobStoreSupport.java:672 - Using db table-based data access locking (synchronization).
|
||||
[2024-01-22 15:21:32.124] INFO [main] JobStoreCMT.java:145 - JobStoreCMT initialized.
|
||||
[2024-01-22 15:21:32.125] INFO [main] QuartzScheduler.java:294 - Scheduler meta-data: Quartz Scheduler (v2.3.2) 'CpopOamScheduler' with instanceId 'NON_CLUSTERED'
|
||||
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
|
||||
NOT STARTED.
|
||||
Currently in standby mode.
|
||||
Number of jobs executed: 0
|
||||
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads.
|
||||
Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
|
||||
|
||||
[2024-01-22 15:21:32.125] INFO [main] StdSchedulerFactory.java:1374 - Quartz scheduler 'CpopOamScheduler' initialized from an externally provided properties instance.
|
||||
[2024-01-22 15:21:32.126] INFO [main] StdSchedulerFactory.java:1378 - Quartz scheduler version: 2.3.2
|
||||
[2024-01-22 15:21:32.126] INFO [main] QuartzScheduler.java:2293 - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@1d5048d1
|
||||
[2024-01-22 15:21:32.798] INFO [main] InitConfig.java:41 - ===========================项目启动角色初始化===========================
|
||||
[2024-01-22 15:21:34.212] INFO [main] DefaultSecurityFilterChain.java:55 - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@4c3d72fd, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@259c6ab8, org.springframework.security.web.context.SecurityContextPersistenceFilter@39420d59, org.springframework.security.web.header.HeaderWriterFilter@3340ff7c, com.cpop.core.filter.JwtAuthenticationFilter@1488a861, org.springframework.security.web.authentication.logout.LogoutFilter@5bf1b528, com.cpop.core.filter.RepeatableFilter@22e813fc, com.cpop.core.gateway.sys.SysAuthenticationFilter@605eb072, com.cpop.core.gateway.miniProgram.MiniProgramAuthenticationFilter@1fa9692b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5dd227b7, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@14ba7f15, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@640a6d4b, org.springframework.security.web.session.SessionManagementFilter@5e198c40, org.springframework.security.web.access.ExceptionTranslationFilter@6cbb6c41, org.springframework.security.web.access.intercept.AuthorizationFilter@7ef7f414]
|
||||
[2024-01-22 15:21:35.868] INFO [main] LogAccessor.java:174 - Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
|
||||
[2024-01-22 15:21:35.868] INFO [main] LogAccessor.java:174 - Channel 'Cpop-Oam-Prod.errorChannel' has 1 subscriber(s).
|
||||
[2024-01-22 15:21:35.868] INFO [main] LogAccessor.java:292 - started bean '_org.springframework.integration.errorLogger'
|
||||
[2024-01-22 15:21:35.869] INFO [main] DirectJDKLog.java:173 - Starting ProtocolHandler ["http-nio-auto-1"]
|
||||
[2024-01-22 15:21:35.893] INFO [main] TomcatWebServer.java:220 - Tomcat started on port(s): 59855 (http) with context path '/Cpop-Oam'
|
||||
[2024-01-22 15:21:35.895] INFO [main] SchedulerFactoryBean.java:734 - Will start Quartz Scheduler [CpopOamScheduler] in 1 seconds
|
||||
[2024-01-22 15:21:35.912] INFO [main] StartupInfoLogger.java:61 - Started CpopDataSyncTests in 12.809 seconds (JVM running for 14.317)
|
||||
[2024-01-22 15:21:36.907] INFO [Quartz Scheduler [CpopOamScheduler]] SchedulerFactoryBean.java:750 - Starting Quartz Scheduler now, after delay of 1 seconds
|
||||
[2024-01-22 15:21:37.083] INFO [Quartz Scheduler [CpopOamScheduler]] JobStoreSupport.java:866 - Freed 0 triggers from 'acquired' / 'blocked' state.
|
||||
[2024-01-22 15:21:37.154] INFO [Quartz Scheduler [CpopOamScheduler]] JobStoreSupport.java:876 - Recovering 0 jobs that were in-progress at the time of the last shut-down.
|
||||
[2024-01-22 15:21:37.154] INFO [Quartz Scheduler [CpopOamScheduler]] JobStoreSupport.java:889 - Recovery complete.
|
||||
[2024-01-22 15:21:37.188] INFO [Quartz Scheduler [CpopOamScheduler]] JobStoreSupport.java:896 - Removed 0 'complete' triggers.
|
||||
[2024-01-22 15:21:37.224] INFO [Quartz Scheduler [CpopOamScheduler]] JobStoreSupport.java:901 - Removed 0 stale fired job entries.
|
||||
[2024-01-22 15:21:37.294] INFO [Quartz Scheduler [CpopOamScheduler]] QuartzScheduler.java:547 - Scheduler CpopOamScheduler_$_NON_CLUSTERED started.
|
||||
[2024-01-22 15:23:22.877] INFO [SpringApplicationShutdownHook] QuartzScheduler.java:585 - Scheduler CpopOamScheduler_$_NON_CLUSTERED paused.
|
||||
[2024-01-22 15:23:23.203] INFO [SpringApplicationShutdownHook] LogAccessor.java:174 - Removing {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
|
||||
[2024-01-22 15:23:23.203] INFO [SpringApplicationShutdownHook] LogAccessor.java:174 - Channel 'Cpop-Oam-Prod.errorChannel' has 0 subscriber(s).
|
||||
[2024-01-22 15:23:23.203] INFO [SpringApplicationShutdownHook] LogAccessor.java:292 - stopped bean '_org.springframework.integration.errorLogger'
|
||||
[2024-01-22 15:23:23.209] INFO [SpringApplicationShutdownHook] SchedulerFactoryBean.java:847 - Shutting down Quartz Scheduler
|
||||
[2024-01-22 15:23:23.210] INFO [SpringApplicationShutdownHook] QuartzScheduler.java:666 - Scheduler CpopOamScheduler_$_NON_CLUSTERED shutting down.
|
||||
[2024-01-22 15:23:23.210] INFO [SpringApplicationShutdownHook] QuartzScheduler.java:585 - Scheduler CpopOamScheduler_$_NON_CLUSTERED paused.
|
||||
[2024-01-22 15:23:23.210] INFO [SpringApplicationShutdownHook] QuartzScheduler.java:740 - Scheduler CpopOamScheduler_$_NON_CLUSTERED shutdown complete.
|
||||
@ -58,9 +58,9 @@ mybatis-flex:
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
datasource:
|
||||
oam:
|
||||
url: jdbc:mysql://localhost:3306/cpop_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/cpop_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: root
|
||||
password: Admin@123
|
||||
password: Customer0401
|
||||
jambox:
|
||||
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/jambox_test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
|
||||
username: root
|
||||
|
||||
@ -61,7 +61,7 @@ mybatis-flex:
|
||||
username: root
|
||||
password: Customer0401
|
||||
jambox:
|
||||
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/jambox_association?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
|
||||
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/jambox_association?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: root
|
||||
password: Customer0401
|
||||
|
||||
|
||||
@ -4,7 +4,13 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cpop.api.cloudDb.core.constant.CloudDbUrl;
|
||||
import com.cpop.core.utils.SpringUtils;
|
||||
import com.cpop.jambox.business.entity.BrandExtend;
|
||||
import com.cpop.jambox.business.entity.StoreExtend;
|
||||
import com.cpop.jambox.business.service.BrandExtendService;
|
||||
import com.cpop.jambox.business.service.StoreExtendService;
|
||||
import com.cpop.pay.framewok.handler.wxPay.WxPayHandler;
|
||||
import com.cpop.system.business.entity.Store;
|
||||
import com.cpop.system.business.service.StoreService;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
|
||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||
import com.github.binarywang.wxpay.service.WxPayService;
|
||||
@ -20,6 +26,9 @@ import org.springframework.web.client.RestTemplate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.cpop.jambox.business.entity.table.BrandExtendTableDef.BRAND_EXTEND;
|
||||
import static com.cpop.jambox.business.entity.table.StoreExtendTableDef.STORE_EXTEND;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
@ -51,7 +60,7 @@ public class CpopEasyLearnDataAnalyseTest{
|
||||
.select("out_order_no")
|
||||
.select("create_time")
|
||||
.from("j_wx_pay_profit_sharing")
|
||||
.where("create_time >= ?", "2024-04-08 19:00:00")
|
||||
.where("create_time >= ?", "2024-04-16 00:00:00")
|
||||
//.between("create_time", "2023-04-23 00:00:00","2023-11-13 22:00:00")
|
||||
.list();
|
||||
List<Row> insertList = new ArrayList<>();
|
||||
@ -90,4 +99,31 @@ public class CpopEasyLearnDataAnalyseTest{
|
||||
DataSourceKey.clear();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子商户
|
||||
*
|
||||
* @author DB
|
||||
* @since 2024/05/27
|
||||
*/
|
||||
@Test
|
||||
public void getSubMchId() {
|
||||
//获取校区
|
||||
StoreExtend storeExtend = SpringUtils.getBean(StoreExtendService.class).queryChain().where(STORE_EXTEND.STORE_CLOUD_ID.eq("9e70c665649a9da70345cbe523284250")).one();
|
||||
//获取品牌
|
||||
BrandExtend brandExtend;
|
||||
String brandId = null;
|
||||
String storeId = null;
|
||||
if (storeExtend == null) {
|
||||
brandExtend = SpringUtils.getBean(BrandExtendService.class).queryChain().where(BRAND_EXTEND.BRAND_CLOUD_ID.eq("9e70c665649a9da70345cbe523284250")).one();
|
||||
brandId = brandExtend.getBrandId();
|
||||
} else {
|
||||
//获取品牌
|
||||
Store store = SpringUtils.getBean(StoreService.class).getById(storeExtend.getStoreId());
|
||||
brandId = store.getBrandId();
|
||||
storeId = storeExtend.getStoreId();
|
||||
}
|
||||
String subMchId = wxPayHandler.getSubMchId(brandId, storeId);
|
||||
System.out.println(subMchId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@ import com.cpop.jambox.business.service.StoreExtendService;
|
||||
import com.cpop.jambox.framework.constant.JamboxCloudUrl;
|
||||
import com.cpop.pay.framewok.config.wxPay.WxPayProperties;
|
||||
import com.cpop.pay.framewok.handler.wxPay.WxPayHandler;
|
||||
import com.cpop.pay.framewok.handler.wxPay.WxPayNormalHandler;
|
||||
import com.github.binarywang.wxpay.bean.payscore.*;
|
||||
import com.github.binarywang.wxpay.bean.profitsharing.request.ProfitSharingBillV3Request;
|
||||
import com.github.binarywang.wxpay.bean.profitsharing.request.ProfitSharingReceiverRequest;
|
||||
@ -328,8 +329,8 @@ public class CpopEasyLearnTest {
|
||||
|
||||
@Test
|
||||
public void queryOrder() throws WxPayException {
|
||||
WxPayService wxPayService = wxPayHandler.getWxPayService(null, "1666928264");
|
||||
WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder("4200002130202402224927801847",null);
|
||||
WxPayService wxPayService = wxPayHandler.getWxPayService(null, wxPayHandler.getSubMchId("97561677443530752", "97571696801128452"));
|
||||
WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder("4200002186202405135556568382",null);
|
||||
System.out.println(JSONObject.toJSONString(wxPayOrderQueryResult));
|
||||
|
||||
}
|
||||
|
||||
@ -6,7 +6,9 @@ import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.core.base.enums.OrderSource;
|
||||
import com.cpop.core.utils.SpringUtils;
|
||||
import com.cpop.jambox.business.entity.*;
|
||||
import com.cpop.jambox.business.mapper.EasyLearnOrderDetailMapper;
|
||||
import com.cpop.jambox.business.service.*;
|
||||
import com.cpop.jambox.framework.constant.JamboxCloudUrl;
|
||||
import com.cpop.pay.framewok.handler.wxPay.WxPayHandler;
|
||||
import com.cpop.system.business.entity.Store;
|
||||
import com.cpop.system.business.entity.WxPayScore;
|
||||
@ -16,22 +18,27 @@ import com.cpop.system.business.service.WxPayScoreDetailService;
|
||||
import com.cpop.system.business.service.WxPayScoreService;
|
||||
import com.github.binarywang.wxpay.bean.payscore.PartnerUserSignPlanEntity;
|
||||
import com.github.binarywang.wxpay.bean.payscore.PayScorePlanDetailResult;
|
||||
import com.github.binarywang.wxpay.bean.payscore.WxPartnerPayScoreResult;
|
||||
import com.github.binarywang.wxpay.bean.payscore.WxPartnerPayScoreSignPlanResult;
|
||||
import com.github.binarywang.wxpay.bean.profitsharing.result.ProfitSharingV3Result;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayPartnerOrderQueryV3Request;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayPartnerOrderQueryV3Result;
|
||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||
import com.github.binarywang.wxpay.service.PartnerPayScoreService;
|
||||
import com.github.binarywang.wxpay.service.WxPayService;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.core.datasource.DataSourceKey;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.core.row.*;
|
||||
import com.mybatisflex.core.update.UpdateChain;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
@ -42,6 +49,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.cpop.jambox.business.entity.table.EasyLearnOrderDetailTableDef.EASY_LEARN_ORDER_DETAIL;
|
||||
import static com.cpop.jambox.business.entity.table.EasyLearnOrderExtendTableDef.EASY_LEARN_ORDER_EXTEND;
|
||||
import static com.cpop.jambox.business.entity.table.EasyLearnOrderTableDef.EASY_LEARN_ORDER;
|
||||
import static com.cpop.jambox.business.entity.table.StoreExtendTableDef.STORE_EXTEND;
|
||||
@ -110,7 +118,8 @@ public class CpopOldDataSyncTests {
|
||||
.select("merchant_plan_no")
|
||||
.select("sub_merch_id as subMchId")
|
||||
.from("j_wechat_pay_plan")
|
||||
.where("is_month = 0")
|
||||
.where("create_time > '2024-05-08 11:25:30'")
|
||||
//.where("is_month = 0")
|
||||
.list();
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
@ -175,7 +184,8 @@ public class CpopOldDataSyncTests {
|
||||
.and("jct.pay_status = 'PAY'")
|
||||
.and("jct.deleted = 1")
|
||||
.and("jct.card_no is not null")
|
||||
.and("jct.creation_time >= ?", LocalDateTime.of(2024, 1, 12, 16, 42))
|
||||
.and("jct.creation_time > '2024-05-08 11:25:30'")
|
||||
//.and("jct.creation_time >= ?", LocalDateTime.of(2024, 1, 12, 16, 42))
|
||||
.list();
|
||||
} finally {
|
||||
DataSourceKey.clear();
|
||||
@ -198,6 +208,7 @@ public class CpopOldDataSyncTests {
|
||||
try {
|
||||
PartnerUserSignPlanEntity partnerUserSignPlanEntity = wxPayService.getPartnerPayScoreSignPlanService()
|
||||
.queryUserSignPlans(item.getString("orderId"), item.getString("subMchId"));
|
||||
if (partnerUserSignPlanEntity != null){
|
||||
EasyLearnOrder easyLearnOrder = new EasyLearnOrder();
|
||||
String storeCloudId = item.getString("storeCloudId");
|
||||
Integer extendStatus = changeStatus(partnerUserSignPlanEntity.getSignState());
|
||||
@ -255,13 +266,62 @@ public class CpopOldDataSyncTests {
|
||||
easyLearnOrderExtend.setCancelTime(LocalDateTime.parse(partnerUserSignPlanEntity.getCancelSignTime(),dateTimeFormatter));
|
||||
}
|
||||
easyLearnOrderExtends.add(easyLearnOrderExtend);
|
||||
}
|
||||
} catch (WxPayException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
SpringUtils.getBean(EasyLearnOrderService.class).saveBatch(easyLearnOrders);
|
||||
SpringUtils.getBean(EasyLearnOrderExtendService.class).saveBatch(easyLearnOrderExtends);
|
||||
SpringUtils.getBean(EasyLearnOrderDetailService.class).saveBatch(easyLearnOrderDetails);
|
||||
//去重
|
||||
SpringUtils.getBean(EasyLearnOrderService.class).saveBatch(easyLearnOrders.stream().distinct().collect(Collectors.toList()));
|
||||
SpringUtils.getBean(EasyLearnOrderExtendService.class).saveBatch(easyLearnOrderExtends.stream().distinct().collect(Collectors.toList()));
|
||||
SpringUtils.getBean(EasyLearnOrderDetailService.class).saveBatch(easyLearnOrderDetails.stream().distinct().collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新支付分支付时间
|
||||
* @author DB
|
||||
* @since 2024/5/13
|
||||
*/
|
||||
@Test
|
||||
public void updatePayScoreDetailData() throws WxPayException {
|
||||
//查询云函数
|
||||
JSONObject jsonBody = new JSONObject();
|
||||
jsonBody.put("_type", "merchantPayPlanList");
|
||||
//订单id
|
||||
jsonBody.put("startTime", "2024-05-08 11:25:30");
|
||||
//获取课卡信息
|
||||
JSONObject result = SpringUtils.getBean(RestTemplate.class).postForObject(JamboxCloudUrl.COMMON_CARD_URL, jsonBody, JSONObject.class);
|
||||
assert result != null;
|
||||
JSONArray data = result.getJSONArray("data");
|
||||
List<Row> list = DbChain.table(EASY_LEARN_ORDER_DETAIL)
|
||||
.select(EASY_LEARN_ORDER_DETAIL.ID, EASY_LEARN_ORDER_EXTEND.SUB_MCH_ID)
|
||||
.from(EASY_LEARN_ORDER_DETAIL)
|
||||
.leftJoin(EASY_LEARN_ORDER_EXTEND).on(EASY_LEARN_ORDER_EXTEND.ORDER_ID.eq(EASY_LEARN_ORDER_DETAIL.ORDER_ID))
|
||||
.where(EASY_LEARN_ORDER_DETAIL.ID.in(data))
|
||||
.list();
|
||||
WxPayService wxPayService = wxPayHandler.getWxPayService();
|
||||
PartnerPayScoreService partnerPayScoreService = wxPayService.getPartnerPayScoreService();
|
||||
list.forEach(item -> {
|
||||
WxPartnerPayScoreResult wxPartnerPayScoreResult = null;
|
||||
try {
|
||||
wxPartnerPayScoreResult = partnerPayScoreService.queryServiceOrder(null, item.getString("subMchId"), item.getString("id"), null);
|
||||
item.put("transactionId", wxPartnerPayScoreResult.getCollection().getDetails().get(0).getTransactionId());
|
||||
item.put("outOrderNo", wxPartnerPayScoreResult.getOrderId());
|
||||
item.put("payTime", LocalDateTime.parse(wxPartnerPayScoreResult.getCollection().getDetails().get(0).getPaidTime(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
|
||||
item.put("actualPrice", BigDecimal.valueOf(Long.valueOf(wxPartnerPayScoreResult.getCollection().getDetails().get(0).getAmount())).divide(new BigDecimal(100)));
|
||||
} catch (WxPayException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
Db.executeBatch(list, EasyLearnOrderDetailMapper.class, (mapper, item) -> {
|
||||
UpdateChain.of(mapper)
|
||||
.set(EASY_LEARN_ORDER_DETAIL.TRANSACTION_ID, item.getString("transactionId"))
|
||||
.set(EASY_LEARN_ORDER_DETAIL.PAY_TIME, item.getLocalDateTime("payTime"))
|
||||
.set(EASY_LEARN_ORDER_DETAIL.OUT_ORDER_NO, item.getString("outOrderNo"))
|
||||
.set(EASY_LEARN_ORDER_DETAIL.ACTUAL_PRICE, item.getBigDecimal("actualPrice"))
|
||||
.where(EASY_LEARN_ORDER_DETAIL.ID.eq(item.getString("id")))
|
||||
.update();
|
||||
});
|
||||
}
|
||||
|
||||
private Integer changeStatus(String signStatus) {
|
||||
|
||||
@ -0,0 +1,35 @@
|
||||
package com.cpop.oam.business.bo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2024-05-29 11:18
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "续费订单请求对象")
|
||||
public class RenewOrderBo {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@NotBlank(message = "id不能为空")
|
||||
@ApiModelProperty(value = "id",required = true)
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 价格
|
||||
*/
|
||||
@NotNull(message = "价格不能为空")
|
||||
@ApiModelProperty(value = "价格",required = true)
|
||||
private BigDecimal price;
|
||||
}
|
||||
@ -0,0 +1,95 @@
|
||||
package com.cpop.oam.business.controller.backstage;
|
||||
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.core.base.R;
|
||||
import com.cpop.core.base.entity.PageDomain;
|
||||
import com.cpop.core.utils.sql.SqlUtils;
|
||||
import com.cpop.oam.business.bo.RenewOrderBo;
|
||||
import com.cpop.oam.business.vo.BrandManagePageVo;
|
||||
import com.cpop.oam.business.vo.RenewOrderPageVo;
|
||||
import com.cpop.system.business.vo.BrandListVo;
|
||||
import com.mybatisflex.core.datasource.DataSourceKey;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.row.DbChain;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2024-05-29 10:19
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "订单接口")
|
||||
@RequestMapping("/backstage/order")
|
||||
public class BackstageOrderController {
|
||||
|
||||
|
||||
/**
|
||||
* 获取续订订单分页
|
||||
*
|
||||
* @param storeName 校区名
|
||||
* @return {@link R }<{@link Page }<{@link BrandManagePageVo }>>
|
||||
* @author DB
|
||||
* @since 2024/05/29
|
||||
*/
|
||||
@ApiOperation("获取续订订单分页")
|
||||
@GetMapping("/getRenewOrderPage")
|
||||
@PreAuthorize("@aps.hasPermission('order:storeRenew:list')")
|
||||
public R<Page<RenewOrderPageVo>> getRenewOrderPage(@RequestParam(value = "storeName", required = false) String storeId) {
|
||||
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
||||
Page<RenewOrderPageVo> page = DataSourceKey.use("jambox", () -> {
|
||||
if (StringUtils.isNotBlank(storeId)) {
|
||||
return DbChain.table("t_signContract_ticket")
|
||||
.select("tst.ticket_id as id", "tst.store_list as storeList", "tst.price as price", "if(tst.pay_status='PAY','已支付','待支付') as payStatus",
|
||||
"tst.creation_time as createTime")
|
||||
.select("(select tmi.mechanism from t_mechanism_info tmi where tmi.store_id = tst.store_list) as storeName")
|
||||
.from("t_signContract_ticket").as("tst")
|
||||
.where("pay_status = 'UNPAY'")
|
||||
.and("store_list = ?", storeId)
|
||||
.and("deleted = 1")
|
||||
.orderBy("creation_time desc")
|
||||
.pageAs(Page.of(pageDomain.getPageNum(), pageDomain.getPageSize()), RenewOrderPageVo.class);
|
||||
} else {
|
||||
return DbChain.table("t_signContract_ticket")
|
||||
.select("tst.ticket_id as id", "tst.store_list as storeList", "tst.price as price", "if(tst.pay_status='PAY','已支付','待支付') as payStatus",
|
||||
"tst.creation_time as createTime")
|
||||
.select("(select tmi.mechanism from t_mechanism_info tmi where tmi.store_id = tst.store_list) as storeName")
|
||||
.from("t_signContract_ticket").as("tst")
|
||||
.where("pay_status = 'UNPAY'")
|
||||
.and("deleted = 1")
|
||||
.orderBy("creation_time desc")
|
||||
.pageAs(Page.of(pageDomain.getPageNum(), pageDomain.getPageSize()), RenewOrderPageVo.class);
|
||||
}
|
||||
});
|
||||
return R.ok(page);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新续订订单
|
||||
*
|
||||
* @param query 查询
|
||||
* @return {@link R }<{@link List }<{@link BrandListVo }>>
|
||||
* @author DB
|
||||
* @since 2024/05/29
|
||||
*/
|
||||
@ApiOperation("更新续订订单")
|
||||
@PutMapping("/updateRenewOrder")
|
||||
public R<List<BrandListVo>> updateRenewOrder(@RequestBody @Validated RenewOrderBo bo) {
|
||||
DataSourceKey.use("jambox", () -> {
|
||||
DbChain.table("t_signContract_ticket")
|
||||
.set("price", bo.getPrice())
|
||||
.set("last_modification_date", LocalDateTime.now())
|
||||
.where("ticket_id = ?", bo.getId())
|
||||
.update();
|
||||
});
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
@ -6,17 +6,22 @@ import com.alibaba.excel.EasyExcel;
|
||||
import com.cpop.api.tencent.wxWork.handler.WebHookSendHandler;
|
||||
import com.cpop.common.utils.bean.BeanUtils;
|
||||
import com.cpop.core.base.R;
|
||||
import com.cpop.core.base.entity.PageDomain;
|
||||
import com.cpop.core.base.exception.ServiceException;
|
||||
import com.cpop.core.handler.TencentCosHandler;
|
||||
import com.cpop.core.utils.SpringUtils;
|
||||
import com.cpop.core.utils.file.FileUtils;
|
||||
import com.cpop.core.utils.sql.SqlUtils;
|
||||
import com.cpop.oam.business.bo.SummitApplyBo;
|
||||
import com.cpop.oam.business.dto.SummitApplyDto;
|
||||
import com.cpop.oam.business.entity.SummitApply;
|
||||
import com.cpop.oam.business.entity.SummitApplyUser;
|
||||
import com.cpop.oam.business.service.SummitApplyService;
|
||||
import com.cpop.oam.business.service.SummitApplyUserService;
|
||||
import com.cpop.oam.business.vo.SummitApplyPageVo;
|
||||
import com.cpop.oam.framework.constant.WebHookKeyConstant;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryChain;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.qcloud.cos.model.UploadResult;
|
||||
import io.swagger.annotations.Api;
|
||||
@ -38,6 +43,7 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.cpop.oam.business.entity.table.SummitApplyTableDef.SUMMIT_APPLY;
|
||||
import static com.cpop.oam.business.entity.table.SummitApplyUserTableDef.SUMMIT_APPLY_USER;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
@ -99,31 +105,54 @@ public class MiniSummitController {
|
||||
@ApiOperation("峰会报名")
|
||||
@PostMapping("/summitApply")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Deprecated
|
||||
public R<String> summitApply(@RequestBody @Validated SummitApplyBo bo) {
|
||||
long count = summitApplyService.count(QueryWrapper.create().where(SUMMIT_APPLY.OPEN_ID.eq(bo.getOpenId())));
|
||||
if (count > 0) {
|
||||
throw new ServiceException("您已报名,请勿重复提交!");
|
||||
// long count = summitApplyService.count(QueryWrapper.create().where(SUMMIT_APPLY.OPEN_ID.eq(bo.getOpenId())));
|
||||
// if (count > 0) {
|
||||
// throw new ServiceException("您已报名,请勿重复提交!");
|
||||
// }
|
||||
// SummitApply summitApply = BeanUtils.mapToClass(bo, SummitApply.class);
|
||||
// summitApplyService.save(summitApply);
|
||||
// List<SummitApplyUser> summitApplyUsers = BeanUtils.mapToList(bo.getUsers(), SummitApplyUser.class);
|
||||
// summitApplyUsers.forEach(item->{
|
||||
// item.setSummitApplyId(summitApply.getId());
|
||||
// });
|
||||
// summitApplyUserService.saveBatch(summitApplyUsers);
|
||||
// // 企微通知值班人员
|
||||
// List<String> phoneList = new ArrayList<String>();
|
||||
// try {
|
||||
// SpringUtils.getBean(WebHookSendHandler.class)
|
||||
// .webHookSendText(WebHookKeyConstant.MARKET_BOT,
|
||||
// phoneList,
|
||||
// "==========2024峰会报名==========\n" +
|
||||
// "机构" + bo.getStoreName() + "报名成功",
|
||||
// true);
|
||||
// } catch (IOException e) {
|
||||
// throw new ServiceException("发送消息通知失败!");
|
||||
// }
|
||||
// return R.ok();
|
||||
return R.fail("峰会报名已关闭");
|
||||
}
|
||||
SummitApply summitApply = BeanUtils.mapToClass(bo, SummitApply.class);
|
||||
summitApplyService.save(summitApply);
|
||||
List<SummitApplyUser> summitApplyUsers = BeanUtils.mapToList(bo.getUsers(), SummitApplyUser.class);
|
||||
summitApplyUsers.forEach(item->{
|
||||
item.setSummitApplyId(summitApply.getId());
|
||||
});
|
||||
summitApplyUserService.saveBatch(summitApplyUsers);
|
||||
// 企微通知值班人员
|
||||
List<String> phoneList = new ArrayList<String>();
|
||||
try {
|
||||
SpringUtils.getBean(WebHookSendHandler.class)
|
||||
.webHookSendText(WebHookKeyConstant.MARKET_BOT,
|
||||
phoneList,
|
||||
"==========2024峰会报名==========\n" +
|
||||
"机构" + bo.getStoreName() + "报名成功",
|
||||
true);
|
||||
} catch (IOException e) {
|
||||
throw new ServiceException("发送消息通知失败!");
|
||||
}
|
||||
return R.ok();
|
||||
|
||||
/**
|
||||
* 获取峰会申请分页
|
||||
* @author DB
|
||||
* @since 2024/4/10
|
||||
*/
|
||||
@ApiOperation(value = "获取峰会申请分页")
|
||||
@GetMapping("/getSummitApplyPage")
|
||||
public R<Page<SummitApplyPageVo>> getSummitApplyPage() {
|
||||
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
|
||||
Page<SummitApplyPageVo> page = summitApplyService.getMapper().paginateAs(Page.of(pageDomain.getPageNum(), pageDomain.getPageSize()), QueryWrapper.create()
|
||||
.select(SUMMIT_APPLY.STORE_NAME,SUMMIT_APPLY.BOARD_NAME,SUMMIT_APPLY.IS_MEMBER,SUMMIT_APPLY.JOIN_NUM,SUMMIT_APPLY.ROOM_NUM,SUMMIT_APPLY.NEED_ROOM,
|
||||
SUMMIT_APPLY.JOIN_PARTY,SUMMIT_APPLY.JOIN_MEETING,SUMMIT_APPLY.ID)
|
||||
, SummitApplyPageVo.class,
|
||||
item -> item.field(SummitApplyPageVo::getUsers).queryWrapper(users -> QueryChain.create()
|
||||
.select(SUMMIT_APPLY_USER.NAME, SUMMIT_APPLY_USER.PHONE)
|
||||
.from(SUMMIT_APPLY_USER)
|
||||
.where(SUMMIT_APPLY_USER.SUMMIT_APPLY_ID.eq(users.getId())))
|
||||
);
|
||||
return R.ok(page);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -0,0 +1,58 @@
|
||||
package com.cpop.oam.business.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2024-05-29 10:22
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "续费订单返回对象")
|
||||
public class RenewOrderPageVo {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@ApiModelProperty("id")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 校区列表
|
||||
*/
|
||||
@ApiModelProperty("校区列表")
|
||||
private String storeList;
|
||||
|
||||
/**
|
||||
* 价格
|
||||
*/
|
||||
@ApiModelProperty("价格")
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
* 支付状态
|
||||
*/
|
||||
@ApiModelProperty("支付状态")
|
||||
private String payStatus;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 校区名
|
||||
*/
|
||||
@ApiModelProperty("校区名")
|
||||
private String storeName;
|
||||
}
|
||||
@ -0,0 +1,95 @@
|
||||
package com.cpop.oam.business.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
* @version 1.0.0
|
||||
* @since 2024-04-18 14:29
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "峰会提交申请分页")
|
||||
public class SummitApplyPageVo {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@ApiModelProperty("主键")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 机构名称
|
||||
*/
|
||||
@ApiModelProperty("机构名称")
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 牌匾号
|
||||
*/
|
||||
@ApiModelProperty("牌匾号")
|
||||
private String boardName;
|
||||
|
||||
/**
|
||||
* 是否是会员
|
||||
*/
|
||||
@ApiModelProperty("是否是会员")
|
||||
private String isMember;
|
||||
|
||||
/**
|
||||
* 参会人数
|
||||
*/
|
||||
@ApiModelProperty("参会人数")
|
||||
private Integer joinNum;
|
||||
|
||||
/**
|
||||
* 房间数
|
||||
*/
|
||||
@ApiModelProperty("房间数")
|
||||
private Integer roomNum;
|
||||
|
||||
/**
|
||||
* 需要房间
|
||||
*/
|
||||
@ApiModelProperty("需要房间")
|
||||
private String needRoom;
|
||||
|
||||
/**
|
||||
* 参加晚宴
|
||||
*/
|
||||
@ApiModelProperty("参加晚宴")
|
||||
private String joinParty;
|
||||
|
||||
/**
|
||||
* 参加交流会
|
||||
*/
|
||||
@ApiModelProperty("参加交流会")
|
||||
private String joinMeeting;
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
*/
|
||||
@ApiModelProperty("用户信息")
|
||||
private List<User> users;
|
||||
|
||||
@Data
|
||||
public static class User {
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
@ApiModelProperty("姓名")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
@ApiModelProperty("手机号")
|
||||
private String phone;
|
||||
}
|
||||
|
||||
}
|
||||
@ -5,19 +5,20 @@ import com.cpop.common.utils.ServletUtils;
|
||||
import com.cpop.common.utils.StringUtils;
|
||||
import com.cpop.core.base.exception.ServiceException;
|
||||
import com.cpop.core.utils.SecurityUtils;
|
||||
import com.cpop.core.utils.SpringUtils;
|
||||
import com.cpop.pay.framewok.config.wxPay.WxPayConfiguration;
|
||||
import com.github.binarywang.wxpay.bean.ecommerce.SignatureHeader;
|
||||
import com.github.binarywang.wxpay.config.WxPayConfig;
|
||||
import com.github.binarywang.wxpay.service.WxPayService;
|
||||
import com.mybatisflex.core.datasource.DataSourceKey;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.core.row.Db;
|
||||
import com.mybatisflex.core.row.DbChain;
|
||||
import com.mybatisflex.core.row.Row;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
/**
|
||||
* @author DB
|
||||
@ -111,31 +112,56 @@ public class WxPayHandler {
|
||||
* @return String
|
||||
*/
|
||||
public String getSubMchId(String brandId, String storeId) {
|
||||
String wxMchId;
|
||||
AtomicReference<String> subMchId = new AtomicReference<>("1618436087");
|
||||
if (StringUtils.isNotEmpty(storeId)){
|
||||
//先查校区
|
||||
Row store = Db.selectOneByQuery("cp_sys_store", QueryWrapper.create().where("id = ?", storeId));
|
||||
if (store != null && StringUtils.isNotBlank(store.getString("wxMchId"))){
|
||||
wxMchId = store.getString("wxMchId");
|
||||
} else {
|
||||
Row store = Db.selectOneByQuery("cp_j_store_extend", QueryWrapper.create().select("store_cloud_id as storeCloudId").where("store_id = ?", storeId));
|
||||
if (store != null && StringUtils.isNotBlank(store.getString("storeCloudId"))) {
|
||||
AtomicReference<Row> row = new AtomicReference<>();
|
||||
DataSourceKey.use("jambox", () -> {
|
||||
row.set(Db.selectOneByQuery("j_merchant_info", QueryWrapper.create()
|
||||
.select("j_merchant_info.wx_mch_id as wxMchId")
|
||||
.from("j_merchant_info")
|
||||
.leftJoin("t_mechanism_info").on("t_mechanism_info.mechanism_id = j_merchant_info.main_id")
|
||||
.where("t_mechanism_info.store_id = ?", store.getString("storeCloudId"))
|
||||
.and("j_merchant_info.main_type = 2")));
|
||||
});
|
||||
if (row.get() == null){
|
||||
//查询品牌
|
||||
Row brand = Db.selectOneByQuery("cp_sys_brand", QueryWrapper.create().where("id = ?", brandId));
|
||||
if (brand != null && StringUtils.isNotBlank(brand.getString("wxMchId"))){
|
||||
wxMchId = brand.getString("wxMchId");
|
||||
}else {
|
||||
wxMchId = null;
|
||||
Row brand = Db.selectOneByQuery("cp_j_brand_extend", QueryWrapper.create().select("brand_cloud_id as brandCloudId").where("brand_id = ?", brandId));
|
||||
if (brand != null && StringUtils.isNotBlank(brand.getString("brandCloudId"))){
|
||||
DataSourceKey.use("jambox", () -> {
|
||||
row.set(DbChain.table("j_merchant_info")
|
||||
.select("j_merchant_info.wx_mch_id as wxMchId")
|
||||
.leftJoin("t_brand_info").on("t_brand_info.id = j_merchant_info.main_id")
|
||||
.where("t_brand_info.brand_id = ?", brand.getString("brandCloudId"))
|
||||
.and("j_merchant_info.main_type = 1").one());
|
||||
if (row.get() != null){
|
||||
subMchId.set(row.get().getString("wxMchId"));
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
subMchId.set(row.get().getString("wxMchId"));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//查询品牌
|
||||
Row brand = Db.selectOneByQuery("cp_sys_brand", QueryWrapper.create().where("id = ?", brandId));
|
||||
if (brand != null && StringUtils.isNotBlank(brand.getString("wxMchId"))){
|
||||
wxMchId = brand.getString("wxMchId");
|
||||
}else {
|
||||
wxMchId = null;
|
||||
Row brand = Db.selectOneByQuery("cp_j_brand_extend", QueryWrapper.create().select("brand_cloud_id as brandCloudId").where("brand_id = ?", brandId));
|
||||
if (brand != null && StringUtils.isNotBlank(brand.getString("brandCloudId"))){
|
||||
DataSourceKey.use("jambox", () -> {
|
||||
Row row = DbChain.table("j_merchant_info")
|
||||
.select("j_merchant_info.wx_mch_id as wxMchId")
|
||||
.leftJoin("t_brand_info").on("t_brand_info.id = j_merchant_info.main_id")
|
||||
.where("t_brand_info.brand_id = ?", brand.getString("brandCloudId"))
|
||||
.and("j_merchant_info.main_type = 1").one();
|
||||
if (row != null){
|
||||
subMchId.set(row.getString("wxMchId"));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return wxMchId;
|
||||
return subMchId.get();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user