123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526 |
- package controller
- import (
- "gas-cylinder-api/app/admin/model"
- "gas-cylinder-api/app/admin/service"
- "gas-cylinder-api/app/admin/service/dto"
- "gas-cylinder-api/common/actions"
- "github.com/dgrijalva/jwt-go"
- "github.com/gin-gonic/gin"
- "github.com/gin-gonic/gin/binding"
- "gogs.baozhida.cn/zoie/OAuth-core/api"
- _ "gogs.baozhida.cn/zoie/OAuth-core/pkg/response"
- "golang.org/x/crypto/bcrypt"
- "net/http"
- "strings"
- "time"
- )
- type AppletCustomerController struct {
- api.Api
- }
- // Login 小程序登录
- // @Summary 小程序登录
- // @Description 小程序登录
- // @Tags 用户端
- // @Success 200 {object} response.Response{data=response.Page{list=[]model.Customer}} "{"code": 200, "data": [...]}"
- // @Router /api/applet/login [get]
- // @Security Bearer
- func (e AppletCustomerController) Login(c *gin.Context) {
- s := service.AppletCustomer{}
- req := dto.AppletCustomerLoginReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- token, expiresAt, err := s.Login(&req)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- data := map[string]string{
- "token": token,
- "expiresAt": expiresAt,
- }
- e.OK(data, "查询成功")
- }
- // Refresh 刷新token
- // @Summary 刷新token
- // @Description 刷新token
- // @Tags 用户端
- // @Success 200 {object} response.Response{data=response.Page{list=[]model.Customer}} "{"code": 200, "data": [...]}"
- // @Router /api/applet/refresh [get]
- // @Security Bearer
- func (e AppletCustomerController) Refresh(c *gin.Context) {
- s := service.AppletCustomer{}
- err := e.MakeContext(c).
- MakeOrm().
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- tokenString := c.GetHeader("Authorization")
- if tokenString == "" {
- c.JSON(http.StatusUnauthorized, gin.H{
- "code": 401,
- "msg": "Unauthorized",
- })
- return
- }
- parts := strings.SplitN(tokenString, " ", 2)
- if !(len(parts) == 2 && parts[0] == "Bearer") {
- c.JSON(http.StatusOK, gin.H{
- "code": 401,
- "msg": "请求头中auth格式有误",
- })
- return
- }
- // 解析token
- token, err := jwt.ParseWithClaims(parts[1], &model.CustomerClaims{}, func(token *jwt.Token) (i interface{}, err error) {
- return model.AppletCustomerSecret, nil
- })
- if err != nil || !token.Valid {
- if err.(*jwt.ValidationError).Errors != jwt.ValidationErrorExpired {
- c.JSON(http.StatusUnauthorized, gin.H{
- "code": 401,
- "msg": "Unauthorized",
- })
- return
- }
- }
- claims, ok := token.Claims.(*model.CustomerClaims)
- if !ok {
- c.JSON(http.StatusUnauthorized, gin.H{
- "code": 401,
- "msg": "Unauthorized",
- })
- return
- }
- if claims.ExpiresAt < time.Now().Unix() {
- if claims.ExpiresAt > time.Now().Add(-2*time.Hour).Unix() {
- newToken, expiresAt, _ := s.GeneratorToken(claims.CustomerId)
- c.Set("customer_id", claims.CustomerId)
- data := map[string]string{
- "token": newToken,
- "expiresAt": expiresAt,
- }
- e.OK(data, "查询成功")
- return
- }
- c.JSON(http.StatusUnauthorized, gin.H{
- "code": 401,
- "msg": "Token is expired",
- })
- return
- }
- newToken, expiresAt, _ := s.GeneratorToken(claims.CustomerId)
- c.Set("customer_id", claims.CustomerId)
- data := map[string]string{
- "token": newToken,
- "expiresAt": expiresAt,
- }
- e.OK(data, "查询成功")
- }
- // Register 注册
- // @Summary 小程序登录
- // @Description 小程序登录
- // @Tags 用户端
- // @Success 200 {object} response.Response{data=response.Page{list=[]model.Customer}} "{"code": 200, "data": [...]}"
- // @Router /api/applet/register [get]
- // @Security Bearer
- func (e AppletCustomerController) Register(c *gin.Context) {
- s := service.AppletCustomer{}
- req := dto.AppletCustomerRegisterReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- err = s.Register(&req)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(nil, "注册成功")
- }
- // GetProfile 获取个人中心用户
- // @Summary 获取个人中心用户
- // @Description 获取个人中心用户
- // @Tags 用户端
- // @Success 200 {object} response.Response{user=model.SysUser,role=model.SysRole} "{"code": 200, "data": {"user":[...],"role":[...]}}"
- // @Router /api/applet/profile [get]
- // @Security Bearer
- func (e AppletCustomerController) GetProfile(c *gin.Context) {
- s := service.Customer{}
- err := e.MakeContext(c).
- MakeOrm().
- //Bind(&req, nil).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- var object model.Customer
- //数据权限检查
- err = s.Get(&dto.CustomerGetReq{Id: service.GetAppletCustomerId(c)}, &object)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(object, "查询成功")
- }
- // GetOrderPage 获取订单列表
- // @Summary 获取订单列表
- // @Description 获取订单列表
- // @Tags 用户端
- // @Param state query int false "订单状态 1-已下单 2-已派送 3-已送达 4-已取消"
- // @Param source query int false "订单状态 1-坐席下单 2-小程序"
- // @Param orderStartTime query string false "下单开始时间"
- // @Param orderEndTime query string false "下单结束时间"
- // @Param phone query string false "客户电话"
- // @Param customerId query string false "客户id"
- // @Param pageSize query int false "页条数"
- // @Param page query int false "页码"
- // @Success 200 {object} response.Response{data=response.Page{list=[]model.Order}} "{"code": 200, "data": [...]}"
- // @Router /api/applet/order [get]
- // @Security Bearer
- func (e AppletCustomerController) GetOrderPage(c *gin.Context) {
- s := service.Order{}
- req := dto.AppletOrderGetPageReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Query).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- list := make([]model.Order, 0)
- var count int64
- req.CustomerId = service.GetAppletCustomerId(c) + "_"
- req.Source = 2
- err = s.AppletGetPage(&req, &list, &count)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
- }
- // OrderInsert 订气
- // @Summary 订气
- // @Description 订气
- // @Tags 用户端
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.OrderAppletInsertReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/applet/order [post]
- // @Security Bearer
- func (e AppletCustomerController) OrderInsert(c *gin.Context) {
- s := service.Order{}
- req := dto.OrderAppletInsertReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- req.CustomerId = service.GetAppletCustomerId(c)
- req.Source = 2
- req.SetDeptId(req.StoreId)
- err = s.AppletInsert(&req)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(req.GetId(), "创建成功")
- }
- // OrderUpdate 修改订单
- // @Summary 修改订单
- // @Description 修改订单
- // @Tags 用户端
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.OrderAppletUpdateReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/applet/order [put]
- // @Security Bearer
- func (e AppletCustomerController) OrderUpdate(c *gin.Context) {
- s := service.Order{}
- req := dto.OrderAppletUpdateReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- err = s.AppletUpdate(&req)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(req.GetId(), "修改成功")
- }
- // OrderCancel 取消订单
- // @Summary 取消订单
- // @Description 取消订单
- // @Tags 用户端
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.OrderCancelReq true "data"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/applet/order [put]
- // @Security Bearer
- func (e AppletCustomerController) OrderCancel(c *gin.Context) {
- s := service.Order{}
- req := dto.OrderCancelReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- err = s.Cancel(&req, nil)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(req.GetId(), "取消成功")
- }
- // StoreList 获取销售门店列表
- // @Summary 获取销售门店列表
- // @Description 获取销售门店列表
- // @Tags 用户端
- // @Param name query string false "销售门店名称"
- // @Param district query string false "所在地市"
- // @Param city query string false "所在区县"
- // @Success 200 {object} response.Response{data=response.Page{list=[]model.SysDept}} "{"code": 200, "data": [...]}"
- // @Router /api/applet/store [get]
- // @Security Bearer
- func (e AppletCustomerController) StoreList(c *gin.Context) {
- s := service.Store{}
- req := dto.AppletStoreGetPageReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Query).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- req.Type = model.TypeStore
- list := make([]model.SysDept, 0)
- list, err = s.SetAppletStorePage(&req)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(list, "查询成功")
- }
- // UpdatePwd 修改密码
- // @Summary 修改密码
- // @Description 修改密码
- // @Tags 用户端
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.PassWord true "body"
- // @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
- // @Router /api/user/pwd/set [put]
- // @Security Bearer
- func (e AppletCustomerController) UpdatePwd(c *gin.Context) {
- s := service.AppletCustomer{}
- req := dto.PassWord{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- var hash []byte
- if hash, err = bcrypt.GenerateFromPassword([]byte(req.NewPassword), bcrypt.DefaultCost); err != nil {
- req.NewPassword = string(hash)
- }
- err = s.UpdatePwd(service.GetAppletCustomerId(c), req.OldPassword, req.NewPassword)
- if err != nil {
- e.Error(http.StatusForbidden, err, err.Error())
- return
- }
- e.OK(nil, "密码修改成功")
- }
- // GetGoodsPage 获取商品列表
- // @Summary 获取商品列表
- // @Description 获取商品列表
- // @Tags 用户端
- // @Param storeId query int true "销售门店id"
- // @Param name query string false "商品名称"
- // @Param mediaType query string false "介质类型"
- // @Param isShow query int false "是否展示 1-展示 2-不展示"
- // @Success 200 {object} response.Response{data=response.Page{list=[]model.Goods}} "{"code": 200, "data": [...]}"
- // @Router /api/goods [get]
- // @Security Bearer
- func (e AppletCustomerController) GetGoodsPage(c *gin.Context) {
- s := service.Goods{}
- req := dto.AppletGoodsGetPageReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Query).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- //数据权限检查
- p := actions.GetPermissionFromContext(c)
- p.DeptId = req.StoreId
- list := make([]model.Goods, 0)
- var count int64
- err = s.GetAppletPage(&req, &list, &count)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
- }
- // GetGasCylinderSpecPage 获取钢瓶规格列表
- // @Summary 获取钢瓶规格列表
- // @Description 获取钢瓶规格列表
- // @Tags 钢瓶规格
- // @Param name query string false "钢瓶规格名称"
- // @Success 200 {object} response.Response{data=response.Page{list=[]model.GasCylinderSpec}} "{"code": 200, "data": [...]}"
- // @Router /api/dispatch-cost [get]
- // @Security Bearer
- func (e AppletCustomerController) GetGasCylinderSpecPage(c *gin.Context) {
- s := service.GasCylinderSpec{}
- req := dto.AppletGasCylinderSpecGetPageReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Query).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- //数据权限检查
- list := make([]model.GasCylinderSpec, 0)
- var count int64
- err = s.GetAppletPage(&req, &list, &count)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
- }
- // UpdateCustomerInfo 修改个人信息
- // @Summary 修改客户信息
- // @Description 修改客户信息
- // @Tags 客户信息
- // @Accept application/json
- // @Product application/json
- // @Param id path string true "客户信息id"
- // @Param data body dto.CustomerUpdateReq true "body"
- // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
- // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
- // @Router /api/customer [put]
- // @Security Bearer
- func (e AppletCustomerController) UpdateCustomerInfo(c *gin.Context) {
- s := service.Customer{}
- req := dto.AppletCustomerUpdateReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- req.Id = service.GetAppletCustomerId(c)
- err = s.AppletUpdate(&req)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(req.GetId(), "更新成功")
- }
|