From d462431edd690b074edf99915871e1686312f92a Mon Sep 17 00:00:00 2001 From: wangtianba <111@qq.com> Date: Sun, 18 Sep 2022 11:40:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=97=E9=93=BA=E5=85=A5=E9=A9=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/itsource/basic/domain/BaseDomain.java | 2 +- .../itsource/basic/domain/CreatePassword.java | 27 ++++++ .../cn/itsource/basic/util/PetConstant.java | 9 ++ .../org/controller/ShopController.java | 88 +++++++++++++++++++ .../java/cn/itsource/org/domain/Employee.java | 15 +++- .../java/cn/itsource/org/domain/Shop.java | 27 ++++++ .../cn/itsource/org/mapper/ShopMapper.java | 10 +++ .../java/cn/itsource/org/query/ShopQuery.java | 13 +++ .../cn/itsource/org/service/IShopService.java | 12 +++ .../org/service/impl/ShopServiceImpl.java | 83 +++++++++++++++++ .../cn/itsource/org/mapper/ShopMapper.xml | 13 +++ src/test/java/gouzi/Fu.java | 13 +++ src/test/java/gouzi/Zi.java | 13 +++ 13 files changed, 323 insertions(+), 2 deletions(-) create mode 100644 src/main/java/cn/itsource/basic/domain/CreatePassword.java create mode 100644 src/main/java/cn/itsource/org/controller/ShopController.java create mode 100644 src/main/java/cn/itsource/org/domain/Shop.java create mode 100644 src/main/java/cn/itsource/org/mapper/ShopMapper.java create mode 100644 src/main/java/cn/itsource/org/query/ShopQuery.java create mode 100644 src/main/java/cn/itsource/org/service/IShopService.java create mode 100644 src/main/java/cn/itsource/org/service/impl/ShopServiceImpl.java create mode 100644 src/main/resources/cn/itsource/org/mapper/ShopMapper.xml create mode 100644 src/test/java/gouzi/Fu.java create mode 100644 src/test/java/gouzi/Zi.java diff --git a/src/main/java/cn/itsource/basic/domain/BaseDomain.java b/src/main/java/cn/itsource/basic/domain/BaseDomain.java index 81f9c4a..35fd2db 100644 --- a/src/main/java/cn/itsource/basic/domain/BaseDomain.java +++ b/src/main/java/cn/itsource/basic/domain/BaseDomain.java @@ -18,7 +18,7 @@ public class BaseDomain { */ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) + @GeneratedValue(strategy = GenerationType.IDENTITY) //拿到自增长主键id @ApiModelProperty(value = "主键id") private Long id; diff --git a/src/main/java/cn/itsource/basic/domain/CreatePassword.java b/src/main/java/cn/itsource/basic/domain/CreatePassword.java new file mode 100644 index 0000000..db12faa --- /dev/null +++ b/src/main/java/cn/itsource/basic/domain/CreatePassword.java @@ -0,0 +1,27 @@ +package cn.itsource.basic.domain; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.crypto.digest.MD5; + +public interface CreatePassword { + + String getPassword(); + + void setPassword(String password); + + String getSalt(); + + void setSalt(String salt); + + default void md5Pwd(){ + //盐值 + String salt = IdUtil.fastSimpleUUID(); + //给调用对象设置盐值 (谁调用我谁就是this) + this.setSalt(salt); + //生成加盐值md5密码 + String pwd = MD5.create().setSalt(salt.getBytes()).digestHex(this.getPassword()); + //给调用对象设置盐值 + this.setPassword(pwd); + } + +} diff --git a/src/main/java/cn/itsource/basic/util/PetConstant.java b/src/main/java/cn/itsource/basic/util/PetConstant.java index 35cc6ea..5a36497 100644 --- a/src/main/java/cn/itsource/basic/util/PetConstant.java +++ b/src/main/java/cn/itsource/basic/util/PetConstant.java @@ -10,4 +10,13 @@ public class PetConstant { public static final String SYSTEM_ERROR = "1000"; //登录超时 public static final String SYSTEM_LOGIN_TIMOUT = "1001"; + + public class Shop{ + public static final int STATE_WAIT_AUTID = 1 ; //"待审核"; + public static final int STATE_WAIT_ACTIVE = 2 ; //"审核通过,待激活"; + public static final int STATE_ACTIVE_SUCCESS = 3 ; //"激活成功"; + public static final int STATE_REJECT_AUDIT = 4 ; //"驳回"; + } + + } diff --git a/src/main/java/cn/itsource/org/controller/ShopController.java b/src/main/java/cn/itsource/org/controller/ShopController.java new file mode 100644 index 0000000..65f5ef9 --- /dev/null +++ b/src/main/java/cn/itsource/org/controller/ShopController.java @@ -0,0 +1,88 @@ +package cn.itsource.org.controller; + +import cn.itsource.basic.util.AjaxResult; +import cn.itsource.basic.util.PageList; +import cn.itsource.org.domain.Shop; +import cn.itsource.org.query.ShopQuery; +import cn.itsource.org.service.IShopService; +import cn.itsource.org.service.IShopService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +@RestController //@Controller + @ResponseBody的结合体 +@RequestMapping("/shop") //暴露公共路径 +@Api(tags = "店铺管理接口") //swagger API +public class ShopController { + + @Autowired + private IShopService shopService; + + + @PostMapping("/settlement") + @ApiOperation(value = "店铺入驻") //swagger API + public AjaxResult settlement(@Valid @RequestBody Shop shop){ + return shopService.settlement(shop); + } + + + + /** + * 查询店铺分页 + * @return + */ + @PostMapping("/findPage") + @ApiOperation(value = "查询店铺分页") //swagger API + public PageList findPage(@RequestBody ShopQuery query){ + //查询 + return shopService.findPage(query); + } + + + /** + * 新增/修改 ,根据id区分 + * @return + */ + @PostMapping + @ApiOperation(value = "新增修改店铺,新增没有id,修改有id") //swagger API + public AjaxResult saveOrUpdate(@RequestBody Shop shop){ + + try { + if (shop.getId() == null){ + shopService.save(shop); + }else { + shopService.update(shop); + } + return AjaxResult.createSuccess(); + } catch (Exception e) { + //打印错误的堆栈信息 + e.printStackTrace(); + return AjaxResult.createError(); + } + + } + /** + * 新增/修改 ,根据id区分 + * @return + */ + @ApiOperation(value = "根据id删除店铺对象") //swagger API + @DeleteMapping("/{id}") + public AjaxResult delete(@PathVariable("id") Long id){ + + try { + shopService.delete(id); + + return AjaxResult.createSuccess(); + } catch (Exception e) { + //打印错误的堆栈信息 + e.printStackTrace(); + return AjaxResult.createError(); + } + + } + +} diff --git a/src/main/java/cn/itsource/org/domain/Employee.java b/src/main/java/cn/itsource/org/domain/Employee.java index 543c0bf..eec63c8 100644 --- a/src/main/java/cn/itsource/org/domain/Employee.java +++ b/src/main/java/cn/itsource/org/domain/Employee.java @@ -2,19 +2,23 @@ package cn.itsource.org.domain; import cn.itsource.basic.domain.BaseDomain; +import cn.itsource.basic.domain.CreatePassword; import io.swagger.annotations.ApiModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.Table; +import javax.persistence.Transient; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; @Data @AllArgsConstructor @NoArgsConstructor @Table(name = "t_employee") @ApiModel(value = "员工实体类") -public class Employee extends BaseDomain { +public class Employee extends BaseDomain implements CreatePassword { //用户名 private String username; @@ -22,8 +26,17 @@ public class Employee extends BaseDomain { private String email; //手机号 private String phone; + //手机号 + private String salt; //密码 + @NotBlank(message = "密码不能为空") + @Size(min=3,max = 16,message = "密码控制在3-16位") private String password; + //确认密码 + @Transient + @NotBlank(message = "密码不能为空") + @Size(min=3,max = 16,message = "密码控制在3-16位") + private String comfirmPassword; //年龄 private Integer age; //状态 diff --git a/src/main/java/cn/itsource/org/domain/Shop.java b/src/main/java/cn/itsource/org/domain/Shop.java new file mode 100644 index 0000000..1c7d372 --- /dev/null +++ b/src/main/java/cn/itsource/org/domain/Shop.java @@ -0,0 +1,27 @@ +package cn.itsource.org.domain; + +import cn.itsource.basic.domain.BaseDomain; +import cn.itsource.basic.util.PetConstant; +import lombok.Data; + +import java.util.Date; + +//店铺 +@Data +public class Shop extends BaseDomain { + //点名 + private String name; + //电话 + private String tel; + //注册时间 + private Date registerTime = new Date(); + //状态 + private int state = PetConstant.Shop.STATE_WAIT_AUTID; + //地址 + private String address; + //店招 + private String logo; + /** 店铺管理 **/ + private Employee admin; + +} \ No newline at end of file diff --git a/src/main/java/cn/itsource/org/mapper/ShopMapper.java b/src/main/java/cn/itsource/org/mapper/ShopMapper.java new file mode 100644 index 0000000..8f375ac --- /dev/null +++ b/src/main/java/cn/itsource/org/mapper/ShopMapper.java @@ -0,0 +1,10 @@ +package cn.itsource.org.mapper; + +import cn.itsource.basic.basicmapper.BasicMapper; +import cn.itsource.org.domain.Shop; + +public interface ShopMapper extends BasicMapper { + + //基础的crud全部由继承得到 + void insertShop(Shop shop); +} diff --git a/src/main/java/cn/itsource/org/query/ShopQuery.java b/src/main/java/cn/itsource/org/query/ShopQuery.java new file mode 100644 index 0000000..06c4518 --- /dev/null +++ b/src/main/java/cn/itsource/org/query/ShopQuery.java @@ -0,0 +1,13 @@ +package cn.itsource.org.query; + +import cn.itsource.basic.query.BaseQuery; +import lombok.Data; + +/** + * 部门的高级查询对象 + */ +@Data +public class ShopQuery extends BaseQuery { + + +} diff --git a/src/main/java/cn/itsource/org/service/IShopService.java b/src/main/java/cn/itsource/org/service/IShopService.java new file mode 100644 index 0000000..488d8d9 --- /dev/null +++ b/src/main/java/cn/itsource/org/service/IShopService.java @@ -0,0 +1,12 @@ +package cn.itsource.org.service; + +import cn.itsource.basic.service.IBaseService; +import cn.itsource.basic.util.AjaxResult; +import cn.itsource.org.domain.Shop; +import cn.itsource.org.query.ShopQuery; + +public interface IShopService extends IBaseService { + + + AjaxResult settlement(Shop shop); +} diff --git a/src/main/java/cn/itsource/org/service/impl/ShopServiceImpl.java b/src/main/java/cn/itsource/org/service/impl/ShopServiceImpl.java new file mode 100644 index 0000000..37b5d1a --- /dev/null +++ b/src/main/java/cn/itsource/org/service/impl/ShopServiceImpl.java @@ -0,0 +1,83 @@ +package cn.itsource.org.service.impl; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.digest.MD5; +import cn.itsource.basic.service.impl.BaseServiceImpl; +import cn.itsource.basic.util.AjaxResult; +import cn.itsource.org.domain.Employee; +import cn.itsource.org.domain.Shop; +import cn.itsource.org.mapper.EmployeeMapper; +import cn.itsource.org.mapper.ShopMapper; +import cn.itsource.org.query.EmployeeQuery; +import cn.itsource.org.query.ShopQuery; +import cn.itsource.org.service.IEmployeeService; +import cn.itsource.org.service.IShopService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service //spring管理 +public class ShopServiceImpl extends BaseServiceImpl implements IShopService { + //基础的curd全部通过继承得到 + + //因为事务都是在service层操作的 + @Autowired + private IEmployeeService employeeService; + @Autowired + private ShopMapper shopMapper; + + /** + * 店铺入驻 + * @param shop + * @return + */ + @Override + @Transactional //事务管理 + public AjaxResult settlement(Shop shop) { + //先写主体,再写细节 + //验证规则自己去加 验证密码 + //1.新增员工到数据库 + Employee admin = shop.getAdmin();//没有id + if (!StrUtil.equals(admin.getPassword(),admin.getComfirmPassword())){ + throw new RuntimeException("两次密码不一致"); + } + //uuid生成盐值 + /*String salt = IdUtil.fastSimpleUUID(); + String pwd = MD5.create().setSalt(salt.getBytes()).digestHex(admin.getPassword()); + //盐值和加密之后的密码入库 + admin.setSalt(salt); + admin.setPassword(pwd);*/ + + //调用钩子函数 + admin.md5Pwd(); + + employeeService.save(admin); + + //2.拿到员工的自增长id,设置到店铺对象中 + shop.setAdmin(admin);//这个admin有自增id了 + //3.新增店铺信息 + shopMapper.insertShop(shop); + + //4.拿到店铺的id,设置员工,修改员工 + admin.setShopId(shop.getId()); + employeeService.update(admin); + + //直接返回成功,如果异常会走全局异常 + return AjaxResult.createSuccess(); + } + + public static void main(String[] args) { + String s = MD5.create().setSalt("sdlkfjsdilkjfsdlk".getBytes()).digestHex("123456"); + String s1 = MD5.create().setSalt("35e5490d775848ce9487d97a6e7af1da".getBytes()).digestHex("123"); + System.out.println(s); + System.out.println(s1); + + String aaa = IdUtil.fastSimpleUUID(); + System.out.println(aaa); + + } + +} diff --git a/src/main/resources/cn/itsource/org/mapper/ShopMapper.xml b/src/main/resources/cn/itsource/org/mapper/ShopMapper.xml new file mode 100644 index 0000000..014e33a --- /dev/null +++ b/src/main/resources/cn/itsource/org/mapper/ShopMapper.xml @@ -0,0 +1,13 @@ + + + + + + insert into t_shop (name, tel, register_time, address, logo, admin_id) + values (#{name}, #{tel}, #{registerTime}, #{address}, #{logo}, #{admin.id}) + + + + \ No newline at end of file diff --git a/src/test/java/gouzi/Fu.java b/src/test/java/gouzi/Fu.java new file mode 100644 index 0000000..2a2ee3f --- /dev/null +++ b/src/test/java/gouzi/Fu.java @@ -0,0 +1,13 @@ +package gouzi; + +public class Fu { + + void init(){ + this.show(); + } + + void show(){ + System.out.println("这是父类的show show show show"); + } + +} diff --git a/src/test/java/gouzi/Zi.java b/src/test/java/gouzi/Zi.java new file mode 100644 index 0000000..d2a6853 --- /dev/null +++ b/src/test/java/gouzi/Zi.java @@ -0,0 +1,13 @@ +package gouzi; + +public class Zi extends Fu{ + + void show(){ + System.out.println("这是子类的show show show show"); + } + + public static void main(String[] args) { + new Zi().init(); + } + +} -- Gitee