productIdList;
+ @ApiModelProperty(value = "支付方式", example = "WECHAT")
+ @JsonProperty("pay_type")
+ private String payType;
+ /**
+ * 端类型
+ */
+ @ApiModelProperty(value = "端类型", example = "APP")
+ @JsonProperty("client_type")
+ private String clientType;
+ /**
+ * 收货地址id
+ */
+ @ApiModelProperty(value = "收货地址id", example = "中国")
+ @JsonProperty("address_id")
+ private long addressId;
+ /**
+ * 总价格,前端传递,后端需要验价
+ */
+ @ApiModelProperty(value = "总价格", example = "40.00")
+ @JsonProperty("total_amount")
+ private BigDecimal totalAmount;
+ /**
+ * 实际支付的价格,
+ * 如果用了优惠劵,则是减去优惠券后端价格,如果没的话,则是totalAmount一样
+ */
+ @ApiModelProperty(value = "实际支付的价格", example = "20.00")
+ @JsonProperty("real_pay_amount")
+ private BigDecimal realPayAmount;
+ /**
+ * 防重令牌
+ */
+ @ApiModelProperty(value = "防重令牌", example = "sdvdgwerqwerwrwerqweq")
+ @JsonProperty("token")
+ private String token;
+}
diff --git a/nla-order-service/src/main/resources/application.yml b/nla-order-service/src/main/resources/application.yml
new file mode 100644
index 0000000..54ad622
--- /dev/null
+++ b/nla-order-service/src/main/resources/application.yml
@@ -0,0 +1,26 @@
+server:
+ port: 9004
+spring:
+ application:
+ name: nla-order-service
+ redis:
+ host: 127.0.0.1
+ port: 6379
+ database: 0
+ password: yuan123456
+ #数据库配置
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://117.72.43.105:3306/p_nla_order?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
+ username: root
+ password: Yuan625621105.
+#配置plus打印sql⽇志
+mybatis-plus:
+ configuration:
+ log-impl:
+ org.apache.ibatis.logging.stdout.StdOutImpl
+#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示
+#logging:
+# level:
+# root: INFO
+
diff --git a/nla-order-service/src/main/resources/logback.xml b/nla-order-service/src/main/resources/logback.xml
new file mode 100644
index 0000000..fb410d8
--- /dev/null
+++ b/nla-order-service/src/main/resources/logback.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+ ${log.pattern}
+
+
+
+
+ ${log.path}/info.log
+
+
+
+ ${log.path}/info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/nla-user-service/src/main/java/cn/nla/user/UserApplication.java b/nla-user-service/src/main/java/cn/nla/user/UserApplication.java
index 7357dea..c82b96d 100644
--- a/nla-user-service/src/main/java/cn/nla/user/UserApplication.java
+++ b/nla-user-service/src/main/java/cn/nla/user/UserApplication.java
@@ -3,11 +3,17 @@ package cn.nla.user;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication
+@EnableFeignClients
+@EnableDiscoveryClient
@MapperScan("cn.nla.*.mapper")
@ComponentScan(basePackages = {"cn.nla.*"})
+@EnableTransactionManagement
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
diff --git a/nla-user-service/src/main/java/cn/nla/user/controller/UserController.java b/nla-user-service/src/main/java/cn/nla/user/controller/UserController.java
index 7738191..376d834 100644
--- a/nla-user-service/src/main/java/cn/nla/user/controller/UserController.java
+++ b/nla-user-service/src/main/java/cn/nla/user/controller/UserController.java
@@ -1,6 +1,7 @@
package cn.nla.user.controller;
import cn.nla.common.util.JsonData;
+import cn.nla.user.feign.CouponFeignService;
import cn.nla.user.model.request.UserLoginRequest;
import cn.nla.user.model.request.UserRegisterRequest;
import cn.nla.user.service.UserService;
@@ -10,6 +11,7 @@ import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.util.Map;
/**
*
@@ -24,6 +26,9 @@ public class UserController {
@Resource
private UserService userService;
+ @Resource
+ private CouponFeignService couponFeignService;
+
@ApiOperation("用户注册")
@PostMapping("register")
public JsonData register(@ApiParam("用户注册对象") @RequestBody UserRegisterRequest registerRequest) {
@@ -32,7 +37,7 @@ public class UserController {
@ApiOperation("用户登录")
@PostMapping("login")
- public JsonData login(@ApiParam("用户登录对象") @RequestBody UserLoginRequest userLoginRequest){
+ public JsonData login(@ApiParam("用户登录对象") @RequestBody UserLoginRequest userLoginRequest) {
return userService.login(userLoginRequest);
}
@@ -41,8 +46,18 @@ public class UserController {
*/
@ApiOperation("个人信息查询")
@GetMapping("detail")
- public JsonData detail(){
+ public JsonData detail() {
return JsonData.buildSuccess(userService.findUserDetail());
}
+
+
+ @ApiOperation("Feign调用分页查询优惠券")
+ @GetMapping("page_coupon")
+ public JsonData pageCouponList(
+ @ApiParam(value = "当前页") @RequestParam(value = "page", defaultValue = "1") int page,
+ @ApiParam(value = "每页显示多少条") @RequestParam(value = "size", defaultValue = "10") int size,
+ @RequestHeader Map header) {
+ return JsonData.buildSuccess(couponFeignService.pageCouponList(header, page, size));
+ }
}
diff --git a/nla-user-service/src/main/java/cn/nla/user/feign/CouponFeignService.java b/nla-user-service/src/main/java/cn/nla/user/feign/CouponFeignService.java
new file mode 100644
index 0000000..09ad1f4
--- /dev/null
+++ b/nla-user-service/src/main/java/cn/nla/user/feign/CouponFeignService.java
@@ -0,0 +1,23 @@
+package cn.nla.user.feign;
+
+import cn.nla.common.util.JsonData;
+import cn.nla.user.model.request.NewUserCouponRequest;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * Feign调用优惠券服务接口
+ */
+@FeignClient(name = "nla-coupon-service")
+public interface CouponFeignService {
+ /**
+ * 分页查询优惠券
+ */
+ @GetMapping("/cop/coupon/v1/page_coupon")
+ JsonData pageCouponList(@RequestHeader Map header, @RequestParam("page") int page, @RequestParam("size") int size);
+
+ @PostMapping("/cop/coupon/v1/new_user_coupon")
+ JsonData addNewUserCoupon(@RequestBody NewUserCouponRequest newUserCouponRequest);
+}
diff --git a/nla-user-service/src/main/java/cn/nla/user/model/request/NewUserCouponRequest.java b/nla-user-service/src/main/java/cn/nla/user/model/request/NewUserCouponRequest.java
new file mode 100644
index 0000000..72bceba
--- /dev/null
+++ b/nla-user-service/src/main/java/cn/nla/user/model/request/NewUserCouponRequest.java
@@ -0,0 +1,20 @@
+package cn.nla.user.model.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 新用户注册发放优惠卷
+ */
+@ApiModel(value = "新用户注册发放优惠卷对象", description = "新用户注册发放优惠卷请求对象")
+@Data
+public class NewUserCouponRequest {
+ @ApiModelProperty(value = "用户Id", example = "19")
+ @JsonProperty("user_id")
+ private long userId;
+ @ApiModelProperty(value = "名称", example = "二当家")
+ @JsonProperty("name")
+ private String name;
+}
diff --git a/nla-user-service/src/main/java/cn/nla/user/service/impl/UserServiceImpl.java b/nla-user-service/src/main/java/cn/nla/user/service/impl/UserServiceImpl.java
index 58d0816..7fcfb49 100644
--- a/nla-user-service/src/main/java/cn/nla/user/service/impl/UserServiceImpl.java
+++ b/nla-user-service/src/main/java/cn/nla/user/service/impl/UserServiceImpl.java
@@ -7,20 +7,25 @@ import cn.nla.common.model.LoginUser;
import cn.nla.common.util.CommonUtil;
import cn.nla.common.util.JWTUtil;
import cn.nla.common.util.JsonData;
+import cn.nla.user.feign.CouponFeignService;
import cn.nla.user.model.VO.UserVO;
import cn.nla.user.model.entity.UserEntity;
import cn.nla.user.mapper.UserMapper;
+import cn.nla.user.model.request.NewUserCouponRequest;
import cn.nla.user.model.request.UserLoginRequest;
import cn.nla.user.service.NotifyService;
import cn.nla.user.service.UserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.Md5Crypt;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import cn.nla.user.model.request.UserRegisterRequest;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
@@ -41,6 +46,8 @@ public class UserServiceImpl extends ServiceImpl impleme
private NotifyService notifyService;
@Resource
private UserMapper userMapper;
+ @Resource
+ private CouponFeignService couponFeignService;
/**
* 用户注册
@@ -50,7 +57,9 @@ public class UserServiceImpl extends ServiceImpl impleme
* 插入数据库
* 新注册用户福利发放(TODO)
*/
+// @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
@Override
+ @GlobalTransactional
public JsonData register(UserRegisterRequest registerRequest) {
boolean checkCode = false;
//校验验证码
@@ -73,8 +82,10 @@ public class UserServiceImpl extends ServiceImpl impleme
if (checkUnique(userEntity.getMail())) {
int rows = userMapper.insert(userEntity);
log.info("rows:{},注册成功:{}", rows, userEntity);
- //新用户注册成功,初始化信息,发放福利等 TODO
+ //新用户注册成功,初始化信息,发放福利等
userRegisterInitTask(userEntity);
+// //模拟异常
+// int b = 1/0;
return JsonData.buildSuccess();
} else {
return JsonData.buildResult(BizCodeEnum.ACCOUNT_REPEAT);
@@ -123,12 +134,21 @@ public class UserServiceImpl extends ServiceImpl impleme
}
/**
- * 用户注册,初始化福利信息 TODO
+ * 用户注册,初始化福利信息
*
* @param userEntity 用户对象信息
*/
private void userRegisterInitTask(UserEntity userEntity) {
log.info("初始化福利信息 TODO... {}", userEntity);
+ NewUserCouponRequest request = new NewUserCouponRequest();
+ request.setName(userEntity.getName());
+ request.setUserId(userEntity.getId());
+ JsonData jsonData = couponFeignService.addNewUserCoupon(request);
+// if(jsonData.getCode()!=0){
+// throw new RuntimeException("发放优惠券异常");
+// }
+ log.info("发放新用户注册优惠券:{},结果:{}",request.toString(),jsonData.toString());
+
}
}
diff --git a/nla-user-service/src/main/resources/application.yml b/nla-user-service/src/main/resources/application.yml
index dcdc1bc..16e975c 100644
--- a/nla-user-service/src/main/resources/application.yml
+++ b/nla-user-service/src/main/resources/application.yml
@@ -7,6 +7,7 @@ spring:
host: 127.0.0.1
port: 6379
database: 0
+ password: yuan123456
#数据库配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
@@ -22,6 +23,15 @@ spring:
properties.mail.smtp.starttls.required: true
properties.mail.smtp.ssl.enable: true
default-encoding: utf-8
+ cloud:
+ #注册中心地址
+ nacos:
+ discovery:
+ server-addr: 117.72.43.105:8848
+# username: nacos
+# password: sW5U%pxecL#p
+# namespace: yjs
+
#配置plus打印sql⽇志
mybatis-plus:
configuration:
@@ -39,3 +49,12 @@ aliyun:
access-key-id: LTAI5tGbV7aVMVKSnoDwmFUY
access-key-secret: U4W5fsdxjAh5f3udizbYNFdUldD8pZ
bucketname: yzdan
+
+#seata配置
+seata:
+ tx-service-group: ${spring.application.name}-group
+ service:
+ grouplist:
+ nla: 127.0.0.1:8091
+ vgroup-mapping:
+ nla-user-service-group: nla
diff --git a/pom.xml b/pom.xml
index cfb0518..b0194db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,7 @@
nla-user-service
nla-coupon-service
nla-product-service
+ nla-order-service
pom
拉新营销平台