licailing 5 жил өмнө
parent
commit
027f90a7d7

+ 2 - 0
src/main/java/com/izouma/dingdong/domain/MoneyRecord.java

@@ -22,6 +22,8 @@ import java.time.LocalDateTime;
 @Builder
 @ApiModel(value = "余额记录", description = "余额记录")
 public class MoneyRecord extends BaseEntity {
+    @ApiModelProperty(value = "显示头像")
+    private String avatar;
 
     @ApiModelProperty(value = "用户ID", name = "userId")
     private Long userId;

+ 7 - 3
src/main/java/com/izouma/dingdong/domain/backstage/Email.java

@@ -1,7 +1,8 @@
 package com.izouma.dingdong.domain.backstage;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.izouma.dingdong.domain.BaseEntity;
-import com.izouma.dingdong.enums.EmailType;
+import com.izouma.dingdong.domain.User;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -10,8 +11,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
+import javax.persistence.Transient;
 import java.time.LocalDate;
 
 @Data
@@ -24,6 +24,10 @@ public class Email extends BaseEntity {
     @ApiModelProperty(value = "发件人", name = "sendUserId")
     private Long sendUserId;
 
+    private String avatar;
+
+    private String name;
+
     @ApiModelProperty(value = "收件人", name = "receiveUserId")
     private Long receiveUserId;
 

+ 5 - 0
src/main/java/com/izouma/dingdong/domain/merchant/Merchant.java

@@ -3,6 +3,7 @@ package com.izouma.dingdong.domain.merchant;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.izouma.dingdong.annotations.Searchable;
 import com.izouma.dingdong.domain.BaseEntity;
+import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.enums.ApplyStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -88,4 +89,8 @@ public class Merchant extends BaseEntity implements Serializable {
 
 //    @ApiModelProperty(value = "商家余额",name = "money")
 //    private BigDecimal money;
+
+    @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.DETACH)
+    @JoinColumn(name = "userId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    private User user;
 }

+ 4 - 1
src/main/java/com/izouma/dingdong/service/OrderInfoService.java

@@ -270,10 +270,13 @@ public class OrderInfoService {
                         userMer.setMoney(userMer.getMoney().add(orderInfo.getRealAmount().subtract(orderInfo.getDeliveryAmount())));
                         userRepo.save(userMer);
 
+                        //购买的user
+                        User user = userRepo.findById(orderInfo.getUserId()).orElseThrow(new BusinessException("无商户"));
                         //记录到对账单
                         moneyRecordRepo.save(
                                 MoneyRecord.builder()
-                                        .name(userRepo.findById(orderInfo.getUserId()).orElse(null).getNickname() + "购买")
+                                        .avatar(user.getAvatar())
+                                        .name(user.getNickname() + "购买")
                                         .type(FinancialType.INCOME)
                                         .time(LocalDateTime.now())
                                         .amount(orderInfo.getRealAmount())

+ 20 - 0
src/main/java/com/izouma/dingdong/service/UserService.java

@@ -6,6 +6,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
 import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.config.Constants;
 import com.izouma.dingdong.domain.User;
+import com.izouma.dingdong.dto.MerchantDTO;
 import com.izouma.dingdong.enums.Identity;
 import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.UserRepo;
@@ -63,6 +64,25 @@ public class UserService {
         return userRepo.save(user);
     }
 
+    public User merUser(MerchantDTO merchantDTO){
+        User user = userRepo.findByPhone(merchantDTO.getPhone());
+        if (ObjectUtil.isNull(user)) {
+            user = User.builder()
+                    .avatar(merchantDTO.getLogo())
+                    .username(merchantDTO.getPhone())
+                    .identity(Identity.MERCHANT)
+                    .phone(merchantDTO.getPhone())
+                    .nickname(merchantDTO.getShowName())
+                    .password(new BCryptPasswordEncoder().encode(merchantDTO.getPassword()))
+                    .authorities(Collections.singleton(Authority.getInstance(Authority.NAMES.ROLE_USER)))
+                    .blacklist(false)
+                    .enabled(true)
+                    .money(BigDecimal.ZERO)
+                    .build();
+        }
+        return userRepo.save(user);
+    }
+
     public User loginByPhone(String phone) {
         return userRepo.findByPhone(phone);
     }

+ 1 - 0
src/main/java/com/izouma/dingdong/service/WithdrawApplyService.java

@@ -99,6 +99,7 @@ public class WithdrawApplyService {
             BankCard bankCard = withdrawals.getBankCard();
             moneyRecordRepo.save(
                     MoneyRecord.builder()
+                            .avatar(user.getAvatar())
                             .name("提现")
                             .userId(withdrawals.getUserId())
                             .time(LocalDateTime.now())

+ 6 - 0
src/main/java/com/izouma/dingdong/service/merchant/MerchantService.java

@@ -153,6 +153,12 @@ public class MerchantService {
         MerchantDTO dto = new MerchantDTO(merchant, merchantSettings);
         ObjUtils.merge(dto, merchantDTO);
 
+        User user = merchant.getUser();
+        user.setAvatar(dto.getLogo());
+        user.setPhone(dto.getPhone());
+        user.setNickname(dto.getShowName());
+        userRepo.save(user);
+
         //dto转实体
         BeanUtil.copyProperties(dto, merchant);
         BeanUtil.copyProperties(dto, merchantSettings);

+ 7 - 1
src/main/java/com/izouma/dingdong/web/AuthenticationController.java

@@ -1,9 +1,11 @@
 package com.izouma.dingdong.web;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.dto.MerchantDTO;
 import com.izouma.dingdong.enums.Identity;
 import com.izouma.dingdong.exception.AuthenticationException;
+import com.izouma.dingdong.security.Authority;
 import com.izouma.dingdong.security.JwtTokenUtil;
 import com.izouma.dingdong.security.JwtUserDetailsService;
 import com.izouma.dingdong.security.JwtUserFactory;
@@ -17,11 +19,14 @@ import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.DisabledException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+import java.util.Collections;
 import java.util.Objects;
 
 @Slf4j
@@ -115,7 +120,8 @@ public class AuthenticationController {
     @ApiOperation("注册登录")
     public String registerMerchant(MerchantDTO merchantDTO) {
         try {
-            User user = userService.register(merchantDTO.getPhone(), merchantDTO.getPassword(), Identity.MERCHANT);
+            User user = userService.merUser(merchantDTO);
+            //User user = userService.register(merchantDTO.getPhone(), merchantDTO.getPassword(), Identity.MERCHANT);
             //商家信息
             merchantService.registerApply(merchantDTO);
             return jwtTokenUtil.generateToken(JwtUserFactory.create(user));

+ 3 - 3
src/test/java/com/izouma/dingdong/contorller/OrderInfoController.java

@@ -53,9 +53,9 @@ public class OrderInfoController {
                 .endTime(LocalTime.parse("16:00:00"))
                 .startTime(LocalTime.parse("14:00:00"))
                 .merchantNatureId(1L)
-                .phone("11111")
-                .password("11111")
-                .week("WED,THU")
+                .phone("22222222")
+                .password("22222222")
+                .week("MONDAY,TUESDAY,WEDNESDAY")
                 .build();
 
         System.out.println(auth.registerMerchant(merchantDTO));

+ 2 - 0
src/test/java/com/izouma/dingdong/service/EmailServiceTest.java

@@ -1,4 +1,6 @@
 package com.izouma.dingdong.service;
 
 public class EmailServiceTest {
+
+
 }

+ 34 - 0
src/test/java/com/izouma/dingdong/service/MerchantServiceTest.java

@@ -0,0 +1,34 @@
+package com.izouma.dingdong.service;
+
+import com.izouma.dingdong.dto.MerchantDTO;
+import com.izouma.dingdong.repo.merchant.MerchantRepo;
+import com.izouma.dingdong.service.merchant.MerchantService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.time.LocalTime;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class MerchantServiceTest {
+
+    @Autowired
+    private MerchantService merchantService;
+
+    @Test
+    public void testChange(){
+        MerchantDTO merchantDTO = MerchantDTO.builder()
+                .mid(421L)
+                .address("测试测试")
+                .aliAccount("11111")
+                .aliName("测试")
+                .logo("https://idingdong.oss-cn-hangzhou.aliyuncs.com/image/2020-05-14-10-01-57oAziBRXO.jpg")
+                .phone("222333")
+                .password("222333")
+                .build();
+        merchantService.change(merchantDTO);
+    }
+}